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

(1)查看系统平均负载

$ 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平均负载

(2)判断平均负载合理性

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

(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)结合(1)中1min, 5min, 15min负载情况判断负载是在增加还是减少

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

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

(5) 当负载高于CPU总数80%时就要排查原因了,是否需要扩容。

------------------------------------------------------------------------

1、平均负载与cpu的关系:

当我们看到1min负载>5min负载>15分钟负载时,意味着负载确实在增加。CPU使用率可能在相同区间内增加。但有时未必增加,这是为什么呢?

首先了解平均负载的定义:单位时间内处于运行状态和不可中断状态的进程数(中断有CPU中断和IO中断)。

CPU使用率:单位时间内CPU处理进程情况统计

所以,平均负载还包括了等待CPU和等待I/O的进程。

通常我们的资源分为计算密集型(CPU密集型),存储密集型(IO密集型)和网络密集型。

计算密集型:CPU升高会引起平均负载升高,此时,平均负载和CPU呈正比关系;

IO密集型:IO等待会引起负载升高,但CPU并不一定会升高;

2、如何查看是什么引起平均负载升高?

用到的命令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
(3) $ iostat -xdmt 1 1
Linux 2.6.32-696.18.7.1.el6.ucloud.x86_64 (bd-pre-spotlight-search-builder0)     01/08/2019     _x86_64_    (1 CPU)

01/08/2019 03:49:55 PM
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               1.93    49.46    6.65    2.98     0.09     0.20    62.88     0.11   11.91    0.18   38.09   0.27   0.26
vdb

通过上面两步结果会判断出负载升高了,或者CPU升高了,或者二者都升高了。接下来看下是哪个进程引起的负载或者CPU升高。

(4)$ 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

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

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

总结下:1、CPU高同时负载高,CPU使用率超过80%,考虑扩容;

2、CPU使用高了,负载并不高,参考https://blog.csdn.net/wangtingting_100/article/details/80666709

3、CPU不高,负载高,看是否存在大量的磁盘IO操作,批量查询或者写入。

猜你喜欢

转载自blog.csdn.net/wangtingting_100/article/details/85879640
今日推荐