小结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;