Linux

小结Linux的系统负载和CPU使用率

一 如何查看系统平均负载

1 top
[root@centos-master ~]# top
top - 07:48:23 up 919 days, 18:19,  1 user,  load average: 0.05, 0.06, 0.05
Tasks: 346 total,   1 running, 345 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 65928364 total,  1085848 free, 39522268 used, 25320248 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 13207424 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+  PPID   UID COMMAND                                                                                                                                      
19878 root      20   0   23.8g   8.6g   6416 S   2.0 13.7  11639:48 19874     0 java                                                                                                                                         
 3715 root      20   0 2634472  23124   1928 S   0.3  0.0 678:43.76  3703     0 docker-containe                                                                                                                              
11231 root      20   0  157984   2516   1568 R   0.3  0.0   0:00.03 11136     0 top                                                                                                                                          
18637 root      20   0 9064068   1.8g   5468 S   0.3  2.9 605:16.57 18634     0 java                                                                                                                                         
    1 root      20   0  192552   4588   1524 S   0.0  0.0   1209:54     0     0 systemd       
2 w
[root@centos-master ~]# w
 07:48:49 up 919 days, 18:20,  1 user,  load average: 0.03, 0.06, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/4    172.16.116.10    07:48    1.00s  0.01s  0.00s w
[root@centos-master ~]# 
3 uptime
[root@centos-master ~]# uptime 
 07:48:52 up 919 days, 18:20,  1 user,  load average: 0.03, 0.06, 0.05
[root@centos-master ~]# 

二平均负载的含义

无论是top/w/uptime这些命令获取到的平均负载信息,表示的过去1分钟/5分钟/15分钟内,系统的负载情况。

但是,但是,一定要描述清楚这个负载情况的含义:表示的是在过去一段时间内系统上平均有多少个正在运行的+正在等待CPU资源+不可以被中断的进程的个数。

这里的正在运行的进程状态为Running的状态,以及等待CPU资源的进程。而不可以被中断的进程,比如那些正在和硬件进行读写交互的进程,如果此时它们在等待磁盘完成读写操作之前,是不可以被中断的,比如Oracle数据库的DBWR,LGWR等进程如果正在和磁盘进行IO操作,那么它们一定是不可以被中断的。此种情况下,进程的状态是D状态,比如,之前遇到过的一则PostgreSQL数据库性能优化的案例

[root@db2 ~ 11:14:42]$ top
​
top - 11:16:10 up 2 days, 13:01,  5 users,  load average: 51.62, 41.75, 29.06
Tasks: 948 total,   5 running, 943 sleeping,   0 stopped,   0 zombie
Cpu(s):  9.0%us, 59.2%sy,  0.0%ni, 14.1%id, 17.2%wa,  0.0%hi,  0.5%si,  0.0%st
Mem:  16284812k total, 16159260k used,   125552k free,     5700k buffers
Swap:  8191992k total,   107980k used,  8084012k free,  8010540k cached
​
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                
31450 postgres  20   0 4534m 2.3g 2.2g D 46.6 15.0   7:02.50 postgres                                                
30166 postgres  20   0 4528m 2.3g 2.2g D 46.0 14.9   4:05.40 postgres                                                
30185 postgres  20   0 4494m 2.2g 2.1g D 43.5 14.1   4:05.08 postgres                                                
31453 postgres  20   0 4529m 1.9g 1.8g D 42.9 12.3   3:39.13 postgres                                                
30232 postgres  20   0 4526m 2.3g 2.1g D 40.4 14.6   6:07.51 postgres                                                
 2811 postgres  20   0 4521m 874m 742m D 39.8  5.5   1:36.34 postgres                                                
31457 postgres  20   0 4534m 1.8g 1.7g R 39.5 11.6   3:55.23 postgres                                                
30956 postgres  20   0 4521m 1.7g 1.5g D 38.8 10.8   2:14.67 postgres                                                
 2714 postgres  20   0 4519m 1.4g 1.3g D 37.9  9.1   1:19.96 postgres                                                
