为什么cpu使用率比内存使用率要高(通俗讲解CPULoad)
为什么服务器的CPU load值很⾼,但是CPU使用率却很低?
CPU使⽤率和CPU load值都很高,怎么办?
作为Linux运维工程师应该怎么设置报警规则,既能较快反映CPU的故障⼜能保障零误报率?
CPU作为最重要的系统指标之一,对Linux运维⼯程师来讲,并不陌生。但是小编在工作中却常常发现,有的Linux运维⼯程师会将CPU使用率和CPU平均负载两个概念混淆,难以准确的解释CPU平均负载到底是什么。
今天小编来和⼤家交流下“CPU平均负载”这一概念。
一、查看CPU平均负载执行top或uptime命令查看,如图:
load average显示的3个值,即为CPU在1分钟、5分钟、15分钟内的平均负载。
三个不同时间段内的平均值,让我们更全面、更立体的了解了目前的CPU负载状态。就像我们通常要结合早上、中午、晚上三个时间点的温度才能了解一天的天气情况。
二、CPU平均负载和CPU使用率不是一码事!最常见的一个错误理解:”平均负载是单位时间内的CPU使用率“。即CPU平均负载值为2,就代表CPU使用率是200%。
让我们来通过uptime命令的man帮助来了解一下CPU平均负载的概念。
红框部分的第一句话是:
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数。即CPU平均负载值为2时, 是代表CPU上处于可运行状态和不可中断状态的进程是2个。
还需要注意的一点,平均负载的概念中所涉及的进程中有2种状态,“可运行状态”和”不可中断状态“。也就是说,它不仅包含了正在使用CPU的进程,还包含等待CPU和等待I/O的进程,即:
- CPU密集型进程,使用大量CPU会导致平均负载升高,此时两者是一致的。
- I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使⽤率不一定很高。
第一问:应该关注3个平均负载值中的哪⼀个?
答:都要看。
如前⽂所述,我们通过查看CPU在1分钟、5分钟、15分钟内平均负载来了解系统负载的趋势,从而对系统的负载情况做出判断。
- 如果1分钟、5分钟、15分钟的三个值基本相同或相差不大,意味着系统负载很平稳。
- 如果1分钟的值远小于15分钟的值,意味着系统最近1分钟的负载在减少,而过去15分钟内有较高的负载。
- 如果1分钟的值远大于15分钟的值,意味着最近1跟中的负载在增加。这种增加有可能只是临时性的,也有可能还会持续增加,所以要持续观察。
第二问:平均负载数值为多少时是正常的?
答:取决于CPU核数。 假设CPU平均负载的值为2,则:
- 如果是单核CPU,意味着有一半的进程竞争不到CPU,资源很紧俏,供不应求。
- 如果是2核CPU,意味着CPU刚好被完全占用,供需平衡。
- 如果是4核CPU,意味着CPU有50%的空闲。
小编建议,当平均负载的值为CPU核数的70%(即如果是2核CPU,那么平均负载值持续在1.4时)时,就需要分析排查负载高的问题了。
一旦负载过高,就可能导致进程响应变慢,进而影响服务的正常功能。
第三问:如何找出平均负载升高的根源?
答:使用mpstat查看所有CPU的平均指标和每个CPU的性能指标,使用pidstat实时查看进程的CPU、内 存、I/O以及上下文切换等性能指标。
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com