如何查看Linux的系统负载?
使用top命令
第一行:系统当前时间,运行天数,小时数,在线用户数,1、5、15分钟内的平均负载
第二行:当前任务数,正在运行的,睡眠的,停止的,僵死的
第三行:用户态线程占cpu,内核态线程占cpu,renice值为负的任务的用户态进程的CPU时间百分比,空闲cpu,等待iocpu,cpu硬中断时间百分比,cpu软中断时间百分比
第四行:物理内存总数,空闲的,使用的,用作缓存的,
top - 01:05:56 up 55 days, 12:33, 1 user, load average: 1.55, 1.50, 1.35
Tasks: 134 total, 3 running, 130 sleeping, 0 stopped, 1 zombie
%Cpu(s): 4.0 us, 1.7 sy, 0.0 ni, 93.0 id, 0.0 wa, 1.0 hi, 0.3 si, 0.0 st
MiB Mem : 1969.0 total, 175.4 free, 674.1 used, 1119.6 buff/cache
MiB Swap: 1025.0 total, 726.1 free, 298.9 used. 1127.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
655936 root 10 -10 151172 48132 14316 S 1.3 2.4 139:45.26 AliYunDun
1 root 20 0 105264 6872 4024 S 0.0 0.3 0:56.47 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.39 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_rude_
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_trace
11 root 20 0 0 0 0 S 0.0 0.0 0:52.35 ksoftirqd/0
12 root 20 0 0 0 0 R 0.0 0.0 8:08.72 rcu_sched
13 root rt 0 0 0 0 S 0.0 0.0 0:00.72 migration/0
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
17 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kauditd
19 root 20 0 0 0 0 S 0.0 0.0 0:00.87 khungtaskd
20 root 20 0 0 0 0 S 0.0 0.0 0:00.11 oom_reaper
21 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 writeback
22 root 20 0 0 0 0 S 0.0 0.0 1:42.37 kcompactd0
23 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
24 root 39 19 0 0 0 S 0.0 0.0 1:32.23 khugepaged
25 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 memcg_wmark
39 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 cryptd
74 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kintegrityd
75 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kblockd
76 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 blkcg_punt_bio
下面的这些命令也可以查看
[root@iZwz9hv1phm24s3jicy8x1Z ~]# w
01:14:14 up 55 days, 12:41, 1 user, load average: 1.02, 1.16, 1.24
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 113.57.237.8 01:05 0.00s 0.02s 0.00s w
[root@iZwz9hv1phm24s3jicy8x1Z ~]# uptime
01:14:40 up 55 days, 12:41, 1 user, load average: 1.01, 1.15, 1.23
[root@iZwz9hv1phm24s3jicy8x1Z ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
4 0 306060 180760 189460 957192 0 0 24 24 5 9 11 5 85 0 0
Cpu load的参数如果为4,描述一下现在系统处于什么情况?
load average 表示的是CPU的负载,包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。
假如我们看到load average 是4,不一定是系统有问题,因为它是基于操作系统的内核的数量决定的,一般可以简单粗暴的理解为内核load之和。 比如现在一般都是8个内核,那么load average的值就是8。一般业界能够被接受的值是, load average <= CPU核数 *0.7。 但现在硬件越来越便宜,核数庞大的机器也越来越大,如遇到机器的CPU核数很大,那么剩余的30%部分也越大,这个时候可以适当的调整下,只要不要到整个核数都用满。