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

为什么服务器的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密集型进程,使用大量CPU会导致平均负载升高,此时两者是一致的。
  • I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使⽤率不一定很高。
三、何为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以及上下文切换等性能指标。

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

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页