vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、IO读写、CPU活动等进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。

 

Procs

       r: The number of processes waiting for run time.

 

       等待运行的进程数。如果等待运行的进程数越多,意味着CPU非常繁忙。另外,如果该参数长期大于和等于逻辑cpu个数,则CPU资源可能存在较大的瓶颈。

       b: The number of processes in uninterruptible sleep.

 

 

       处在非中断睡眠状态的进程数。意味着进程被阻塞。主要是指被资源阻塞的进程对列数(比如IO资源、页面调度等),当这个值较大时,需要根据应用程序来进行分析,比如数据库产品,中间件应用等。

 

 

Memory

       swpd: the amount of virtual memory used.

 

       已使用的虚拟内存大小。如果虚拟内存使用较多,可能系统的物理内存比较吃紧,需要采取合适的方式来减少物理内存的使用。swapd不为0,并不意味物理内存吃紧,如果swapd没变化,si、so的值长期为0,这也是没有问题的

      

       free: the amount of idle memory.

 

       空闲的物理内存的大小

       buff: the amount of memory used as buffers.

 

       用来做buffer(缓存,主要用于块设备缓存)的内存数,单位:KB

       cache: the amount of memory used as cache.

 

       用来做cache(缓存,主要用于缓存文件)的内存,单位:KB

       inact: the amount of inactive memory. (-a option)

 

       inactive memory的总量

       active: the amount of active memory. (-a option)

 

 

       active memroy的总量。

 

 

Swap

       si: Amount of memory swapped in from disk (/s).

 

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

 

       so: Amount of memory swapped to disk (/s).

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

 

        内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。

   当看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,这个是不正确的。不能光看这一点,还要结合si和so,

    如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。


       当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,

   这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,

   但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。

 

IO

       bi: Blocks received from a block device (blocks/s).

 

        每秒从块设备接收到的块数,单位:块/秒 也就是读块设备。

 

       bo: Blocks sent to a block device (blocks/s).

 

        每秒发送到块设备的块数,单位:块/秒  也就是写块设备。

 

System
       in: The number of interrupts per second, including the clock.
 
        每秒的中断数,包括时钟中断
 
       cs: The number of context switches per second.

        每秒的环境(上下文)切换次数。比如我们调用系统函数,就要进行上下文切换,而过多的上下文切换会浪费较多的cpu资源,这个数值应该越小越好。

 

CPU
       These are percentages of total CPU time.
 
       us: Time spent running non-kernel code. (user time, including nice time)

 

        用户CPU时间(非内核进程占用时间)(单位为百分比)。 us的值比较高时,说明用户进程消耗的CPU时间多

 

sy: Time spent running kernel code. (system time)

 

         系统使用的CPU时间(单位为百分比)。sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

 

id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.

 

        空闲的CPU的时间(百分比),在Linux 2.5.41之前,这部分包含IO等待时间。

 

wa: Time spent waiting for IO. Prior to Linux 2.5.41, shown as zero.

 

        等待IO的CPU时间,在Linux 2.5.41之前,这个值为0 .这个指标意味着CPU在等待硬盘读写操作的时间,用百分比表示。wait越大则机器io性能就越差。说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

 

st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
 

vmstat 1 10
Procs
       r: The number of processes waiting for run time.

 

       等待运行的进程数。如果等待运行的进程数越多,意味着CPU非常繁忙。另外,如果该参数长期大于和等于逻辑cpu个数,则CPU资源可能存在较大的瓶颈。

       b: The number of processes in uninterruptible sleep.

 

 

       处在非中断睡眠状态的进程数。意味着进程被阻塞。主要是指被资源阻塞的进程对列数(比如IO资源、页面调度等),当这个值较大时,需要根据应用程序来进行分析,比如数据库产品,中间件应用等。

 

 

Memory

       swpd: the amount of virtual memory used.

 

       已使用的虚拟内存大小。如果虚拟内存使用较多,可能系统的物理内存比较吃紧,需要采取合适的方式来减少物理内存的使用。swapd不为0,并不意味物理内存吃紧,如果swapd没变化,si、so的值长期为0,这也是没有问题的

      

 

free: the amount of idle memory.
 
       空闲的物理内存的大小
       buff: the amount of memory used as buffers.
 
       用来做buffer(缓存,主要用于块设备缓存)的内存数,单位:KB
       cache: the amount of memory used as cache.
 
       用来做cache(缓存,主要用于缓存文件)的内存,单位:KB
       inact: the amount of inactive memory. (-a option)
 
       inactive memory的总量
       active: the amount of active memory. (-a option)
 
 
       active memroy的总量。
 
 
Swap
       si: Amount of memory swapped in from disk (/s).
 
        从磁盘交换到内存的交换页数量,单位:KB/秒。
 
       so: Amount of memory swapped to disk (/s).
        从内存交换到磁盘的交换页数量,单位:KB/秒

 

        内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。

   当看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,这个是不正确的。不能光看这一点,还要结合si和so,

    如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。


       当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,

   这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,

   但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。

 

IO
       bi: Blocks received from a block device (blocks/s).
 
        每秒从块设备接收到的块数,单位:块/秒 也就是读块设备。
 
       bo: Blocks sent to a block device (blocks/s).
 
        每秒发送到块设备的块数,单位:块/秒  也就是写块设备。
 
System
       in: The number of interrupts per second, including the clock.
 
        每秒的中断数,包括时钟中断
 
       cs: The number of context switches per second. 
        每秒的环境(上下文)切换次数。比如我们调用系统函数,就要进行上下文切换,而过多的上下文切换会浪费较多的cpu资源,这个数值应该越小越好。
 
CPU
       These are percentages of total CPU time.
 
       us: Time spent running non-kernel code. (user time, including nice time)
 
        用户CPU时间(非内核进程占用时间)(单位为百分比)。 us的值比较高时,说明用户进程消耗的CPU时间多
 
       sy: Time spent running kernel code. (system time)
 
         系统使用的CPU时间(单位为百分比)。sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
 
       id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
 
        空闲的CPU的时间(百分比),在Linux 2.5.41之前,这部分包含IO等待时间。
 
       wa: Time spent waiting for IO. Prior to Linux 2.5.41, shown as zero.
 
        等待IO的CPU时间,在Linux 2.5.41之前,这个值为0 .这个指标意味着CPU在等待硬盘读写操作的时间,用百分比表示。wait越大则机器io性能就越差。说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
 
    st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.