vmstat

vmstat(虚拟内存统计,Virtual Memory Statistics)是 Linux 和类 Unix 系统中的一个常用命令,用于报告系统的内存、进程、虚拟内存、磁盘 I/O、上下文切换等信息。

它能帮助系统管理员和开发人员监控系统的资源使用情况,分析性能瓶颈。

实际测试

1 次效果

$ 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 15063592   2616 302328    0    0    33     9   11   48  0  0 99  0  0

2s 刷新一次,采样 5 次

$ 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      0 15061208   2616 302412    0    0    31     8   11   47  0  0 99  0  0
 0  0      0 15060708   2616 302412    0    0     0     0   60  531  0  0 100  0  0
 0  0      0 15062192   2616 302412    0    0     0     0   76  542  0  0 100  0  0
 0  0      0 15061940   2616 302412    0    0     0     0   63  535  0  0 100  0  0
 0  0      0 15062192   2616 302412    0    0     0     0   59  531  0  0 100  0  0

基本语法

vmstat [options] [delay [count]]
  • delay:指定采样的间隔时间(单位是秒)。

  • count:指定采样的次数。

如果没有指定 delaycountvmstat 会仅输出一次统计信息。

常用选项

  • -s:显示系统的累计统计信息(如内存总量、交换空间总量等)。
  • -d:显示磁盘的统计信息。
  • -p:显示指定设备的统计信息。
  • -t:显示时间戳。
  • -f:显示页错误统计信息。
  • -m:显示内存页缓存的统计信息。

输出格式

vmstat 的输出分为两个部分:第一部分是头部,显示列名;第二部分是数据,按时间间隔采样并显示相关统计。

默认的输出格式如下:

procs  memory           swap     io   system    cpu
 r  b   swpd   free   buff  cache   si   so    bi   bo   in   cs us sy id wa st

各列的含义:

  • procs(进程):
    • r:正在运行的进程数。
    • b:处于等待I/O的进程数。
  • memory(内存):
    • swpd:已使用的交换空间(swap space)大小(KB)。
    • free:空闲内存大小(KB)。
    • buff:用于缓冲的内存大小(KB),例如文件系统缓存。
    • cache:用于页面缓存的内存大小(KB)。
  • swap(交换空间):
    • si:从磁盘交换到内存的数据量(KB/s)。
    • so:从内存交换到磁盘的数据量(KB/s)。
  • io(I/O):
    • bi:从块设备读入的数据量(KB/s)。
    • bo:写入到块设备的数据量(KB/s)。
  • system(系统):
    • in:每秒中断次数。
    • cs:每秒上下文切换次数。
  • cpu(CPU 使用情况):
    • us:用户态 CPU 时间百分比(不包括内核态)。
    • sy:内核态 CPU 时间百分比。
    • id:空闲的 CPU 时间百分比。
    • wa:等待 I/O 的 CPU 时间百分比。
    • st:被虚拟机偷取的 CPU 时间百分比(如果系统运行虚拟机)。

如何解读 vmstat 输出

  • 内存freeswpd 关键字用于检测系统是否出现内存瓶颈。swpd 不为零,表示系统正在使用交换空间,通常意味着物理内存不足。

  • CPU 使用情况:如果 us(用户态)和 sy(内核态)的总和较大,说明 CPU 负载较高。如果 wa(等待 I/O)很高,可能是 I/O 瓶颈导致 CPU 空闲。

  • 磁盘 I/Obibo 可以帮助你监控磁盘读写情况。如果这些值很高,可能是磁盘成为瓶颈的信号。

总结

vmstat 是一个非常有用的工具,可以帮助你实时监控系统资源,找出可能的性能瓶颈。

通过合理配置延迟和次数,你可以更好地理解系统的负载和状态,进而对症下药进行优化。

小结

希望本文对你有所帮助,如果喜欢,欢迎点赞收藏转发一波。

我是老马,期待与你的下次相遇。

参考资料

查看端口占用