linux平均负载与CPU使用率关系

想要知道怎么排查,先看哪些因素会影响到平均负载,然后逐一排查。

平均负载的定义:处于运行状态不可中断状态的平均进程数,也就是平均活跃进程数。

1、判断平均负载合理性

(1)系统负载和CPU总数(逻辑总数)的关系,过载情况:load average  > CPU 总数

(2)查看系统平均负载

$ top
top - 21:52:21 up 386 days,  4:10,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 164 total,   1 running, 163 sleeping,   0 stopped,   0 zombie


$ uptime
 21:53:01 up 386 days,  4:11,  1 user,  load average: 0.00, 0.00, 0.00 # 依次表示1min, 5min,15min平均负载

(3)查看系统的CPU总数

$ grep 'model name' /proc/cpuinfo
model name    : QEMU Virtual CPU version (cpu64-rhel6)
model name    : QEMU Virtual CPU version (cpu64-rhel6)
model name    : QEMU Virtual CPU version (cpu64-rhel6)
model name    : QEMU Virtual CPU version (cpu64-rhel6)

$ grep 'model name' /proc/cpuinfo|wc -l
4

(4) 结合(2)中1min, 5min, 15min负载情况判断负载是在增加还是减少

1min负载>5min负载>15min负载 负载在增加

1min负载<5min负载<15min负载 负载在减少

(5) 当负载高于CPU总数80%时就要排查原因了

 

2、通过步骤1如果已经确定了负载很高,如何排查?

负载增加或者很大时,CPU使用率可能在相同区间内增加,但有时未必,为什么呢?

还是回归到定义,平均负载:单位时间内处于运行状态和不可中断状态的进程数(中断有CPU中断和IO中断);CPU使用率:单位时间内CPU处理进程情况统计。所以,平均负载还包括了正在运行使用的CPU进程,等待CPU和等待I/O的进程。

用到的命令:mpstat pidstat(sudo yum install sysstat或sudo apt-get install sysstat安装命令)

(1)$ watch -d uptime  #查看负载变化

Every 2.0s: uptime                                                                          Sun Jan  6 23:54:40 2019

 23:54:40 up 387 days,  6:13,  1 user,  load average: 0.01, 0.01, 0.00

(2)$ mpstat -P ALL 5  1 #查看CPU性能指标,并每隔5s输出1组数据
Linux 2.6.32-696.16.1.el6.x86_64 (XXX-hostname-000)     01/06/2019     _x86_64_    (4 CPU)

11:55:25 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
11:55:30 PM  all    2.20    0.00    1.25    0.00    0.00    0.30    0.10    0.00   96.15 #总的cpu情况
11:55:30 PM    0    2.79    0.00    2.00    0.00    0.00    0.60    0.20    0.00   94.41 #逻辑cpu0的情况
11:55:30 PM    1    2.40    0.00    1.20    0.00    0.00    0.20    0.00    0.00   96.20
11:55:30 PM    2    2.00    0.00    1.00    0.00    0.00    0.20    0.00    0.00   96.81
11:55:30 PM    3    1.80    0.00    1.00    0.00    0.00    0.40    0.00    0.00   96.79

通过上面两步,判断负载升高时,%usr%iowait 是否升高。

场景a) %usr高 CPU使用率超过80%,考虑扩容

场景b)  %iowait 高,CPU不高 判断是否存在大量的磁盘IO操作,批量查询或者写入,大的json。

针对上面2种情况,使用pidstat找出对应的进程:

$ pidstat -u 5 1 #5s输出1组进程数据
Linux 2.6.32-696.16.1.el6.x86_64 (XXX-hostname-000)     01/06/2019     _x86_64_    (4 CPU)

11:57:57 PM       PID    %usr %system  %guest    %CPU   CPU  Command
11:58:02 PM      1383    0.00    0.20    0.00    0.20     3  xxx
11:58:02 PM      3961    1.00    1.40    0.00    2.40     0  xxx
11:58:02 PM      4048    0.20    0.00    0.00    0.20     2 xxx
11:58:02 PM      8473    0.00    0.20    0.00    0.20     1  java
11:58:02 PM     20394    1.60    0.00    0.00    1.60     2  php

场景c) 大量进程情况
$ pidstat -u 5 1
14:23:25      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
14:23:30        0      3190   25.00    0.00    0.00   74.80   25.00     0  stress
14:23:30        0      3191   25.00    0.00    0.00   75.20   25.00     0  stress
14:23:30        0      3192   25.00    0.00    0.00   74.80   25.00     1  stress
14:23:30        0      3193   25.00    0.00    0.00   75.00   25.00     1  stress
14:23:30        0      3194   24.80    0.00    0.00   74.60   24.80     0  stress
14:23:30        0      3195   24.80    0.00    0.00   75.00   24.80     0  stress
14:23:30        0      3196   24.80    0.00    0.00   74.60   24.80     1  stress
14:23:30        0      3197   24.80    0.00    0.00   74.80   24.80     1  stress
14:23:30        0      3200    0.00    0.20    0.00    0.20    0.20     0  pidstat

可以看出,8 个进程在争抢 2 个 CPU,每个进程等待 CPU时间高达25%,超出了CPU计算能力的进程最终导致CPU过载。

当然,还有一种情况CPU使用高了,负载并不高,考虑是单个进程引起,定位问题进程,请参考:https://blog.csdn.net/wangtingting_100/article/details/80666709

总结下,负载升高可能是CPU升高引起的,也可能是IO等待引起的。CPU升高可能是大流量引起的,也可能某个进程导致的。

注:学习倪朋飞老师性能优化课程总结。


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值