性能指标理解-CPU load average

一般说到CPU使用率,大家都不陌生,就是程序对CPU时间片的占用情况,但我们大多情况下,还需要看另外一个指标,CPU load average.
先来看着图:
下面top命令,可以看到load average,3个值,分别记录了1min,5min,15min的系统平均负载。(用uptime命令也可以查看到这三个值)

CPU load

这几个值是linux的负载均值,对性能有重要的意义。但这个值设置多少是合理的呢?

放出定义:load average 表示的是CPU的负载,包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。

我们举个例子:高速公路收费站10个车道,那当有1-9辆车在不同的通道通过时,认为收费站的load<1;当正好10辆车在不同的通道时,load=1;当超过10辆车(假设每个通道是均匀有车)时,load>1.假设有100辆车,每个通道10辆,那就说明能有10辆车能过去,另外90辆车则需要等待。此时收费站的load为100/10=10. 这个10的负载表示系统当前满负荷运转,且还有相当于90%的满负载的请求在等待。

但是经常我们也看到load average 有高达6,那真的是有问题嘛?不一定,因为它是基于操作系统的内核的数量决定的,一般可以简单粗暴的理解为内核load之和。 比如现在一般都是8个内核,那么load average的值就是8、
一般业界能够被接受的值是, load average <= CPU核数 *0.7。 但现在硬件越来越便宜,核数庞大的机器也越来越大,如遇到机器的CPU核数很大,那么剩余的30%部分也越大,这个时候可以适当的调整下,只要不要到整个核数都用满。

综合,理想的系统load是既没有进程(线程)等待也没有CPU空闲,可最大限度的利用CPU资源。

回到上面的图,我们可以看到1min,5min,15min 的平均load值。这三个字是要结合起来看的,如果机器持续在一段时间内都是load很高的,那么也许机器性能下降了,可能需要进一步排查问题,也许是要增加机器了。
有时候也会遇到一种情况,Load很高,但系统的CPU使用率却比较低。可能的原因是频繁的上下文切换导致耗费了大量的CPU时间,以至于用在运算的CPU时间片比较少,却有很多进程在等待运行。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 87,704评论 13 122
  • 这篇文章主要介绍一些常用的linux服务器性能监控命令,包括命令的常用参数、指标的含义以及一些交互操作。 几个问题...
    dancingking阅读 5,698评论 5 20
  • Linux 内核SMP负载均衡浅析 需求在《linux进程调度浅析》一文中提到,在SMP(对称多处理器)环境下,每...
    meng_philip123阅读 524评论 0 2
  • 当我们使用top命令查看系统的资源使用情况时会看到load average,如下图所示,它表示系统在1,5,15分...
    古佛青灯度流年阅读 5,123评论 5 12
  • 这个夏季实在是闷热的厉害,我几乎是在空调房间中度过,久了,人总感觉很是疲惫。透过玻璃窗,明月高挂,想起了童年时...
    沛汐阅读 36评论 1 1