vmstat和iostat

时间:2022-10-17 05:33:05

一.vmstat
1.命令示例
#vmstat 5
每5秒输出一次

2.输出详解
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 168 2226204 538428 11535444 0 0 1 30 0 0 7 1 91 1 0
1 0 168 2210472 538428 11535536 0 0 1 398 2398 2447 15 1 83 1 0
1 0 168 2195204 538432 11535748 0 0 0 302 1695 2151 18 1 80 1 0
1 0 168 2194516 538432 11535812 0 0 0 238 1725 1630 10 1 88 1 0
0 0 168 2213564 538432 11535924 0 0 0 731 1938 1387 9 1 89 2 0
0 0 168 2230240 538436 11536060 0 0 13 245 2179 1503 12 1 87 1 0
5 0 168 2247308 538436 11536160 0 0 1 294 1602 1631 9 1 89 1 0

proc
栏r显示有多少进程在等待cpu时间,栏b显示处于不可中断的休眠的进程数量这通常意味着I/O等待

memory
swpd显示被交换到磁盘的数据库数量,剩下的三列显示未使用的数据库的数量,用于缓存的数据块的数量,用于操作系统的数据块的数量

swap
显示了交换动作:操作系统每秒从磁盘上交换到内存和从内存交换到磁盘的数据块数量.监视该项比swpd重要的多.
大部分情形下si和so都应该是0,并且每秒不超过10个数据块.

IO
每秒从设备读入(bi)和写入(bo)到设备的数据块数量,这通常能反应磁盘IO

system
显示了每秒发生中断的数量(in)列和上下文交换的数量(cs)

cpu
us列:运行用户代码时间
sy:系统代码时间
id:空闲
wa:等待io的cpu时间
st:如果使用了虚拟化,显示了从虚拟机偷来的百分比

二.iostat
1.命令示例
#iostat -dx 5

每隔5秒监控显示一次

2.输出示例
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.20 39.90 0.51 20.96 21.51 486.93 23.68 0.04 1.72 1.00 2.14
sda1 0.00 0.00 0.00 0.00 0.00 0.00 5.76 0.00 66.30 48.68 0.00
sda2 0.03 30.04 0.40 18.44 13.64 387.85 21.31 0.02 1.10 0.73 1.37
sda3 0.00 0.00 0.00 0.00 0.00 0.00 161.04 0.00 36.44 23.50 0.00
sda4 0.00 0.00 0.00 0.00 0.00 0.00 2.00 0.00 7.00 7.00 0.00
sda5 0.17 9.86 0.11 2.53 7.87 99.08 40.63 0.02 6.11 7.57 1.99

%util,通常显示了设备的利用率

计算并发
并发 = (r/s + w/s)*(svctm/1000)

并发 = (avgqu-sz * svctm) / await

三.CPU密集型和IO密集型
1.cpu密集型
#vmstat 5

通常cs列,上下文切换会很大,us列已达到80%以上

#iostat -dx 5
则显示磁盘利用率(%util列)不足50%

2.io密集型
#vmstat 5
wa列很高

#iostat -dx 5
%util列很高