纠正错误 添加实例

vmstat

监测系统的虚拟内存、进程、CPU活动、块设备I/O等信息

补充说明

vmstat命令 的含义为显示虚拟内存状态(Viryual Memor Statics),但是它可以报告关于进程、内存、I/O等系统整体运行状态。通过该命令,我们可以获得系统的即时状态,包括内存使用情况、进程状态以及CPU的使用情况等。

适用的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

命令语法

vmstat [options] [delay [count]]

选项

-a	显示活跃和非活跃内存
-f	显示自系统启动以来发生的系统叉数量
-m	显示slabinfo
-n	显示每列一次,与延迟时间配合使用
-s	显示内存相关统计
-d	显示磁盘相关统计
-p	显示指定磁盘分区的统计
-S	设置显示单位(K、M、G),默认为K(1024 bytes)
-r	显示内存页面的统计
-t	显示时间戳信息

示例

显示基本的系统状态信息

$ 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 3029876 199616 690980    0    0     0     2    3    2  0  0 100  0  0

字段说明:

Procs(进程)

Memory(内存)

Swap

当内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘 IO 和 CPU 资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合 si 和 so,如果 free 很少,但是 si 和 so 也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

IO(现在的Linux版本块的大小为1kb)

随机磁盘读写的时候,这2个值越大(如超出1024k),能看到 CPU 在 IO 等待的值也会越大。

System(系统)

上面 2 个值越大,会看到由内核消耗的 CPU 时间会越大。

CPU(以百分比表示)

一般来说,us + sy + id =100

定时采样(常用)

# 每隔3s采样一次,一共采样10次
$ vmstat 3 10

以指定的单位显示(常用)

# 以MB为单位来显示
$ vmstat -S M

# 以MB为单位来显示,每隔3s采样一次,一共采样10次
$ vmstat -S M 3 10

显示活跃和非活跃内存

$ vmstat -a

查看内存使用的详细信息

$ vmstat -s

查看磁盘的读/写

$ vmstat -d