30182 postgres  20   0 4525m 1.9g 1.8g D 37.9 12.5   3:40.31 postgres                                                
31444 postgres  20   0 4525m 2.2g 2.0g D 37.6 13.9   3:29.11 postgres                                                
31654 postgres  20   0 4526m 2.4g 2.2g D 36.7 15.3   5:04.19 postgres                                                
 2717 postgres  20   0 4519m 847m 718m D 36.1  5.3   1:37.20 postgres                                                
  753 postgres  20   0 4533m 3.7g 3.6g D 35.4 23.9  27:52.65 postgres                                                
31451 postgres  20   0 4433m 1.8g 1.7g D 35.4 11.5   2:36.85 postgres                                                
30701 postgres  20   0 4520m 1.7g 1.6g D 35.1 11.1   2:09.85 postgres                                                
31448 postgres  20   0 4435m 2.2g 2.1g D 33.3 13.9   4:16.70 postgres                                                
29192 postgres  20   0 4526m 2.3g 2.1g D 32.6 14.6   4:19.91 postgres                                                
30693 postgres  20   0 4525m 1.9g 1.8g D 32.0 12.4   2:29.72 postgres                                                
 3448 postgres  20   0 4451m 383m 305m D 31.4  2.4   0:49.98 postgres                                                
 3568 postgres  20   0 4388m 131m 113m D 29.5  0.8   0:10.03 postgres                                                
 3435 postgres  20   0 4376m 364m 355m D 29.2  2.3   0:12.23 postgres                                                
[root@db2 ~ 11:16:22]$ 

一句话小结就是:系统平均负载表示系统过去一段时间内,系统上平均活跃进程数

三 系统平均负载指标

这个跟系统CPU个数有严格的关联关系,比如:

  • 2 CPU的系统,如果平均负载是2,即过去一段时间内,系统上平均活跃进程数为2,那么这个系统的平均负载不高,刚刚好,平均每个CPU运行一个进程。
  • 反之,如果是单核的系统,只有一个CPU,那么系统的负载就高了,2个进程不停的在争抢1个CPU;
  • 对于4核CPU的系统,这个负载就显得有点儿空闲了,平均有一半儿的CPU处于空闲状态;

当然,最为理想的情况下,一个CPU上跑一个进程,这是最好的。

不能简单的一看到系统平均负载的数字比较高,就马上判断说系统负载大,资源不够用,CPU过于繁忙,这种不结合系统CPU个数,而得出的结论是不准确不靠谱的。

另外,也要结合过去1分钟,5分钟,15分钟的时间看系统平均负载的趋势,是越来越大,还是下降的的趋势。

四 平均负载和CPU利用率的关系

平均负载:单位时间内,系统中处于可运行状态进程数(正在使用CPU的进程以及等待CPU的进程)+不可以中断进程数的和。它包含CPU真正的在执行的进程,还有正在等CPU资源的进程,还有等待IO完成的进程。

CPU利用率:单位时间内,CPU真真正正的被使用到的用于干活儿的比率。

所以,从上面的定义,可以明显的看出,平均负载和CPU利用率这两个并不是完全等价的。比如,某个系统上,有很多进程在等待IO完成,此时平均负载会高,但是CPU利用率不一定高。比如,上面提到的PostgreSQL数据库性能优化的那个案例,从top数据看出来,平均负载非常高,而CPU利用率在59.2%sy。

当然,系统上,有很多进程正在充分使用CPU资源,此时系统负载会高,同时CPU利用率也一定很高;

另外,有些场景,系统进程多,进程一直在使用CPU资源的同时,进程间也发生大量上下文切换,即大量进程在等待CPU资源。系统负载高,CPU利用率也会很高,在被进程充分使用的同时,还需要维护进程的context switch。

演示3种不同场景:2个CPU内存4G的虚拟机,系统已经安装sysstat工具包,stress软件。

1 CPU密集型进程:系统负载高,CPU利用率也高

