1.命令简介

vmstat(Virtual Memory Statistics)命令用于报告虚拟内存状态的统计信息。

vmstat 不仅可以监测虚拟内存,也可监测进程、物理内存、内存分页、磁盘和 CPU 等的活动信,是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。

vmstat 属系统管理员命令,属于 sysstat 软件包,RedHat 系的 Linux 可以用 yum install sysstat 直接安装。

2.命令格式

vmstat [OPTIONS] [DELAY [COUNT]]

DELAY 表示报告之间的间隔(秒)。如果没有指定间隔,仅打印一条自系统启动以来的平均统计信息。

COUNT 表示报告的次数,如果指定了 DELAY,没有指定 COUNT,表示无限次报告。

3.选项说明

-a, --active显示活跃和非活跃内存
-f, --forks显示从系统启动至今的 fork 数量 。这包括 fork、vfork 和 clone 系统调用,并相当于创建的任务总数。每个进程由一个或多个任务表示,这取决于线程的使用情况
-m, --slabs显示 slabinfo
-n, --one-header只在开始时显示一次各字段名称
-s, --stats显示各种事件计数器和内存统计信息的表
-D, --disk-sum报告一些有关磁盘活动的汇总统计数据
-d, --disk显示磁盘相关统计信息
-p, --partition DEVICE显示指定磁盘分区统计信息
-S, --unit CHAR使用指定单位显示。CHAR 可取值有 k(1000)、K(1024)、m(1000000) 、M(1048576)。默认单位为 K(1024 Bytes)
-t, --timestamp将时间戳附加到每行
-w, --wide宽输出模式,输出大于 80 个字符/行
-h, --help显示帮助信息并退出
-V, --version显示版本信息并退出

4.常用示例

(1)显示系统各项统计信息。

vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st1  0      0 9120876 554900 5998224    0    0     0     6    1    2  0  0 100  0  0

vmstat 命令执行结果共分为 6 部分:procs、memory、swap、io、system、cpu。

输出内容的含义如下:

procs(进程)
r(run)运行或等待 CPU 时间片的进程数。如果该值长期大于服务器 CPU 的个数,则说明 CPU 资源不足
b(block)等待 I/O 的进程数量。该数值如果长时间大于 1,则表明系统 I/O 遇到瓶颈memory(内存,单位 KB)
swpd虚拟内存(swap 空间)已使用的大小
free空闲的物理内存的大小
buff用作缓冲的内存大小,一般存放待写入磁盘的数据
cache用作缓存的内存大小,一般存放从磁盘中读取的数据swap(虚拟内存,单位 KB)
si每秒从交换区写到内存的大小
so每秒写入交换区的内存大小io(单位 块/秒)
bi每秒读取的块数(读磁盘)
bo每秒写入的块数(写磁盘)system(系统)
in每秒 CPU 的中断次数,包括时钟中断
cs每秒上下文切换数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进行上下文切换,这个值越小越好cpu(以百分比显示)
us用户进程执行时间
sy系统进程执行时间
id空闲时间(包括 IO 等待时间)
wa等待 IO 时间。wa 的值高时,说明 IO 等待比较严重,这可能由于磁盘大量做随机访问造成的,也有可能是磁盘出现瓶颈
st被偷走的 CPU 时间

(2)每隔 1s 报告 3 次系统各项统计信息。

vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st1  0      0 9120312 554900 5999148    0    0     0     6    1    2  0  0 100  0  00  0      0 9120048 554900 5999148    0    0     0     0  836  785  0  0 100  0  01  0      0 9120064 554900 5999148    0    0     0    52  834  815  0  0 100  0  0

(3)显示活跃和非活跃内存。

vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st1  0      0 9124948 2119956 4194464    0    0     0     6    1    2  0  0 100  0  0

使用 -a 选项显示活跃和非活跃内存时,所显示的内容除增加 inact 和 active 外,其他显示内容与不使用选项的 vmstat 输出的内容相同。

字段说明:

inact:非活跃内存大小
active:活跃的内存大小

(4)查看系统自启动以来已经 fork 了多少次。

vmstat -f
5245186 forks

(5)显示内存相关统计信息及多种系统活动数量。

     16165976 K total memory491596 K used memory4194836 K active memory2119968 K inactive memory9124404 K free memory554900 K buffer memory5995076 K swap cache0 K total swap0 K used swap0 K free swap1660593 non-nice user cpu ticks26 nice user cpu ticks1987770 system cpu ticks1606632174 idle cpu ticks148581 IO-wait cpu ticks2 IRQ cpu ticks9090 softirq cpu ticks0 stolen cpu ticks2376421 pages paged in89871709 pages paged out0 pages swapped in0 pages swapped out1698946367 interrupts1672804654 CPU context switches1580713782 boot time5245774 forks

这些信息的分别来自于 /proc/meminfo、/proc/stat 和 /proc/vmstat。

(6)查看磁盘的读写。

vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------total merged sectors      ms  total merged sectors      ms    cur    sec
vda    77168  53491 3302309  349900 3094238 3196966 162673698 7600604   0   1531
vdb    34381    237 1428906  106216 257198 238871 17119528 3120952      0    117

这些信息主要来自于 /proc/diskstats。

输出字段说明:

disk 磁盘名reads
total读取成功的数据总大小
merged合并的读请求数
sectors成功读取的扇区数
ms读取所花费的毫秒数Writes
total写入成功的数据总大小
merged合并的写请求数
sectors成功写入的扇区数
ms写入所花费的毫秒数IO
cur当前处于 I/O 等待的进程
sI/O 花费的秒数

(7)查看系统的 slab 信息。

Cache                       Num  Total   Size  Pages
kmalloc-8192                108    128   8192      4
kmalloc-4096                407    488   4096      8
kmalloc-2048               1093   1168   2048     16
...

由于内核会有许多小对象,这些对象构造销毁十分频繁,比如 i-node,dentry,这些对象如果每次构建的时候就向内存要一个页(4KB),而其实只有几个字节,这样就会非常浪费,为了解决这个问题,就引入了一种新的机制来处理在同一个页中如何分配小存储区,而 slab 可以对小对象进行分配,这样就不用为每一个对象分配一个页,从而节省了空间。内核对一些小对象创建析构很频繁,slab 对这些小对象进行缓冲,可以重复利用,减少内存分配次数。


参考文献

[1] vmstat(8) manual
[2] sysstat 官网
[3] 博客园.每天一个linux命令(46):vmstat命令

Linux 命令(125)—— vmstat 命令相关推荐

  1. avast! for linux/unix servers,最常见的Linux/Unix监控工具vmstat命令详解

    最常见的Linux/Unix监控工具vmstat命令详解 vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率.内存使用.虚拟内存交换 ...

  2. linux vmstat_Linux中vmstat命令指南

    linux vmstat An acronym for "Virtual Memory Statistics", the vmstat command is a Linux uti ...

  3. Linux命令之vmstat命令

    一.命令简介 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体情况进行统计,不足之处是无法对 ...

  4. linux查看内存命令(查看进程虚拟内存)free命令、vmstat命令、pmap命令(free指令、vmstat指令、pmap指令)

    文章目录 查看系统内存状态 free命令 vmstat命令 pmap pmap命令 查看系统内存状态 查看系统内存情况的方式有很多,free. vmstat等命令都可输出当前系统的内存状态,需要注意的 ...

  5. Linux 命令之 vmstat 命令-显示虚拟内存状态

    介绍 vmstat 命令的含义为显示虚拟内存状态("Virtual Memory Statistics"),但是它可以报告关于进程.内存.I/O等系统整体运行状态. 常用选项 选项 ...

  6. w命令、vmstat命令、top命令、sar命令、noload命令

    为什么80%的码农都做不了架构师?>>>    使用w命令查看系统负载 [root@yolks1 ~]# w23:05:05 up 1:18, 1 user, load averag ...

  7. sar命令和vmstat命令详解

    sar命令 options 为命令行选项,sar命令常用选项如下: -A:所有报告的总和 -u:输出CPU使用情况的统计信息 -v:输出inode.文件和其他内核表的统计信息 -d:输出每一个块设备的 ...

  8. Linux iostat和vmstat命令

    http://blog.csdn.net/tinyhare/article/details/7999829 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统 ...

  9. Linux vmstat命令详解:监控系统资源

    如果你想动态的了解一下系统资源的使用状况,以及查看当前系统中到底是哪个环节最占用系统资源,就可以使用 vmstat 命令. vmstat命令,是 Virtual Meomory Statistics( ...

  10. 显示器 Linux 性能 18 (一个命令行工具传递)

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因. ...

最新文章

  1. 深度 | 用代码构建机器心智,我们离这个目标还有多远?
  2. JAVA设计模式之装饰模式
  3. centos 重启网卡_CentOS6 网络管理之网卡配置及简单路由设置
  4. jenkins部署java项目之小白的笔记
  5. HDU-1232 畅通工程
  6. PyTorch 深度学习:32分钟快速入门——DenseNet
  7. java B2B2C Springboot多租户电子商城系统-Spring Cloud Stream(消息驱动)
  8. 设计模式之GOF23代理模式02
  9. 娇小可人女友9号 4K无反相机松下GF9评测
  10. 手机如何使用USSD命令设置呼叫转移
  11. MESYS-轴和轴承的设计制造软件
  12. 无法打开源文件“QtWidgets/QMainWindow“的问题
  13. Kubernetes安装EFK日志收集
  14. 虚拟化开源技术有哪些_您使用哪些开源虚拟化工具?
  15. 电脑安装两个jdk版本无法切换 同时安装JDK8和JDK16 配置JAVA_HOME为JDK8但 java 和 javac 版本都是16
  16. 30个令人捧腹的关于码农和编程的笑话
  17. 树莓派浏览网页,显示无法打开此网址
  18. 深度调研车路协同智慧高速全国建设情况(下)
  19. Win10任务栏透明
  20. 如何使用CSS3实现一个3D泡沫图形

热门文章

  1. CISA 发布关于 Treck TCP/IP 栈中新漏洞的 ICS 安全公告
  2. 从 CVE-2020-1048 到 CVE-2020-17001:Windows打印机模块中多个提权漏洞分析
  3. Apache Shiro权限绕过漏洞 (CVE-2020-11989) 挖掘分析和复现
  4. C#订阅与发布标准实现
  5. activeMQ 问题
  6. 数据类型即其相互转换
  7. 《云服务器》与《传统服务器》的区别
  8. 在EditPlus里直接运行PHP
  9. SourceInsight下面一直出现unable to write to temp file for saving operation 这样的提示
  10. java实现多线程抢单_来聊一聊3种实现JAVA多线程的方式吧