vmstat(Virtual Meomory Statistics,虚拟内存统计)
可以获取系统性能的粗略信息:
正在运行的进程个数
CPU的使用情况
CPU接收的中断个数
调度器执行的上下文切换次数
----------------------------------------
使用了多少交换分区
物理内存是如何被使用的
有多少空闲内存
----------------------------------------
提供系统整体上的I/O性能情况
用法:
# vmstat --help
usage: vmstat [-V] [-n] [delay [count]]
-V prints version.
-n causes the headers not to be reprinted regularly.
-a print inactive/active page stats.
-d prints disk statistics
-D prints disk table
-p prints disk partition statistics
-s prints vm table
-m prints slabinfo
-t add timestamp to output
-S unit size
delay is the delay between updates in seconds.
unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)
count is the number of updates.
vmstat的两种模式:采样模式和平均模式。
1)平均模式:不指定参数,vmstat显示从系统启动以来所有统计数据的平均值。
# 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 50272 2200684 248636 5715800 0 0 0 1 1 2 1 4 94 0 0
cpu -- 从启动开始,CPU有1%的时间用于执行用户应用程序代码(us),4%的时间用于执行系统代码(sy),94%的时间处于空闲状态(id);列wa表示用于I/O的时间。
memory -- 系统已有约49MB的内存交换到了硬盘(swpd);约2GB系统内存是空闲的(free);约242MB用于缓冲区,以保存还未刷新到硬盘的数据;约5.5GB用于硬盘缓存,以保存过去从硬盘读取的数据。
如果指定延迟,第一个采样仍然是系统启动以来的平均值,之后是按延迟秒数采样的统计数据。
# vmstat 2 -t
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 50272 2196688 248636 5715828 0 0 0 1 1 2 1 4 94 0 0 2020-02-25 10:37:25 CST
0 0 50272 2196688 248636 5715828 0 0 0 0 3498 9513 3 3 94 0 0 2020-02-25 10:37:27 CST
0 0 50272 2196696 248636 5715828 0 0 0 4 3481 9716 2 2 96 0 1 2020-02-25 10:37:29 CST
0 0 50272 2196696 248636 5715828 0 0 0 16 3546 10163 2 2 95 1 1 2020-02-25 10:37:31 CST
^C
2)采样模式:vmstat [delay [count]], delay指定间隔秒数,count指定采样次数
# vmstat 2 3
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 50272 2198668 248636 5715876 0 0 0 1 1 2 1 4 94 0 0
2 0 50272 2198620 248636 5715876 0 0 0 26 4045 10908 3 2 92 2 1
0 1 50272 2198044 248636 5715876 0 0 0 44 3816 9832 3 4 90 3 1
procs -- r列显示当前可运行进程数,这些进程没有等待I/O,且已经准备好运行;b列显示等待I/O完成的被阻塞的进程数。
swap -- si列显示在每个采样期间,数据的读交换率(KB);so列显示在每个采样期间,数据的写交换率(KB)。
io -- bo列表示前次间隔中被写入磁盘的总块数,bi列表示前次间隔中从磁盘读出的总块数(vmstat内磁盘的典型块大小为1024字节)。
可以使用tee命令打印的同时将结果输出到文件
vmstat 2 3 | tee test
vmstat 2 3 | tee -a test(追加)
-s选项一次性输出vmstat收集的系统统计的详细信息。该信息为系统启动后的总数据。
# vmstat -s
28743056 total memory
26548420 used memory
21617760 active memory
4352892 inactive memory
2194636 free memory
248636 buffer memory
5715932 swap cache
33554428 total swap
50272 used swap
33504156 free swap
27216148 non-nice user cpu ticks
6122 nice user cpu ticks
114801765 system cpu ticks
2495460355 idle cpu ticks
2857283 IO-wait cpu ticks
70 IRQ cpu ticks
184074 softirq cpu ticks
4031175 stolen cpu ticks
449294 pages paged in
27536506 pages paged out
376 pages swapped in
12618 pages swapped out
1113043977 interrupts
2793579371 CPU context switches
1575961704 boot time
10339975 forks --> 从系统启动开始,已经创建的新进程数量
-a选项改变内存统计信息的默认输出,显示活跃/非活跃内存量,不显示缓冲区和高速缓存使用的情况信息。如下,活跃内存有约1183MB,不活跃的内存有约1.2GB。
# vmstat -a
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 0 13555156 1286948 1211176 0 0 0 0 1 1 0 0 100 0 0