前言
三个命令的作用分别是:
- vmstat: 查看系统整体运行状态(ubuntu下由procps包提供)
- iostat: 监视系统输入输出设备和CPU的使用情况(ubuntu下由sysstat包提供)
- pidstat: 查看系统进程信息(ubuntu下由sysstat包提供)
vmstat
# 简单使用
# 每秒输出一组数据
vmstat 1
# 输出2秒内数据,打印3次
vmstat 2 3
# 其它选项
# -w: 输出结果显示更宽
# -t: 输出结果显示时间戳
结果解释
vmstat -w 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
1 0 0 2431504 196680 1189312 0 0 32 45 72 76 0 0 99 0 0
0 0 0 2431540 196680 1189312 0 0 0 0 175 204 0 0 100 0 0
0 0 0 2431540 196680 1189312 0 0 0 0 258 240 0 0 100 0 0
- procs
- r:正在运行和正在等待运行的进程数
- b:不可中断的睡眠
- memory
- swpd:虚拟内存使用量
- free:空闲内存量
- buff:被用作buffer的内存使用量
- cache:被用作cache的内存使用量
- swap:
- si:从硬盘写到swap的量
- so:从swap写到硬盘的量
- IO:
- bi:
- bo:
- system:
- in:每秒中断次数
- cs:每秒上下文切换次数
- cpu:
- us:用户态占用时间
- sy:内核态占用时间
- id:空闲时间
- wd:等待io时间
- st:被其它虚拟机“偷走“的占用时间
iostat
命令选项
-d: 输出设备利用率
-c:输出CPU利用率
-t:输出时间戳
-x: 显示拓展统计信息
-m: 显示状态以兆字节每秒
# 常用命令组合
iostat -d -x -m sda 2 3
结果解释
- tps: 每秒钟发送到的I/O请求数
- r/s: 每秒完成的读IO次数
- rrqm/s: 每秒合并到设备队列中的读IO请求数
- r_await: 每个读请求平均所需时间
- rareq-sz: 发送到设备的读请求平均大小
- %util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
pidstat
命令选项
-u: 显示各个进程的cpu使用统计
-r: 显示各个进程的内存使用统计
-d: 显示各个进程的IO使用统计
-p <pid>: 指定进程号
-w: 显示进程的上下文切换情况
-t: 显示线程状态
# 常用命令组合
pidstat -u -p ALL
pidstat -p 1234
结果解释
- minflt/s: 任务每秒发生的次要错误,不需要从磁盘中加载页
- majflt/s: 任务每秒发生的主要错误,需要从磁盘中加载页
- VSZ: 虚拟地址大小,虚拟内存的使用KB
- RSS: 常驻集合大小,非交换区内存使用KB