linux查看系统负载情况

系统平均负载

是指处于运行或不可打扰状态的进程的平均数。处于运行,表示运行态,占用CPU,或就绪态,等待CPU调度;不可打扰,表示阻塞,正在等待I/O。

linux系统中查看负载情况一般使用uptime命令(w命令和top命令)

一、uptime命令

# uptime
14:07:35 up 112 days, 20:54,  1 user,  load average: 0.00, 0.01, 0.05

内容解析:

  • 14:07:35 : 当前时间
  • up 112 days, 20:54 :系统运行时长
  • 1 user :当前有1个用户登录了系统
  • load average: 0.00, 0.01, 0.05 :系统在过去的1分钟内,5分钟内,15分钟内的平均负载

平均负载解析
查看逻辑CPU核心数: grep 'model name' /proc/cpuinfo | wc -l

# grep 'model name' /proc/cpuinfo | wc -l
1

运行结果表示,有1个逻辑CPU核心。 以1个CPU核心为例,假设CPU每分钟最多处理100个进程 --

  • load = 0,没有进程需要CPU
  • load = 0.5,CPU处理了50个进程
  • load = 1,CPU处理了100个进程,这是CPU已被占满,但系统还是能顺畅运行
  • load = 1.5,CPU处理了100个进程,还有50个进程正在排队等着CPU处理,这是CPU已经超负荷工作了。
    为了让系统顺畅运行,load值最好不要超过1.0,这样就没有进程需要等待了,所有进程都能在第一时间得到处理。

一般情况下,0.7是一个比较理想的值。

另外,load值的健康状态还跟系统CPU核心数相关,如果CPU核心数为2,那么load健康值应该为2,依次类推。

评价系统的负载一般采用15分钟内的那个平均负载值。

二、w命令

[root@localhost ~]# w
 14:35:48 up 112 days, 21:22,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.4.2.107       14:06    4.00s  0.02s  0.01s w

第1行:与uptime命令相同
第2行以下:当前登录的用户列表

三、top命令

[root@localhost ~]# top
top - 14:40:59 up 112 days, 21:27,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  98 total,   1 running,  97 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880604 total,   753448 free,   301416 used,  2825740 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  3249396 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                  
 5074 root      20   0  161884   2184   1544 R  0.3  0.1   0:00.02 top                                                                      
    1 root      20   0  128004   5548   3116 S  0.0  0.1  29:47.57 systemd                                                                  
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.98 kthreadd                                                                 
    3 root      20   0       0      0      0 S  0.0  0.0   1:02.55 ksoftirqd/0                                                              
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                                             
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0

第1行:与uptime命令相同
第2行:进程数信息

  • Tasks: 98 total 总共有98个进程
  • 1 running 1个进程正在占用CPU
  • 97 sleeping 97个睡眠进程
  • 0 stopped 0个停止的进程
  • 0 zombie 0个僵尸进程
    第3行:CPU使用率
  • us(user) 非nice用户占用的CPU
  • sy(system) 内核、内核进程占用CPU的比率
  • ni(nice) 用户进程空间内改变过优先级的进程占用的CPU比率
  • id(idle) CPU空闲比率,如果系统缓慢而这个值很高,说明系统慢的原因不是CPU负载高
  • wa(iowait) CPU等待执行I/O操作的时间比率,该指标可以用来排查磁盘I/O的问题,通常结合wa和id判断
  • hi(Hardware IRQ) CPU处理硬件中断所占时间的比率
  • si(Software Interrupts) CPU处理软件中断所占时间的比率
  • st(steal) 流逝的时间,虚拟机中的其他任务所占CPU时间的比率

一些情形说明:

  • 用户进程us占比高,I/O操作wa低: 说明系统缓慢的原因在于进程占用大量CPU,通常还会伴有较低的空闲占比id,说明CPU空转时间很少。
  • I/O操作wa低,空闲比率id高: 可以排除CPU资源瓶颈的可能。
  • I/O操作wa高:说明I/O占用了大量的CPU时间,需要检查交换空间的使用,交换空间位于磁盘上,性能远低于内存,当内存耗尽开始使用交换空间时,将会给性能带来严重的影响,所以对于性能要求较高的服务器,一般建议关闭交换空间。另一方面,如果内存充足,但wa很高,说明需要检查哪个进程占用了大量的I/O资源。

