说来惭愧,玩Linux这么久了,居然没有玩转vmstat这个命令,对很多指标的具体意义都有点模糊不清,花了点时间好好学习、整理一下这个命令的相关资料。因为这个命令确实比较重要,而且频繁用到。

命令简介:

 

 

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

指令所在路径:/usr/bin/vmstat

注意事项: 本文实验、总结环境为RHEL 5.7,vmstat在不同版本的Unix与Linux有所差别,使用时,最好先参考对应操作系统的vmstat版本。

命令手册中的介绍如下:

DESCRIPTION

 

    vmstat  reports  information about processes, memory, paging, block IO,

traps, and cpu activity.

The first report produced gives averages since the last reboot.   Addi-

tional  reports  give information on a sampling period of length delay.

The process and memory reports are instantaneous in either case.

 

命令语法:

 

vmstat [-a] [-n] [-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]

 

 

命令参数:

 

 

    此命令参数是Red Hat Enterprise Linux Server release 5.7下vmstat命令参数,不同版本Linux的cp命令参数有可能不同。不过默认应该都是[ delay [ count ] ] ,delay是间隔,count显示多少次信息。可以和上面的某些参数结合使用。

参数

英文描述

描叙

delay

刷新时间间隔。如果不指定,只显示一条结果。

count

刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。

-a

The -a switch displays active/inactive memory, given a 2.5.41 kernel or better.

开启显示active/inactive memory。

-f

The -f switch displays the number of forks since boot.  This includes the fork, vfork,  and  clone  system calls,  and is equivalent to the total number of tasks created. Each process is represented by one or more tasks, depending on thread usage.  This display does not repeat.

显示此系统启动以来的forks的总数,包括fork、vfork和clone system calls

-m

The -m displays slabinfo

显示slabinfo信息

-n

The -n switch causes the header to be displayed only once rather than periodically.

只显示头信息,不周期性显示.也就是说开启这个参数,只显示头部信息一次。

-s

The -s switch displays a table of various event counters and memory statistics. This display does not repeat.

显示各种事件计数器表和内存统计信息,这显示不重复。

-d

The -d reports disk statistics (2.5.70 or above required)

显示磁盘统计数据(内核要求2.5.70 或以上)

-w

The -w enlarges field width for big memory sizes

可以扩大字段长度,当内存较大时,默认长度不够完全展示内存。

-p

The -p followed by some partition name for detailed statistics (2.5.70 or above required)

显示磁盘分区数据(disk partition statistics )

-S

The -S followed by k or K or m or M switches outputs between 1000, 1024, 1000000, or 1048576 bytes

参数S控制输出性能指标的单位,k(1000) K(1024) 或 M(1048576) 默认单位为K(1024 bytes)

-V

The -V switch results in displaying version information.

查看vmstat命令的版本

 

 

输出字段意义:

 

 

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.

 

使用示例:

 

 

1: 查看vmstat命令的帮助信息

[root@DB-Server ~]# man vmstat

2: 显示活动(active)与非活动(inactive)的内存

[root@DB-Server ~]# vmstat -a 2 10

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 242752  56264 1294680 2365840    0    0     1    18    2    2  0  2 97  0  0

 1  0 242752  56504 1294676 2365736    0    0     0     0 1010  511  0  1 100  0  0

 0  0 242752  55844 1294716 2366616    0    0     0    16 1011  768  1  5 94  0  0

 0  0 242752  56760 1294716 2365888    0    0     0   190 1015  554  0  1 99  0  0

 0  0 242752  55472 1294744 2366636    0    0     0     0 1007  751  1  6 94  0  0

 0  0 242752  56636 1294748 2365904    0    0     0    16 1009  554  0  1 99  0  0

 0  0 242752  55844 1294772 2366656    0    0     0   178 1020  746  1  6 93  0  0

 0  0 242752  56884 1294768 2365940    0    0     0     0 1007  543  0  1 99  0  0

 1  0 242752  55208 1294816 2367220    0    0     0   206 1021  726  0  4 95  0  0

 0  0 242752  56760 1294796 2365960    0    0     0    16 1009  606  0  2 98  0  0

3:不加任何参数,vmstat命令只输出一条记录,这个数据是自系统上次重启之后到现在的平均数值。

[root@DB-Server ~]# 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 242752  32496 112680 2724840    0    0     1    18    3    2  0  2 97  0  0

4:显示各种事件计数器表和内存统计信息,这显示不重复。

[oracle@mylnx01 bdump]$ vmstat -s

     33011144  total memory

     32799072  used memory

     24606736  active memory

      6175700  inactive memory

       212072  free memory

        52288  buffer memory

     30158708  swap cache

     12582904  total swap

       610348  used swap

     11972556  free swap

     44159969 non-nice user cpu ticks

         8172 nice user cpu ticks

      6077972 system cpu ticks

    389217442 idle cpu ticks

     40807984 IO-wait cpu ticks

       123964 IRQ cpu ticks

       383333 softirq cpu ticks

            0 stolen cpu ticks

  10331447387 pages paged in

   2287459081 pages paged out

      1524480 pages swapped in

      1433512 pages swapped out

   2358479992 interrupts

   1876082783 CPU context switches

   1481100317 boot time

     15573677 forks

5:可以扩大字段长度,当内存较大时,默认长度不够完全展示内存时,会导致字段值便宜,导致查看不便

