查看系统负载 vmstat 详解
查看系统负载 vmstat 详解
查看具体设备有无压力可以通过 vmstat 得知,vmstat 命令打印的结果分为 6 部分:procs,memory,swap,io,system,CPU。重点关注 r b si so bi bo 几列。
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 832 373600 22176 523896 0 0 3 3 5 6 0 0 100 0 0
[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
0 0 832 373600 22280 523896 0 0 3 3 5 6 0 0 100 0 0
0 0 832 373568 22280 523896 0 0 0 0 15 15 0 0 100 0 0
0 0 832 373568 22280 523896 0 0 0 0 13 14 0 0 100 0 0
0 0 832 373568 22280 523896 0 0 0 0 12 16 0 0 100 0 0
0 0 832 373568 22280 523896 0 0 0 0 12 14 0 0 100 0 0
0 0 832 373568 22280 523896 0 0 0 0 11 15 0 0 100 0 0
0 0 832 373568 22280 523896 0 0 0 0 14 19 0 0 100 0 0
^C
(1)procs 显示进程相关信息
r:表示运行和等待 CPU 时间片的进程数。如果长时间大于服务器 CPU 的个数,则说明 CPU 不够用了。
b:表示等待资源的进程数。比如,等待 I/O、内存等,这列的值如果长时间大于 1,则需要关注一下了。
(2)memory 内存相关信息
swpd:表示切换到交换分区中的内存数量。
free:当前空闲的内存数量。
buff:缓冲大小(即将写入磁盘的)
cache:缓存大小(从磁盘中读取的)
(3)swap 内存交换情况
si:由交换区写入到内存的数据量
so:由内存写入到交换区的数据量
(4)io 磁盘使用情况
bi:从块设备读取数据的量(读磁盘)
bo:从块设备写入数据的量(写磁盘)
(5)system 显示采集间隔内发生的中断次数
in:表示在某一时间间隔中观测到的每秒设备中断数
cs:表示每秒产生的上下文切换次数
(6)CPU 显示 CPU 的使用状态
us:显示了用户下所花费 CPU 时间的百分比
sy:显示系统花费 CPU 时间百分比
id:表示 CPU 处于空闲状态的时间百分比
wa:表示 I/O 等待所占用 CPU 时间百分比
st:表示被偷走的 CPU 所占百分比(一般为 0,不用关注)
以上各个参数中,需要经常关注 r 列, b 列和 wa 列。IO 部分的 bi 以及 bo 也是要经常参考的对象,如果磁盘 io 压力很大时,这两列的数值会比较高。另外当 si 、so 两列的数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。
使用 vmstat 查看系统状态时,通常用这两种形式来看:
[root@localhost ~]# vmstat 1 5
或
[root@localhost ~]# vmstat 1
前面表示,每隔一秒钟输出一次状态,共输出 5 次。而后面的表示每隔 1 秒输出一次状态且一直输出,除非我们按 Ctrl+c 结束。