柴少鹏的官方网站 技术在分享中进步,水平在学习中升华

linux性能检测之vmstat详解

# yum -y install sysstat  #vmstat和iostat命令集成在sysstat(系统监视工具)包里面。

一、vmstat介绍

1.1 vmstat简介

      vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat 工具提供了一种低开销的系统性能观察方式。因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结果。


1.2 vmstat命令格式

vmstat [-a] [-n] [-t] [-S unit] [delay [ count]]

vmstat [-s] [-n] [-S unit]

vmstat [-m] [-n] [delay [ count]]

vmstat [-d] [-n] [delay [ count]]

vmstat [-p disk partition] [-n] [delay [ count]]

vmstat [-f]

vmstat [-V]


1.3 vmstat选项

-a : 显示活跃和非活跃内存

-f  :  显示自启动以来的fork数。这包括fork,vfork和clone系统调用,相当于创建的任务总数。每个过程,由一个或多个任务发送,取决于线程使用。

-t : 在每条信息的末尾,显示收集信息的时间

-m :显示slabinfo,slabinfo信息记录在/proc/slabinfo文件中。slab是linux的一个内存分配机制。

-n : 只在开始时显示一次字段名,针对多次收集信息的情况输出人性化一点。

-s : 显示内存相关的统计信息。

delay是以秒为单位的更新之间的延迟。如果未指定延迟,则自引导以来仅打印一个报告的平均值。

count是更新的数量。如果未指定计数并定义延迟,则计数默认为无穷大。

-d:报告磁盘统计信息。

-w:对于大内存大小,放大字段宽度。

-p:后跟一些分区名称以获取详细统计信息。

-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)

-V :显示vmstat版本信息。


博文来自:www.51niux.com

1.4 VM模式的说明

# 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      0 2997244 170352 446800    0    0     0     1    2    4  0  0 100  0  0

进程:

#r:运行队列,当这个值超过cpu的数量,就会出现CPU瓶颈了。

#b:阻塞的(I/O)进程数量。

内存:

#swpd:所使用的虚拟内存量。0是状态良好,如果大于0说明物理内容不足或者程序内存泄露了。

#free  :空闲内存的数量。默认但是为KB。

#buff: 用作缓冲区的内存量。通常缓存着写进的数据。

#cache:用作缓冲区的内存量。通常缓存着读的数据。

swap分区:

#si:从磁盘交换的内存量(/ s)。每秒从磁盘读入虚拟内存的大小。如果大于0说明内存里的数据在向swap分区写东西,说明物理内存可能不够用或者内存泄露了。

#so : 每秒虚拟内存写入磁盘的大小。如果值大于0,同上。

#bi:从块设备接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte。这里是读磁盘。

#bo:发送到块设备的块(块/ s)。每秒写入的块数。这里是写磁盘。

系统:

#in:每秒CPU的中断次数,包括时间中断。

#cs:每秒产生的上下文切换次数,in和cs这两个值越大,内核消耗cpu时间越大

CPU:

#us : 用户进程执行时间百分比(user time) us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。  

#sy : 内核系统进程执行时间百分比(system time) sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。  

#id:空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

#wa:  IO等待时间。以百分比表示。如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。

#st:  虚拟机占用的时间百分比。


博文来自:www.51niux.com

二、示例

2.1 刷新频率

#vmstat 2 2  #这里的意思是每隔2秒刷新一次,输出两次之后结束。

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 3304480 728000 176748 8224960    0    0     6   126    0    0  9  1 90  0  0

 1  0 3304480 727976 176748 8224960    0    0     0   330 5481 5745 23  2 75  0  0

#vmstat 1  #这里是每隔1分钟舒心一次,如果不CTRL+C强制退出的话,会一直刷新

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 3304396 715684 176784 8236880    0    0     6   126    0    0  9  1 90  0  0

 0  0 3304396 716228 176784 8236880    0    0     0    32 1062  535  7  0 93  0  0

 0  0 3304396 716360 176784 8236880    0    0     0    16  889  447  6  0 93  0  0

 1  0 3304396 715996 176784 8236880    0    0     0   112 1251  567 10  0 90  0  0

 1  0 3304396 716120 176784 8236880    0    0     0   172 1360  813  9  0 91  0  0

 0  0 3304396 716120 176784 8236880    0    0     0    48  622  534  3  0 97  0  0

^C


2.2 显示活跃与非活跃内存

# vmstat -a    

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st

 0  0      0 2996500 109608 531848    0    0     0     1    2    4  0  0 100  0  0

#inact为不活跃内存,单位是KB

#active为活跃内存


2.3 显示fork数量

# vmstat -f

        29268 forks


2.4 -t参数的使用

# vmstat -t 2 2   #在每条信息的尾部显示收集信息的时间

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 0  0      0 2996624 170356 447988    0    0     0     1    2    4  0  0 100  0  0 2017-03-21 14:36:19 CST

 0  0      0 2996484 170356 447988    0    0     0    16   69   46  0  0 100  0  0 2017-03-21 14:36:21 CST


2.5 -s 显示内存的统计信息

# vmstat -s  #现在再加刷新频率的参数啊输出几次啊,是不起作用的。这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat。

      3866672  total memory

       870668  used memory

       532028  active memory

       109608  inactive memory

      2996004  free memory

       170356  buffer memory

       448148  swap cache

      4296700  total swap

            0  used swap

      4296700  free swap

       151380 non-nice user cpu ticks

         1536 nice user cpu ticks

       164499 system cpu ticks

    761187647 idle cpu ticks

        41213 IO-wait cpu ticks

          164 IRQ cpu ticks

        17221 softirq cpu ticks

         3753 stolen cpu ticks

       347420 pages paged in

      5550218 pages paged out

            0 pages swapped in

            0 pages swapped out

    100823150 interrupts

     73452064 CPU context switches

   1488174820 boot time

        29313 forks


2.6 -w和不加-w的区别

# vmstat -w

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          0    2995880     170356     448152    0    0     0     1    2    4   0  0 100  0  0

# 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      0 2996004 170356 448152    0    0     0     1    2    4  0  0 100  0  0


2.7 -d打印磁盘信息和-n只在开始时显示一次字段名和-p的用法

#vmstat -d 1 -n  #信息来源于/proc/diskstats,-n用在这里可以让其只显示一次字段名

# vmstat -p /dev/vda3 1 5

vda3          reads   read sectors  writes    requested writes

               15953     666578     927210   11103888

               15953     666578     927210   11103888

               15953     666578     927210   11103888

               15953     666578     927210   11103888

               15953     666578     927210   11103888

#reads:来自于这个分区的读的次数

#read sectors:来自于这个分区的读扇区的次数

#writes:来自于这个分区的写的次数

#requested writes:来自于这个分区的写请求次数


2.8 -S的使用

#vmstat 2 2 -S M  #让内存以MB的形式显示

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    821    194   2900  21557    0    0   199    72    0    0  2  1 97  0  0

 0  0    821    194   2900  21531    0    0 11264   196 1837 1439  0  2 98  0  0

作者:忙碌的柴少 分类:linux性能检测工具 浏览:1982 评论:0
留言列表
发表评论
来宾的头像