session1:执行stress -c 1 -t 600;模拟给CPU施加压力,2个CPU的系统,让其中1个CPU忙起来,持续600秒;

[root@localhost ~]# stress -c 1 -t 600
stress: info: [3028] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
​

session2: 监控系统负载,watch -d uptime;高亮显示uptime执行结果中发生变化的部分,

[root@localhost ~]# watch -d uptime
Every 2.0s: uptime                                                                                                                                        Thu Aug 26 17:37:45 2021
​
 17:37:45 up 7 days,  6:52,  3 users,  load average: 0.65, 0.22, 0.11
​

从上,看到系统负载1分钟,5分钟,15分钟,逐渐上升,说明系统负载逐步提高。

session3: top,查看系统资源情况

[root@localhost ~]# top
top - 17:39:37 up 7 days,  6:54,  4 users,  load average: 0.78, 0.41, 0.20
Tasks: 128 total,   2 running, 126 sleeping,   0 stopped,   0 zombie
%Cpu0  : 55.0 us,  0.3 sy,  0.0 ni, 44.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  : 45.8 us,  0.3 sy,  0.0 ni, 53.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881344 total,  2644240 free,   270732 used,   966372 buff/cache
KiB Swap:  4063228 total,  4063228 free,        0 used.  2895952 avail Mem 
​
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                      
 3029 root      20   0    7312    100      0 R  99.7  0.0   3:12.46 stress -c 1 -t 600                                                                                           
 3255 root      20   0  162112   2204   1520 R   0.7  0.1   0:00.08 top                                                                                                          
    9 root      20   0       0      0      0 S   0.3  0.0   7:59.13 [rcu_sched]                                                                                                  
  958 nx        20   0 1435556  78824   7464 S   0.3  2.0  25:44.39 /usr/NX/bin/nxserver.bin --daemon                                                                            
 3016 root      20   0  157852   2572   1552 S   0.3  0.1   0:00.51 watch -d uptime  

同样,看到top输出结果中,系统负载在逐步增加,同时看到CPU利用率的情况,按下数字键1,可以调出每个CPU使用率情况。

session4: mpstat -P ALL 2;每隔2秒输出1次CPU使用情况,-P ALL表示输出每个CPU的具体信息;

[root@localhost ~]# mpstat  -P ALL 2
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain)     2021年08月26日  _x86_64_        (2 CPU)
​
17时41分19秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
17时41分21秒  all   50.38    0.00    0.50    0.00    0.00    0.25    0.00    0.00    0.00   48.87
17时41分21秒    0   58.29    0.00    0.00    0.00    0.00    0.50    0.00    0.00    0.00   41.21
17时41分21秒    1   42.50    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   56.50
​
17时41分21秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
17时41分23秒  all   50.63    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   49.12
17时41分23秒    0   68.16    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   31.34
17时41分23秒    1   32.32    0.00    0.51    0.51    0.00    0.00    0.00    0.00    0.00   66.67
​
17时41分29秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
17时41分31秒  all   50.25    0.00    0.50    0.00    0.00    0.25    0.00    0.00    0.00   49.00
17时41分31秒    0    0.51    0.00    0.51    0.00    0.00    0.51    0.00    0.00    0.00   98.48
17时41分31秒    1  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
​

从上,可以看到每隔2秒输出一次数据,第一行是所有CPU的平均情况,下面的2行分别是cpu0和CPU1的使用率。当然,我们知道,当前系统是2个CPU,我们的stress -c 1,表示给其中1个CPU施加压力,自然,系统的CPU使用率就是50%。同时,也看到,随着时间的推进,系统负载维持在1左右。

