为什么服务器的CPU load值很⾼,但是CPU使用率却很低?

CPU使⽤率和CPU load值都很高,怎么办?

作为Linux运维工程师应该怎么设置报警规则,既能较快反映CPU的故障⼜能保障零误报率?

为什么cpu使用率比内存使用率要高(通俗讲解CPULoad)(1)

CPU作为最重要的系统指标之一,对Linux运维⼯程师来讲,并不陌生。但是小编在工作中却常常发现,有的Linux运维⼯程师会将CPU使用率和CPU平均负载两个概念混淆,难以准确的解释CPU平均负载到底是什么。

今天小编来和⼤家交流下“CPU平均负载”这一概念。

一、查看CPU平均负载

执行top或uptime命令查看,如图:

为什么cpu使用率比内存使用率要高(通俗讲解CPULoad)(2)

load average显示的3个值,即为CPU在1分钟、5分钟、15分钟内的平均负载。

三个不同时间段内的平均值,让我们更全面、更立体的了解了目前的CPU负载状态。就像我们通常要结合早上、中午、晚上三个时间点的温度才能了解一天的天气情况。

二、CPU平均负载和CPU使用率不是一码事!

最常见的一个错误理解:”平均负载是单位时间内的CPU使用率“。即CPU平均负载值为2,就代表CPU使用率是200%。

让我们来通过uptime命令的man帮助来了解一下CPU平均负载的概念。

为什么cpu使用率比内存使用率要高(通俗讲解CPULoad)(3)

红框部分的第一句话是:

平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数。即CPU平均负载值为2时, 是代表CPU上处于可运行状态和不可中断状态的进程是2个。

还需要注意的一点,平均负载的概念中所涉及的进程中有2种状态,“可运行状态”和”不可中断状态“。也就是说,它不仅包含了正在使用CPU的进程,还包含等待CPU和等待I/O的进程,即:

三、何为CPU平均负载正常

第一问:应该关注3个平均负载值中的哪⼀个?

答:都要看。

如前⽂所述,我们通过查看CPU在1分钟、5分钟、15分钟内平均负载来了解系统负载的趋势,从而对系统的负载情况做出判断。

第二问:平均负载数值为多少时是正常的?

答:取决于CPU核数。 假设CPU平均负载的值为2,则:

小编建议,当平均负载的值为CPU核数的70%(即如果是2核CPU,那么平均负载值持续在1.4时)时,就需要分析排查负载高的问题了。

一旦负载过高,就可能导致进程响应变慢,进而影响服务的正常功能。

第三问:如何找出平均负载升高的根源?

答:使用mpstat查看所有CPU的平均指标和每个CPU的性能指标,使用pidstat实时查看进程的CPU、内 存、I/O以及上下文切换等性能指标。

为什么cpu使用率比内存使用率要高(通俗讲解CPULoad)(4)

,