命令 vmstat 查看系统负载
前言
命令 w 查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力。当它无法判断具体是哪里 (CPU,内存,磁盘等) 有压力,所以这就用到了 vmstat。
命令 vmstat 用法
- 静态显示内存状态一次。
[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
2 0 0 697884 948 175948 0 0 18 2 49 83 0 0 99 0 0
- vmstat [n] 在此 n 代表数字,意思是每隔 n 秒输出一次状态 (按 Ctrl+c 结束命令)。
[root@localhost ~]# vmstat 1 //如果不Ctrl+c每1秒钟会显示一行。
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 697756 948 175968 0 0 17 2 48 82 0 0 100 0 0
0 0 0 697756 948 175968 0 0 0 0 28 43 0 0 100 0 0
- vmstat [n][m] 这里的 n 表示每隔 n 秒输出一次状态,m 表示动态显示的次数;
[root@localhost ~]# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 697764 948 175960 0 0 17 2 48 81 0 0 100 0 0
0 0 0 697764 948 175960 0 0 0 0 33 56 0 0 100 0 0
0 0 0 697764 948 175960 0 0 0 0 28 33 0 1 99 0 0
0 0 0 697764 948 175960 0 0 0 0 25 35 0 0 100 0 0
0 0 0 697764 948 175960 0 0 0 0 25 32 0 0 100 0 0
说明:
proc 显示进程相关信息
- r:=run,表示运行中或等待 cpu 运行的进程数,如果该数长期大于服务器 CPU 个数,则说明 CPU 不够用了;
- b: =block ,表示等待资源的进程数,如,等待 I/O,内存等,这列的值如果长时间大于 1,则需要关注一下;
memory 内存相关信息
- swpd:表示切换到交换分区的内存量(当该数据不断变化时说明内存不足);
- free:表示当前空闲的内存量;
- buff:缓冲大小;
- cache:缓存大小;
swap 内存交换情况
- si:=storage in,表示交换区写入到内存的数据量;
- so:=storage out,表示由内存写入到交换区的数据量;
io 磁盘使用情况
- bi:=block in,表示从块设备读取数据(写入内存)的量(即:读磁盘),单位为 KB;
- bo:=block out,表示(从内存读取)写入到块设备的数据(即:写磁盘),单位为 KB;
注: 此处数据会直接关系到 proc 出的 b 的值。
system 显示采集间隔内发生的中断次数
- in:表示在某一时间间隔中观测到的每秒设备中断数;
- cs:表示每秒产生的上下文切换次数;
CPU 显示 CPU 的使用状态(us+sy+id=100%)
- us:表示用户资源所花费 CPU 的百分比(当该值长时间 >50 时说明 CPU 数量不足);
- sy:表示系统资源所花费 CPU 的百分比;
- id:表示 CPU 处于空闲状态的百分比;
- wa:=wait,表示等待使用 CPU 的百分比(该数值大说明 CPU 不足);
- st:表示被偷走的 CPU 所占百分比(该值一般为 0,不用关注);
注意:需要关注的是 r,b 和 wa 这 3 列,io 部分和 bi 和 bo 也是要经常参考的对象,如果磁盘 io 压力很大,这两列的数值会比较高(大于 5 千算高)。另外,当 si 和 so 两列的数值比较高并且不断变化时,说明内存不够了,内存中的数据频繁交换分区中,这往往对系统性能影响极大。