[root@DB-Server ~]# vmstat -w 2 5

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     243852      73556     110908    2678492    0    0     1    18    3    3   0  2  97  0  0

 0  0     243852      72252     110916    2678484    0    0     0   172 1016  701   0  4  95  0  0

 0  0     243852      73556     110916    2678544    0    0     0     0 1005  636   0  2  98  0  0

 0  0     243852      72004     110916    2678540    0    0     0    16 1005  694   0  5  95  0  0

 0  0     243852      73432     110924    2678580    0    0     0   192 1015  629   0  2  98  0  0

[root@DB-Server ~]# vmstat  2 5

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 243852  79284 110928 2678640    0    0     1    18    3    3  0  2 97  0  0

 0  0 243852  78988 110928 2678648    0    0     0     0 1006  753  0  5 95  0  0

 0  0 243852  80400 110936 2678696    0    0     0   194 1015  565  0  1 99  0  0

 0  0 243852  78352 110936 2678748    0    0     0    16 1008  680  0  5 95  0  0

 0  0 243852  79532 110936 2678748    0    0     0     0 1007  669  0  2 98  0  0

[root@DB-Server ~]# 

如下所示,由于有些字段值较大,导致出现下面偏移,不便查看。

6:显示磁盘分区数据(disk partition statistics )

[oracle@mylnx01 ~]$ vmstat -p sdc5 2 10

sdc5          reads   read sectors  writes    requested writes

            54270570 7234336956    8939045  276196850

            54270570 7234336956    8939045  276196850

            54270570 7234336956    8939050  276196978

            54270570 7234336956    8939053  276197074

            54270574 7234337260    8939053  276197074

            54270577 7234337292    8939066  276197346

            54270622 7234339700    8939066  276197346

            54270622 7234339700    8939069  276197442

            54270859 7234342828    8939078  276197634

            54271074 7234345452    8939080  276197666

参考资料:

http://www.linuxcommand.org/man_pages/vmstat8.html

http://www.ha97.com/4512.html

Linux监控工具介绍系列——vmstat的更多相关文章

  1. Linux监控工具介绍系列——OSWatcher Black Box

      OSWatcher Balck Box简介 OSWatcher Black Box (oswbb)是Oracle开发.提供的一个小巧,但是实用.强大的系统工具,它可以用来抓取操作系统的性能指标,用 ...

  2. Linux监控工具介绍系列——free

    在Linux系统中,我们查看.监控系统内存使用情况,一般最常用的命令就是free.free命令其实非常简单,参数也非常简单,但是里面很多知识点未必你都掌握了.下面总结一下我所了解的free命令.如有不 ...

  3. Linux监控工具介绍系列——smem

    smem工具介绍 smem是Linux系统上的一款可以生成多种内存耗用报告的命令行工具.与现有工具不一样的是smem可以报告实际使用的物理内存(PSS),这是一种更有意义的指标.可以衡量虚拟内存系统的 ...

  4. Linux监控工具介绍系列——iostat

    文章转自:https://www.cnblogs.com/ghj1976/p/5691857.html Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iost ...

  5. Linux系统性能监控工具介绍之-tsar

    Linux系统性能监控工具介绍之-tsar Linux系统性能监控工具介绍之-tsar 2017-03-02 20:25 175人阅读 评论(0) 收藏 举报  分类: LINUX调优(9)    目 ...

  6. linux分析工具之vmstat详解

    一.概述 vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.首先我们查看下帮助.如下图所 ...

  7. Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试【转】

    Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试[转] 本文是本人前一段时间做一个简单Java监控工具调研总 ...

  8. Linux性能检测命令 - vmstat

    一.vmstat命令描述 最常见的Linux/Unix监控工具想必是vmstat了,vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可以展现给定时间间隔的服务 ...

  9. linux磁盘管理系列-LVM的使用

    LVM是什么 LVM是Linux操作系统的逻辑卷管理器. 现在有两个Linux版本的LVM,分别是 LVM1,LVM2.LVM1是一种已经被认为稳定了几年的成熟产品,LVM2 是最新最好的LVM版本. ...

随机推荐

  1. SQL Server表分区

    什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在 ...

  2. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

  3. 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  4. python核心编程第二版练习题答案

    2-5 #写一个while循环,输出整型为0~10 a=0while a<11: print a a+=1 #写一个for循环重复以上操作 for i in range(11): print i ...

  5. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  6. Javascript面向对象类文章目录

    1.javaScript的原型继承与多态性 2.JavaScript的继承实现方式 3.JS中 call() 与apply 方法

  7. 就这么漂来漂去---一个毕业三个月的java程序员的裸辞风波

    注:这并不是一篇技术文章,而是记录了我这几个月经历的入职,裸辞,找工作的心路历程,简单介绍一个博主的情况,我是16年毕业生,校招进了一家北京的公司,java开发,和很多年轻人一样,干了一段时间,我发现 ...

  8. 代码的坏味道(21)——中间人(Middle Man)

    坏味道--中间人(Middle Man) 特征 如果一个类的作用仅仅是指向另一个类的委托,为什么要存在呢? 问题原因 对象的基本特征之一就是封装:对外部世界隐藏其内部细节.封装往往伴随委托.但是人们可 ...

  9. 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型

    前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.

  10. Spring aop应用之实现数据库读写分离

    Spring加Mybatis实现MySQL数据库主从读写分离 ,实现的原理是配置了多套数据源,相应的sqlsessionfactory,transactionmanager和事务代理各配置了一套,如果 ...