Linux下的vmstat
(Virtual Memory Statistics的缩写)命令是一个非常实用的工具,用于监测系统的虚拟内存、进程、CPU活动以及块设备I/O等信息,对于系统管理员来说,它是性能分析与问题诊断的重要工具。
Linux vmstat命令介绍
vmstat
,即虚拟内存统计命令,能够报告关于内核线程、虚拟内存、磁盘、陷阱和CPU活动的信息。通过该命令,我们可以获得系统的即时状态,包括内存使用情况、进程状态以及CPU的使用情况等。
Linux vmstat命令适用的Linux版本
vmstat
命令几乎在所有的Linux发行版中都是可用的。如果你发现系统中没有这个命令,可以通过包管理器安装它:
# 基于apt的发行版(如Debian、Ubuntu、Raspbian、Kali Linux等)
sudo apt-get update && sudo apt-get install procps
# 基于yum的发行版(如RedHat,CentOS 7等)
sudo yum update && sudo yum install procps-ng
# 基于dnf的发行版(如Fedora,CentOS 8等)
sudo dnf update && sudo dnf install procps-ng
# 基于apk的发行版(如Alpine Linux)
sudo apk add --update procps
# 基于pacman的发行版(如Arch Linux)
sudo pacman -Syu && sudo pacman -S procps-ng
# 基于zypper的发行版(如openSUSE)
sudo zypper ref && sudo zypper in procps
# 基于pkg的FreeBSD发行版
sudo pkg update && sudo pkg install procps
# 基于pkg的OS X/macOS发行版
brew update && brew install procps
Linux vmstat命令的基本语法
语法格式:
vmstat [options] [delay [count]]
Linux vmstat命令的常用选项或参数说明
选项 | 描述 |
---|---|
-a | 显示活跃和非活跃内存 |
-f | 显示自系统启动以来发生的系统叉数量 |
-m | 显示slabinfo |
-n | 显示每列一次,与延迟时间配合使用 |
-s | 显示内存相关统计 |
-d | 显示磁盘相关统计 |
-p | 显示指定磁盘分区的统计 |
-S | 设置显示单位(K、M、G) |
-r | 显示内存页面的统计 |
-t | 显示时间戳信息 |
以上是vmstat
的部分常用选项,不同的选项适用于不同的监控与分析场景。
Linux vmstat命令实例详解
实例1:显示基本的系统状态信息
[linux@bashcommandnotfound.cn ~]$ vmstat
这条命令将显示系统的虚拟内存状态、进程、CPU活动等基本信息。
实例2:设置间隔时间和次数
[linux@bashcommandnotfound.cn ~]$ vmstat 5 10
这条命令将每5秒显示一次系统状态,总共显示10次。
实例3:使用-a选项显示活跃和非活跃内存
[linux@bashcommandnotfound.cn ~]$ vmstat -a
这条命令将显示活跃和非活跃的内存信息。
实例4:使用-s选项显示内存相关统计
[linux@bashcommandnotfound.cn ~]$ vmstat -s
这条命令会显示更详细的内存统计信息。
实例5:使用-d选项显示磁盘相关统计
[linux@bashcommandnotfound.cn ~]$ vmstat -d
这条命令将显示每个磁盘设备的读写统计信息。
实例6:显示时间戳信息
[linux@bashcommandnotfound.cn ~]$ vmstat -t
这条命令会在输出的每一行信息中包含时间戳信息,有助于了解每项数据的具体采集时间。
实例7:自定义显示单位
[linux@bashcommandnotfound.cn ~]$ vmstat -S M
这条命令将所有显示单位设置为MB,方便阅读大量数据。
实例8:查看内存页面统计
vmstat -r
这个命令会展示关于内存页面的活动,包括页面的交换、缓存和缓冲区的使用情况。
实例9:查看Slab信息
vmstat -m
Slab是内核中内存管理的一部分,这个命令将会列出Slab缓存的信息。
实例10:查看特定磁盘分区统计
vmstat -p /dev/sda1
这个命令将显示磁盘分区/dev/sda1
的IO统计,如果你希望监控特定分区的性能,这非常有用。
实例11:以指定的单位显示信息
vmstat -S K
这个命令将所有的数据以KB单位显示。这对于查看大量内存数据非常方便,你可以根据需要替换K
为M
(兆字节)或G
(千兆字节)。
实例12:以固定间隔显示系统状态,直到被终止
vmstat 2
这个命令会每2秒刷新一次输出,直到你用Ctrl+C
终止它。这种方式允许你实时监视系统状态的变化。
实例13:查看系统启动以来的总fork数量
vmstat -f
这个命令将显示自系统启动以来所发生的fork,vfork和clone的总次数。这可以帮助你了解系统的负载情况。
实例14:连续输出系统状态并附加时间戳
vmstat 1 5 -t
这个命令每1秒输出一次系统状态,连续输出5次,并在每条信息后添加时间戳。这有助于记录在特定时间点的系统性能数据。
实例15:查看内核线程统计
vmstat -a
这个命令将提供活动和非活动内存的统计数据,这包括了在活动列表和非活动列表中的内存页面。
实例16:查看系统的CPU和IO等待时间
vmstat -w
这个命令将显示CPU的空闲时间和等待IO的时间,这有助于判断系统是否因为IO操作而导致CPU等待。
实例17:混合使用多个选项
vmstat -s -d -t
这个命令将显示内存统计(-s
),磁盘统计(-d
),以及每个输出都会附加一个时间戳(-t
)。这种混合使用选项的方式,可以同时监控多个系统性能指标。
注意事项
- 使用
vmstat
时,确保你对输出的数据有一定的理解。例如,高的si
和so
(swap-in和swap-out)值可能表示内存不足。 vmstat
的输出中CPU的id
列显示的是空闲时间百分比,如果这个值很低,表明CPU可能成为性能瓶颈。- 运行
vmstat
时,如果没有指定延迟时间和次数,它只会输出当前的瞬间状态。定期监测可能更有助于识别趋势和问题。 - 如果你需要监控特定磁盘或分区,请使用
-p
选项并指定相应的设备。 vmstat
不会消耗太多的系统资源,因此它适合长时间运行以监控系统状态。- 在分析输出时,应考虑系统的整体性能,包括CPU、内存、I/O等多个方面,而不是仅关注单一指标。
评论区