[root@localhost ~]# top
top - 17:46:09 up 7 days,  7:00,  4 users,  load average: 1.03, 0.79, 0.44
Tasks: 128 total,   3 running, 125 sleeping,   0 stopped,   0 zombie
%Cpu(s): 50.6 us,  0.5 sy,  0.0 ni, 48.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881344 total,  2644132 free,   270764 used,   966448 buff/cache
KiB Swap:  4063228 total,  4063228 free,        0 used.  2895868 avail Mem 
​
....
[root@localhost ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      0 2644596   2108 964316    0    0     0     1    7   31  0  0 99  0  0
 1  0      0 2644504   2108 964316    0    0     0     0 1270  263 51  1 49  0  0
 1  0      0 2644472   2108 964316    0    0     0     0 1238  249 50  0 49  0  0
 1  0      0 2644380   2108 964316    0    0     0     0 1285  270 51  1 49  0  0
 1  0      0 2644380   2108 964316    0    0     0     0 1256  242 50  1 50  0  0
 1  0      0 2644596   2108 964320    0    0     0     0 1259  270 51  0 49  0  0
 1  0      0 2644596   2108 964320    0    0     0     0 1255  244 50  0 49  0  0
 1  0      0 2644596   2108 964324    0    0     0     0 1248  249 50  1 49  0  0
 1  0      0 2644596   2108 964324    0    0     0     0 1250  255 50  1 50  0  0
^C
[root@localhost ~]#

vmstat 1,每间隔1秒输出一次数据采样,发现系统的r队列,基本维持在1不变。

补充:通过pidstat -u 1;每间隔1秒输出一次进程的CPU资源使用情况。

[root@localhost ~]# pidstat -u 1
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain)     2021年08月27日  _x86_64_        (2 CPU)
​
07时47分22秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
07时47分23秒     0     14362  100.00    0.00    0.00  100.00     1  stress
07时47分23秒     0     14390    0.99    0.00    0.00    0.99     1  kworker/1:1
07时47分23秒     0     14403    0.00    0.99    0.00    0.99     0  pidstat
​
07时47分23秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
07时47分24秒     0     14317    1.00    1.00    0.00    2.00     1  top
07时47分24秒     0     14362   99.00    0.00    0.00   99.00     1  stress
07时47分24秒     0     32319    0.00    1.00    0.00    1.00     0  dockerd-current
07时47分24秒     0     32325    1.00    0.00    0.00    1.00     1  docker-containe
^C
​
平均时间:   UID       PID    %usr %system  %guest    %CPU   CPU  Command
平均时间:     0     14317    0.50    0.50    0.00    1.00     -  top
平均时间:     0     14362   99.50    0.00    0.00   99.50     -  stress
平均时间:     0     14390    0.50    0.00    0.00    0.50     -  kworker/1:1
平均时间:     0     14403    0.00    0.50    0.00    0.50     -  pidstat
平均时间:     0     32319    0.00    0.50    0.00    0.50     -  dockerd-current
平均时间:     0     32325    0.50    0.00    0.00    0.50     -  docker-containe
[root@localhost ~]# 
2 IO密集型进程:系统负载高,CPU利用率也高

session1:

[root@localhost ~]# stress -i 1 -t 600
stress: info: [14581] dispatching hogs: 0 cpu, 1 io, 0 vm, 0 hdd
​

session2:查看系统资源使用整体情况

top - 08:07:44 up 7 days, 21:22,  4 users,  load average: 1.24, 1.38, 1.22
Tasks: 129 total,   3 running, 126 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us, 49.8 sy,  0.0 ni, 49.0 id,  0.0 wa,  0.0 hi,  0.5 si,  0.0 st
KiB Mem :  3881344 total,  2635660 free,   276624 used,   969060 buff/cache
KiB Swap:  4063228 total,  4063228 free,        0 used.  2889520 avail Mem 
​
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                    
14582 root      20   0    7312     96      0 R  80.4  0.0   6:50.72 stress -i 1 -t 600                                                                                                                                                         
14699 root      20   0       0      0      0 S  19.6  0.0   0:05.27 [kworker/u4:2]   

session3:查看CPU资源使用情况

