`
QING____
  • 浏览: 2234179 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

vmstat命令学习

 
阅读更多

    vmstat命令比较常用,对于分析linux系统性能很有帮助。

    1、“vmstat -a -S m 1 5”

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 2  0      0    230   3034  27812    0    0     0     8 4331 3563  5  1 94  0  0	
 1  0      0    213   3035  27829    0    0     0     8 4375 3432  5  1 94  0  0

 

    两个可选参数:"1"表示每秒测量和报告一次,即频率;"5"表示总共报告的次数;上述例子表示每秒测量一次、共测量5次(打印5条);如果未指定第二个参数,则会一直测量下去。"-a"表示展示额外信息(incat、active),"-S m"内存数据部分以“m”为单位(默认为kb)。

 

    从结果中,可以看到,vmstat会打印有关内存、IO、CPU等信息,均为全局的;当我们需要从整体查看系统性能时,很有用。

    1、procs(进程):

        1)r:等待CPU的进程数;如果此值持续较高,说明CPU可能有瓶颈了。

        2)b:处于(uninterruptible sleep)状态的进程(D状态),之所以将这种状态的进程数特别展示出来,因为“不可打断的休眠”进程,跟我们通常意义上的“假死”进程很像,主要发生在IO等待直到资源返回才能唤醒,它不支持外部的唤醒型号(比如 kill -9)。这种状态的进程出现(或者多)通常与磁盘、NFS等外设故障有关,如果太多的D状态进程可能潜在导致CPU load增高(CPU利用率可能不高,因为这种状态下进程不消耗CPU)。

 

    2、Memory(默认单位kb):

        1)swpd:总虚拟内存大小(swap cached)禁用swap时,此值通常为0。此值较大时,表明物理内存在一定程度上不足,导致了swap,可能需要扩容内存了。

        2)free:空闲内存大小。(未分配、未使用)此值小,表示可供分配给进程(新)的空闲内存较少,但是并不表名实际可用内存也不足,这还需要关注cached内存部分。

        3)buff:磁盘IO或者网络IO读写时所占用的缓冲区内存大小,此值通常不会太大,IO调用结束后即伴随回收,主要用途提高IO效率。

        4)cache:缓存区内存大小。

        5)inact:inactive memory,非活跃缓存的大小。在IO操作时(磁盘文件)数据的pages-in的数据(内核态)缓存起来可以被多个进程访问以提高效率。“非活跃”表示缓存数据在一定时间内未被访问,可以被清理。

        6)active:active memory,活跃缓存的大小,正在(或者最近)被进程访问的也缓存数据大小;一段时间后如果未被访问,则会被迁移到inactive中。linux系统将使用LRU算法回收。此值大,不会有太大问题,其可以在进程需要内存是,按需回收;操作系统会尽可能多的使用cache来优化IO访问。(我们也可以使用指令回收cache)

    3、Swap(如果swap开启)

        1)si:从磁盘swap到内存中的数据大小。

        2)so:从内存中swap到磁盘中的内存大小。如果开启了swap,且物理内存不足时,此值通常很大。

    4、io(磁盘)

        1)bi:块设备(block device)每秒接收的快数量,默认块大小为1kb,我们根据此值可以推算磁盘写入能力,如果并发的、持续的文件写操作,此值通常很大。(尚不能推断磁盘性能瓶颈)。

        2)bo:块设备每秒发送的快数量。

    5、System:

        1)in:每秒中断次数(CPU),软 + 硬;对于异步网络IO、NIO(非阻塞多路复用)的应用系统,通常此值加高。如果异常的高(每秒数万次)并连带CPU利用率较高,需要考虑程序设计的问题。

        2)cs:每秒上下文切换测试。此值过高且连带CPU利用率较高或者load较高时,需要排查;比如较高的网络并发、超出实际的线程池并发操作,都可能导致此值超高。

    6、CPU(基于所有CPU时间占比计算):

        1)us:用户进程所占CPU时间比。

        2)sy:系统内核所占CPU时间比。

        3)wa:同iowait。

        4)st:虚拟机窃取时间。

 

 

    "vmstat -d" 用于查看磁盘IO相关数据。

    "vmstat -s" 用于查看有关详细的内存统计信息。

 

参考:

1、进程状态(D):http://blog.51cto.com/echo1937/1286437

2、https://www.thomas-krenn.com/en/wiki/Linux_Performance_Measurements_using_vmstat

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics