Linux vmstat 命令详解

langzixiaomu 2013-03-16

vmstat  命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,MEM内存使用,VMSwap虚拟内存交换情况,IO读写情况。

这个命令是查看Linux/Unix最好的命令,一个是Linux/Unix都支持,二是相比top,可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。

工作原理:

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

在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。

分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。

命令示例

vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数(单位是秒);第二个参数是采样的次数,如:

root@Ubuntu:~# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b  swpd  free  buff  cache  si  so    bi    bo  in  cs us sy id wa
 1  0      0 3498472 315836 3819540    0    0    0    1    2    0  0  0 100  0
2表示每个两秒采集一次服务器状态,1表示只采集一次。 


实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如:

root@ubuntu:~# vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b  swpd  free  buff  cache  si  so    bi    bo  in  cs us sy id wa
 1  0      0 3499840 315836 3819660    0    0    0    1    2    0  0  0 100  0
 0  0      0 3499584 315836 3819660    0    0    0    0  88  158  0  0 100  0
 0  0      0 3499708 315836 3819660    0    0    0    2  86  162  0  0 100  0
 0  0      0 3499708 315836 3819660    0    0    0    10  81  151  0  0 100  0
 1  0      0 3499732 315836 3819660    0    0    0    2  83  154  0  0 100  0
这表示vmstat每2秒采集数据,一直采集直到我结束程序,这里采集了5次数据我就结束了程序。

相关推荐