[root@localhost ~]# mpstat -P ALL 2
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain)     2021年08月27日  _x86_64_        (2 CPU)
​
08时08分39秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
08时08分41秒  all    0.26    0.00   41.15    0.00    0.00    0.00    0.00    0.00    0.00   58.59
08时08分41秒    0    0.52    0.00   55.67    0.00    0.00    0.00    0.00    0.00    0.00   43.81
08时08分41秒    1    0.00    0.00   26.42    0.00    0.00    0.52    0.00    0.00    0.00   73.06
​
08时08分41秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
08时08分43秒  all    0.50    0.00   49.75    0.00    0.00    0.25    0.00    0.00    0.00   49.50
08时08分43秒    0    0.00    0.00   99.00    0.50    0.00    0.00    0.00    0.00    0.00    0.50
08时08分43秒    1    0.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.50
​
08时08分43秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
08时08分45秒  all    0.50    0.00   49.75    0.00    0.00    0.25    0.00    0.00    0.00   49.50
08时08分45秒    0    0.50    0.00   99.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00
08时08分45秒    1    0.50    0.00    0.50    0.00    0.00    0.50    0.00    0.00    0.00   98.51
^C
​
平均时间:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
平均时间:  all    0.42    0.00   46.96    0.00    0.00    0.17    0.00    0.00    0.00   52.45
平均时间:    0    0.34    0.00   85.04    0.17    0.00    0.00    0.00    0.00    0.00   14.45
平均时间:    1    0.34    0.00    8.77    0.00    0.00    0.34    0.00    0.00    0.00   90.56
[root@localhost ~]# 

session4:究竟是哪个经常占用了CPU资源呢?

[root@localhost ~]# pidstat -u 2
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain)     2021年08月27日  _x86_64_        (2 CPU)
​
08时08分01秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
08时08分03秒     0      6457    0.00    1.99    0.00    1.99     1  kworker/u4:1
08时08分03秒     0     14582    0.00   74.13    0.00   74.13     1  stress
08时08分03秒     0     14699    0.00   18.91    0.00   18.91     1  kworker/u4:2
08时08分03秒     0     14709    0.00    0.50    0.00    0.50     0  pidstat
​
08时08分03秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
08时08分05秒     0      6457    0.00   12.00    0.00   12.00     1  kworker/u4:1
08时08分05秒     0     14317    0.00    0.50    0.00    0.50     1  top
08时08分05秒     0     14582    0.00   76.00    0.00   76.00     1  stress
08时08分05秒     0     14699    0.00    8.00    0.00    8.00     0  kworker/u4:2
08时08分05秒     0     14709    0.00    0.50    0.00    0.50     0  pidstat
08时08分05秒     0     32319    0.50    0.00    0.00    0.50     0  dockerd-current
​
08时08分05秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
08时08分07秒   995       958    0.50    0.00    0.00    0.50     1  nxserver.bin
08时08分07秒     0      6457    0.00   19.00    0.00   19.00     1  kworker/u4:1
08时08分07秒     0     14582    0.50   73.50    0.00   74.00     1  stress
08时08分07秒     0     14699    0.00    1.50    0.00    1.50     0  kworker/u4:2
08时08分07秒     0     14709    0.50    0.00    0.00    0.50     0  pidstat
^C
​
平均时间:   UID       PID    %usr %system  %guest    %CPU   CPU  Command
平均时间:   995       958    0.17    0.00    0.00    0.17     -  nxserver.bin
平均时间:     0      6457    0.00   10.98    0.00   10.98     -  kworker/u4:1
平均时间:     0     14317    0.00    0.17    0.00    0.17     -  top
平均时间:     0     14582    0.17   74.54    0.00   74.71     -  stress
平均时间:     0     14699    0.00    9.48    0.00    9.48     -  kworker/u4:2
平均时间:     0     14709    0.17    0.33    0.00    0.50     -  pidstat
平均时间:     0     32319    0.17    0.00    0.00    0.17     -  dockerd-current
[root@localhost ~]# 
3 大量等待CPU调度的进程:系统负责高,CPU利用率也高

session1:

[root@localhost ~]# stress -c 8 -t 600
stress: info: [14758] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
​

session2:

top - 08:12:27 up 7 days, 21:26,  4 users,  load average: 2.85, 1.34, 1.20
Tasks: 136 total,   9 running, 127 sleeping,   0 stopped,   0 zombie
%Cpu(s):100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881344 total,  2634404 free,   277896 used,   969044 buff/cache
KiB Swap:  4063228 total,  4063228 free,        0 used.  2888248 avail Mem 
​
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                    
14759 root      20   0    7312     96      0 R  25.8  0.0   0:06.34 stress -c 8 -t 600                                                                                                                                                         
14762 root      20   0    7312     96      0 R  25.2  0.0   0:05.99 stress -c 8 -t 600                                                                                                                                                         
14763 root      20   0    7312     96      0 R  25.2  0.0   0:06.10 stress -c 8 -t 600                                                                                                                                                         
14765 root      20   0    7312     96      0 R  25.2  0.0   0:05.99 stress -c 8 -t 600                                                                                                                                                         
14760 root      20   0    7312     96      0 R  24.8  0.0   0:05.91 stress -c 8 -t 600                                                                                                                                                         
14761 root      20   0    7312     96      0 R  24.8  0.0   0:05.86 stress -c 8 -t 600                                                                                                                                                         
14764 root      20   0    7312     96      0 R  24.8  0.0   0:06.44 stress -c 8 -t 600                                                                                                                                                         
14766 root      20   0    7312     96      0 R  24.5  0.0   0:06.03 stress -c 8 -t 600                                                                                                                                                         
  398 root      20   0       0      0      0 S   0.3  0.0   6:52.74 [xfsaild/dm-0]                                                                                                                                                             
  958 nx        20   0 1435556  78824   7464 S   0.3  2.0  27:52.23 /usr/NX/bin/nxserver.bin --daemon                                                                                                                                          
14317 root      20   0  162136   2340   1616 R   0.3  0.1   0:05.49 top                            

session3:

[root@localhost ~]# mpstat -P ALL 2
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain)     2021年08月27日  _x86_64_        (2 CPU)
​
08时12分42秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
08时12分44秒  all  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
08时12分44秒    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
08时12分44秒    1  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
​
08时12分44秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
08时12分46秒  all   99.75    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00    0.00
08时12分46秒    0   99.50    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00
08时12分46秒    1  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
​
08时12分46秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
08时12分48秒  all   99.75    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00    0.00
08时12分48秒    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
08时12分48秒    1   99.50    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00
^C
​
平均时间:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
平均时间:  all   99.83    0.00    0.17    0.00    0.00    0.00    0.00    0.00    0.00    0.00
平均时间:    0   99.83    0.00    0.17    0.00    0.00    0.00    0.00    0.00    0.00    0.00
平均时间:    1   99.83    0.00    0.17    0.00    0.00    0.00    0.00    0.00    0.00    0.00
[root@localhost ~]# 

session4:

[root@localhost ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
10  0      0 2632716   2108 966956    0    0     0     1   22   12  0  0 99  0  0
 8  0      0 2632692   2108 966956    0    0     0     0 2146  376 100  0  0  0  0
 8  0      0 2632660   2108 966964    0    0     0     0 2150  387 100  0  0  0  0
 8  0      0 2632660   2108 966964    0    0     0     0 2116  360 100  0  0  0  0
 9  1      0 2632628   2108 966964    0    0     0     0 2122  367 100  0  0  0  0
 8  0      0 2632596   2108 966960    0    0     0     0 2123  371 100  0  0  0  0
^C
[root@localhost ~]# 

系统运行队列r维持在8个左右,此时已经把CPU占满了。

五 小结

系统负载是指单位时间内,正在使用CPU的进程数+等待CPU的进程数+不可以被中断的进程数;

分析系统负载要结合系统CPU个数来看,以及分析系统负载的趋势,1,5,15分钟内是上升还是下降;

系统负载和CPU使用率,这两者不可以混淆而谈;

分析系统负载和CPU使用率工具,top,mpstat -P ALL 2; pidstat -u 2;vmstat 2;

留言