四、iostat命令

iostat 命令可以查看系统区分的I/O使用情况。

[root@localhost ~]# iostat
-bash: iostat: command not found
[root@localhost ~]# yum install -y sysstat
...安装过程
[root@localhost ~]# iostat
Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain) 	12/27/2019 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.09    0.00    0.00   99.90

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.04         7.27         2.76   70737928   26794216
dm-0              0.02         0.06         0.25     610596    2392246
dm-1              0.00         0.00         0.00       2604          0
dm-2              0.02         7.21         2.51   70107584   24386816

avg-cpu:
%user 在用户级别运行所使用的CPU比率
%nice nice操作所使用的CPU比率
%system 在系统级别(kernel)运行所使用的CPU比率
%iowait CPU等待硬件I/O时,所占用的CPU比率
%steal 其他任务所占CPU时间的比率
%idle CPU空闲时间的比率

值得注意的IO指标:
Device 磁盘名称
tps 每秒I/O传输请求量
kB_read/s 每秒读取的block数
kB_wrtn/s 每秒写入的block数
kB_read 读取block的总数
kB_wrtn 写入block的总数

五、iotop命令

iotop命令类似top命令,但是现实的是各个进程的I/O情况,对于定位I/O操作较重的进程有较大的作用。

[root@localhost ~]# yum install -y iotop
[root@localhost ~]# iotop
Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                       
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 22
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
 1027 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % sshd -D
    5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]

可以看到不同任务的读写强度。

六、sysstat工具

查看历史监控数据可以使用sysstat工具的sar命令:可以记录系统CPU的负载,I/O状况和内存使用记录。

sysstat的配置文件在: /etc/sysconfig/sysstat
sysstat的日志文件在: /var/log/sa/ 统计信息每10分钟记录一次,每天的23:59分会分割统计文件。该操作在/etc/cron.d/sysstat 文件中配置。

sar -u 查看当天CPU使用情况
sar -r 查看当天内存使用情况
sar -b 查看当天IO统计记录

[root@localhost ~]# yum install -y sysstat
[root@localhost ~]# sar
Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain) 	12/27/2019 	_x86_64_	(1 CPU)

03:40:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:50:01 PM     all      0.00      0.00      0.04      0.00      0.00     99.96
...
Average:        all      0.02      0.00      0.05      0.00      0.00     99.93


[root@localhost ~]# sar -r
Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain) 	12/27/2019 	_x86_64_	(1 CPU)

03:40:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
03:50:01 PM    743604   3137000     80.84       100   2677828    878216     14.69    507828   2406620         0
04:00:01 PM    743548   3137056     80.84       100   2677836    878216     14.69    507836   2406620         0
...
Average:       742369   3138235     80.87       100   2678556    878239     14.69    508025   2407157         0

kbmemfree             这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间
kbmemused             这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间
%memused              这个值是kbmemused和内存总量(不包括swap)的一个百分比
kbbuffers             这个值是free命令中的buffer
kbcached              这个值是free命令中的cache
kbcommit              保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)
%commit               这个值是kbcommit与内存总量(包括swap)的一个百分比



[root@localhost ~]# sar -b
Linux 3.10.0-957.27.2.el7.x86_64 (localhost.localdomain) 	12/27/2019 	_x86_64_	(1 CPU)

03:40:01 PM       tps      rtps      wtps   bread/s   bwrtn/s
03:50:01 PM      0.08      0.01      0.07      1.30      0.71
04:00:01 PM      0.06      0.00      0.06      0.00      0.49
...
Average:         0.12      0.00      0.12      0.85      1.79

tps            每秒钟物理设备的 I/O 传输总量
rtps           每秒钟从物理设备读入的数据总量
wtps           每秒钟向物理设备写入的数据总量
bread/s        每秒钟从物理设备读入的数据量,单位为:块/s
bwrtn/s        每秒钟向物理设备写入的数据量,单位为:块/s
posted @ 2020-09-17 14:09  缘木与鱼  阅读(2556)  评论(0编辑  收藏  举报