vmstat

vmstat 是一个查看系统虚拟内存使用情况的命令,通过这个命令,可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。

 

什么是Linux的虚拟内存

在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。

当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。

 

其输出各个字段如下所示如下:

vmstat  5 5(每隔5秒采样一次,一共5次)
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache             si   so    bi    bo   in           cs us sy id wa
 0  0  10868  18276   6956 2116176    0    0     5     4    0             0  2  1 96  0
 2  0  10868  17636   6972 2116420    0    0     0   195 1598  1593  4  2 93  0
 1  0  10868  17764   6988 2116924    0    0     0   166 1566  1544  4  2 93  0
 2  0  10868  17332   7016 2117416    0    0     1   202 1649  1706  4  2 94  0
 0  0  10868  16628   7024 2117668    0    0     0   186 1957  1820  5  3 92  0

 

下面针对各项输出进行解释,并附上一些相应的经验值

procs
r:在运行队列中等待的进程数,展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现相应的CPU瓶颈了
b:在等待io的进程数

memoy
swpd:正在使用的swap大小(单位KB),即:进入到虚拟内存的内存数量,该值大于0,表示物理内存不足;不过如果该值比较大了,但是si、so的值长期为0,表示系统性能还是正常。
free:空闲的物理内存空间(单位KB)
buff: 已使用的buff大小,对块设备的读写进行缓冲(单位:KB)
cache:已使用的cache大小,文件系统的cache(单位:KB)

swap
si: 从磁盘交换到内存的交换页数量,单位:KB/秒
so: 从内存交换到磁盘的交换页数量,单位:KB/秒

io
bi: 从块设备读入的数据总量(读磁盘) (KB/s)
bo: 写入到块设备的数据总理(写磁盘) (KB/s)

system
in: 每秒的中断数,包括时钟中断
cs: 每秒的环境(上下文)转换次数

cpu
us:用户进程消耗的CPU时间百分比

         us的值越高,说明用户进程消耗的CPU时间越多。但是如果长期超过50%的话,应该考虑用户应用程序的优化
sy:内核进程消耗的CPU时间百分比 
        一般来说,如果sy的值长期处于高位,尽管其他指标也运行正常,但是这个并非系统运行良好的情况,需要进一步分析原因
id:cpu空闲以百分比
wa:io等待消耗的CPU时间百分比

         wa的值比较高,说明IO等待比较严重,可能的原因:1)磁盘大量的随机访问;2)磁盘的带宽出现瓶颈

vmstat的瓶颈:无法对某一个进程进行深入分析。

 

关于CPU监控这块,需要结合上面的几个指标来一起分析:

1)运行队列,单个CPU极限运行不超过3

2)CPU满负荷运行,其分布符合:

a) User Time:65%~70%
b) System Time:30%~35%
c) Idle:0%~5%

3)上下文切换,如果CPU符合上述70/30规则,则大量的上下文切换也没关系 

你可能感兴趣的:(vmstat)