Something

首页 / 文章 / RSS

Linux vmstat命令:虚拟内存统计

vmstat (Virtual Memory Statistics的缩写)是Linux/Unix系统中用于监控虚拟内存、进程、CPU活动的命令。它提供了一种查看系统整体性能状态的方法,包括CPU使用率、内存使用情况、虚拟内存交换情况以及I/O读写情况。虽然 vmstat 提供了全面的系统状态信息,但它不足之处在于无法对单个进程进行深入分析。

vmstat命令的使用

vmstat 命令通常通过两个数字参数来使用,第一个参数是采样的时间间隔数(单位是秒),第二个参数是采样的次数。例如, vmstat 2 1 表示每两秒采集一次服务器状态,只采集一次。如果想要持续监控,可以只指定时间间隔,如 vmstat 2 ,这样 vmstat 会每两秒采集数据,直到手动停止命令。

vmstat 输出参数

进程(Proc)

  • r:运行队列的进程数,即分配到CPU的进程数。当这个值超过CPU数量时,可能会出现CPU瓶颈。
  • b:等待I/O的进程数。

内存(Memory)

  • swpd:使用的虚拟内存大小(单位:KB),如果这个值大于0,表示物理内存可能不足。
  • free:空闲的物理内存大小(单位:KB)。
  • buff:用于Buffer的内存大小(单位:KB)。
  • cache:用于Cache的内存大小(单位:KB)。

交换空间(Swap)

  • si:每秒从磁盘读入虚拟内存的大小,如果这个值大于0,可能表示物理内存不足或存在内存泄露。
  • so:每秒虚拟内存写入磁盘的大小。

IO

  • bi:块设备每秒接收的块数量,默认块大小是1024字节。
  • bo:块设备每秒发送的块数量。

系统(System)

  • in:每秒的中断次数。
  • cs:每秒的上下文切换次数

CPU

  • in:每秒CPU的中断次数,包括时间中断。
  • cs:每秒上下文切换次数。
  • us:用户CPU时间。
  • sy:系统CPU时间。
  • id:空闲CPU时间。
  • wa:等待I/O的CPU时间。

vmstat命令的高级用法

除了基本的使用方法外,vmstat还提供了一些高级选项,例如:

  • vmstat -a:显示活跃和非活跃内存。
  • vmstat -f:显示从系统启动至今的fork数量。
  • vmstat -s:显示内存使用的详细信息。
  • vmstat -d:查看磁盘的读/写情况。
  • vmstat -p /dev/sda1:显示指定磁盘分区的统计信息。
  • vmstat -m:查看系统的slab信息。

在使用 vmstat 进行性能监控时,需要注意的是,如果运行队列(r)经常大于4,空闲CPU时间(id)经常少于40%,则表明CPU负荷较重。如果块设备的读写(bi和bo)长期不为0,表明内存可能不足。如果磁盘的读写(disk)经常不为0,并且等待I/O的进程队列(b)大于3,表明I/O性能可能不佳。

通过对 vmstat 命令输出的理解和分析,系统管理员可以对Linux系统进行性能调优,以确保系统的高稳定性和可靠性。