0%

vmstat命令笔记

vmstat是一个可对Linux的虚拟内存、进程和CPU活动进行监控的轻量化工具,能对系统的整体情况进行统计,但不能深入分析某个进程。

命令使用

vmstat命令格式:

vmstat [命令选项]

vmstat命令选项:

-a		显示活跃和非活跃内存。
-f 显示从系统启动至今的fork数量。
-m 显示slabinfo。
-n 只在开始时显示一次各字段名称。
-s 显示内存相关统计信息及多种系统活动数量。
-d 显示磁盘统计信息。
-D 对磁盘统计信息进行总结。
-S <参数> 使用指定的单位显示;参数:k(1000字节)、K(1024字节)、m(1000000字节)、M(1048576字节);默认单位为K(1024字节)。
-t 显示时间戳。
-w 增大数据显示的列间隔,有助于观察。
-h 显示帮助。
-V 显示程序版本。
<x> <y> x表示数据采集的时间间隔数,单位为秒;y表示数据采集的次数。

说明

  • procs(进程)

    • r:当前运行队列中进程的数目,该值可作为判断CPU是否繁忙的一个指标。
    • b:等待IO的进程数量。
  • memory(内存)

    • 交换(swpd):已使用的虚拟内存的大小。
    • 空闲(free):空闲的物理内存的大小。
    • 缓冲(buff):用作缓冲的内存大小;用作传输速度不同步或优先级不同的设备之间传输数据时的缓冲区域,减少进程之间的相互等待。
    • 缓存(cache):用作缓存的内存大小;介于CPU与内存之间,存储着CPU刚使用过或循环使用的一部分数据,当CPU再次使用这些数据时,则从缓存中直接调用,减少CPU的等待时间。
  • swap(交换空间)

    • si:每秒从虚拟内存写入物理内存的数据大小。
    • so:每秒从物理内存写入虚拟内存的数据大小。
  • io:(默认块大小是1024字节)

    • bi:块设备每秒接收的块数。
    • bo:块设备每秒发送的块数。
  • system

    • in:设备中断,每秒CPU的中断次数,包含时间中断。
    • cs:每秒上下文切换数。
  • cpu(百分比)

    • us:用户进程执行时间。
    • sy:系统进程执行时间。
    • id:空闲时间(包括IO等待时间)。
    • wa:IO等待时间。

备注

Linux内存管理机制相关

  • Linux会不时进行内存页面交换操作,以保持尽可能多的可用物理内存,即使此时物理内存占用很低,Linux还是会进行此操作,这样在需要时可以尽量减少进程等待内存交换所需的时间甚至是避免进程等待;
  • Linux会将一些最近不经常使用的页面文件交换到虚拟内存,因此会出现这一正常现象:可用的物理内存虽然较多,但虚拟内存已使用的空间也较多;
  • 即使某进程结束并释放较多的物理内存,但被交换到虚拟内存的页面文件也不会自动重新返回物理内存,除非有必要。

补充

  • siso的值都长期大于0,则系统性能会收到影响。
  • 磁盘随机读写时,bibo的值越大,则CPU的IO等待时间的值也会越大。
  • incs的值越大,表明内核占用的CPU时间越多。
  • wa的值越大,表明IO等待越严重,可能是由于磁盘的大量随机访问,也有可能是磁盘出现性能瓶颈。

整理自

Linux vmstat命令详解

Linux常用命令 | vmstat、top

vmstat 命令详解

linux下内存实时性能监控vmstat命令详解

每天一个linux命令(46):vmstat命令