分类:
2012-12-26 17:02:15
原文地址:各种UNIX平台下vmstat与iostat输出结果详解 作者:dagun
各种unix平台下iostat与vmstst说明
一点个人积累,共享出来!
Linux下vmstat输出释疑:
Vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 100152 2436 97200 289740 0 1 34 45 99 33 0 0 99 0
procs
r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
cpu 表示cpu的使用状态
us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
id 列显示了cpu处在空闲状态的时间百分比
system 显示采集间隔内发生的中断数
in 列表示在某一时间间隔中观测到的每秒设备中断数。
cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
memory
swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
free 当前的空闲页面列表中内存数量(k表示)
buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
swap
si 由内存进入内存交换区数量。
so由内存交换区进入内存数量。
IO
bi 从块设备读入数据的总量(读磁盘)(每秒kb)。
bo 块设备写入数据的总量(写磁盘)(每秒kb)
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。
Solairs系统下vmstat输出释疑
vmstat 5 5
procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr s1 s1 -- -- in sy cs us sy id
0 0 0 704968 207640 0 1 2 0 0 0 0 0 0 0 0 302 6 31 0 0 100
0 0 0 705048 206728 1 2 0 0 0 0 0 0 0 0 0 302 4 34 0 0 100
0 0 0 705048 206728 0 0 0 0 0 0 0 0 0 0 0 302 3 35 0 0 100
0 0 0 705048 206728 0 0 0 0 0 0 0 0 0 0 0 301 3 34 0 0 100
0 0 0 705048 206728 0 0 0 0 0 0 0 0 0 0 0 302 6 35 0 0 100
procs
r 列表示在运行队列中等待的进程数。
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
w 列表示可以进入运行队列但被交换出来的进程
cpu 表示cpu的使用状态
us 列显示了用户方式下所花费 CPU 时间的百分比。一个 UNIX 进程可以在用户方式下执行,也可以在系统(内核)方式下执行。当在用户方式下时,进程在它自己的应用程序代码中执行,不需要内核资源来进行计算、管理内存或设置变量。
sy
列详述了 CPU 在系统方式下执行一个进程所花时间的百分比。这包括内核进程(kprocs)和其它需要访问内核资源的进程所消耗的 CPU
资源。如果一个进程需要内核资源,它必须执行一个系统调用,并由此切换到系统方式从而使该资源可用。例如,对一个文件的读或写操作需要内核资源来打开文
件、寻找特定的位置,以及读或写数据,除非使用内存映射文件。这里us + sy的参考值为80%,如果us+sy 大于
80%说明可能存在CPU不足。
id 列显示了没有未决本地磁盘 I/O 时 CPU 空闲或等待的时间百分比。
faults 显示采集间隔内发生的中断数
in 列表示在某一时间间隔中观测到的每秒设备中断数。iostat命令输出更有参考意义。
sy
列表示在某一时间间隔中观测到的每秒系统调用次数。通过明确的系统调用,用户进程可以使用资源。这些调用指示内核执行调用线程的操作,并在内核和该进程之
间交换数据。因为工作负载和应用程序变化很大,不同的调用执行不同的功能,所以不可能定义每秒钟有多少系统调用才算太多。这里设置参考值为10000,超
过10000,用户需要注意。
cs 列表示,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
memory
swap 当前可用内存交换区容量(k表示)。
free 当前的空闲页面列表中内存数量(k表示)
page
re 列表示回收的页面数。
mf 列表示小级别错误计数。
pi 列表示进入页面数 (k表示)。
po 列表示出页面数(k表示)。
fr 列表示空余的页面数(k表示)。
de 列表示提前读入的页面中的未命中数。
sr 列表示通过时钟算法扫描的页面计数
solairs下iostat释疑
iostat -xtc 5 2
extended device statistics tty cpu
device r/s w/s kr/s kw/s wait actv svc_t %w %b tin tout us sy wt id
sd1 0.3 0.0 3.4 0.1 0.0 0.0 13.2 0 0 0 0 0 0 0 100
sd15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0
nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0
extended device statistics tty cpu
device r/s w/s kr/s kw/s wait actv svc_t %w %b tin tout us sy wt id
sd1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 77 0 0 0 100
sd15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0
nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0
tty和CPU使用率报告
tin 显示了系统为所有 tty 读取的字符总数。
tout 显示了系统为所有 tty 写入的字符总数。
us 显示了在用户级应用程序在缺省的优先级别执行时的 CPU 使用率百分比。
sy 显示了在用户级应用程序在降低优先级执行时的 CPU 使用率百分比。
wt 显示了在系统级(内核)执行时生成的 CPU 使用率。
id 显示了 CPU 空闲期间系统有未完成的磁盘 I/O 请求时的时间百分比。
磁盘使用率报告
device 被统计的硬盘设备名,包括nfs设备。
r/s 表示每秒钟读的次数
w/s 表示每秒钟写的次数
kr/s 表示每秒钟读的K字节数
kw/s 表示每秒钟写的K字节数
wait 表示平均多少个传输等待被处理,相当于读写等待队列长度
actv 表示平均多少个传输从读写等待队列中移出做处理
svc_t 表示每次硬盘传输平均耗费的时间,以毫秒为单位,这里我们设置的参考值为30ms,超过说明硬盘负载太多
%w 表示每次传输所消耗时间里面,等待所占的百分比
%b 表示硬盘忙的时间所占百分比,这里我们设置参考值为5%,超过5%说明硬盘负载太多,最好采取以下步骤:
1.)调整应用,令其使用磁盘i/o更加有效率,可以通过修改磁盘队列、使用应用服务器的cache
2.)将文件系统分布到2个或多个磁盘上,并使用volume manager/disksuite的条带化特点
3.) 增加系统参数值,如inode cache , ufs_ninode。
AIX下vmstat释疑:
# vmstat 5 20
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
1 1 244528 1227 0 3 3 56 151 0 404 1420 1415 4 2 88 6
2 6 244538 1241 0 39 148 2424 3511 0 904 4660 7571 49 12 2 38
5 3 244540 791 0 2 221 3937 6077 0 1183 6605 24619 44 34 1 21
1 7 245326 1009 0 11 331 1071 1934 0 884 3788 13000 23 25 0 52
分析如下:
kthr
kthr列表示每秒钟在采样间隔时间上对各种队列中的内核线程数求得的平均值
r 列表示可运行的内核线程平均数,包括正在运行的线程和正在等待 CPU的线程。如果这个数字大于 CPU 的数目,至少有一个线程要等待 CPU,等待 CPU 的线程越多,越有可能对性能产生影响。
b 列表示每秒 VMM 等待队列中的内核线程平均数。这包括正在等待文件系统 I/O 的线程,或由于内存装入控制而暂挂的线程。这里参考值为2,大于2表示被阻塞列线程数目太多。
[b] !阻塞线程数目太多
CPU
us 列显示了用户方式下所花费 CPU 时间的百分比。一个 UNIX 进程可以在用户方式下执行,也可以在系统(内核)方式下执行。当在用户方式下时,进程在它自己的应用程序代码中执行,不需要内核资源来进行计算、管理内存或设置变量。
sy
列详述了 CPU 在系统方式下执行一个进程所花时间的百分比。这包括内核进程(kprocs)和其它需要访问内核资源的进程所消耗的 CPU
资源。如果一个进程需要内核资源,它必须执行一个系统调用,并由此切换到系统方式从而使该资源可用。例如,对一个文件的读或写操作需要内核资源来打开文
件、寻找特定的位置,以及读或写数据,除非使用内存映射文件。这里us + sy的参考值为80%,如果us+sy 大于
80%说明可能存在CPU不足。
id 列显示了没有未决本地磁盘 I/O 时 CPU 空闲或等待的时间百分比。
wa 列详细显示了暂挂本地磁盘 I/O 和 NFS 加载的磁盘的 CPU 空闲百分比。这里参考值为25%,大于25% 可能表示磁盘子系统可能没有被正确平衡,或者这也可能是磁盘密集工作负载的结果。
[us]+[sy] !IO不平衡
[wa] 正常
fault
in 列表示在某一时间间隔中观测到的每秒设备中断数。iostat命令输出更有参考意义。
sy
列表示在某一时间间隔中观测到的每秒系统调用次数。通过明确的系统调用,用户进程可以使用资源。这些调用指示内核执行调用线程的操作,并在内核和该进程之
间交换数据。因为工作负载和应用程序变化很大,不同的调用执行不同的功能,所以不可能定义每秒钟有多少系统调用才算太多。这里设置参考值为10000,超
过10000,用户需要注意。
cs 列表示,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
[sy] 正常
memory
avm
列表示在收集 vmstat 样本时存在的活动虚拟内存页面数(4k为单位)。理想情况下, avm 应该比总 RAM
数小。如果不是,可能会出现一些虚拟内存页面调度量。有多少页面调度发生取决于两个值之间的差值。记住,虚拟内存的概念是提供给我们寻址大于实内存容量的
能力(一些在 RAM 内存中,而另一些在调页空间中)。但是如果虚拟内存远大于实内存,可能造成过度的页面调度,从而导致延时。如果 avm 小于
RAM,那么当 RAM 中填满文件页时就会引起调页空间的页面调度。这种情况下,调整 minperm、maxperm 和 maxclient
的值可以减少调页空间的页面调度量。
fre 列显示出空闲内存页面的平均数量(4k为单位)。VMM 在空闲列表上保存的最少页面数由 minfree 参数决定。这里的参考值为maxfree的缺省值720,小于720说明存在内存系统颠簸。
[fre] 正常
[avm] avm的值约为:958MB
page
pi
列详细描述了从调页空间调入的页数。调页空间是驻留在磁盘上的虚拟内存的一部分。当内存过量使用时,它用作溢出。调页空间由用于存储从实内存中窃取到的工
作组页面的逻辑卷组成。当进程访问一个窃取页时,产生了一个缺页故障,这一页必须从调页空间读入内存。这里设置pi的参考值为5,大于5说明内存不足。
po
列显示了调出到调页空间的页面数(速率)。无论什么时候窃取工作存储器的一页,如果它仍未驻留在调页空间中或已被修改,那它会被写入调页空间。如果不被再
次访问,它会留在页面调度设备中直到进程终止或放弃空间。如果包含在出故障页面中的后续地址引用导致缺页故障,那么这些页面将会由系统个别调进。当一个进
程正常终止,任何分配给该进程的调页空间将被释放。
fr 列表示在一定时间间隔内根据页面替换算法每秒所释放的页数。当 VMM 页面替换例程扫描页面帧表(Page Frame Table,PFT)时,它使用一些条件选取要窃取的页面以插入到可用内存帧的空闲列表中。
sr 列表示在一定时间间隔内根据页面替换算法每秒所检查的页面数。页面替换算法在可以窃取足够的页面以满足页面替换线程的需要之前可能不得不扫描许多页面帧。
cy 列表示每秒页面替换代码扫描了 PFT 多少次。因为插入空闲列表可以不需要完全扫描 PFT,并且因为所有的 vmstat 字段报告为整数,这一字段通常为 0。
这里设置fr:sr的参考值为3,超过说明内存不足。
[pi] !存在内存不足
[fr:sr] 正常
AIX命令iostat释疑
# iostat hdisk1 hdisk2 5 5
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 0.3 0.2 0.4 99.4 0.1
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk2 0.1 1.0 0.2 45090 51075
hdisk1 0.0 0.0 0.0 0 0
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 70.6 45 54 99.4 0.0
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk2 0.0 0.0 0.0 0 0
hdisk1 0.0 0.0 0.0 0 0
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 70.6 0.0 0.4 99.6 0.0
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk2 0.0 0.0 0.0 0 0
hdisk1 0.0 0.0 0.0 0 0
分析结果
tty和CPU使用率报告
tin 显示了系统为所有 tty 读取的字符总数。
tout 显示了系统为所有 tty 写入的字符总数。
% user 显示了在用户级(应用程序)执行时生成的 CPU 使用率百分比。
% sys 显示了在系统级(内核)执行时生成的 CPU 使用率百分比。
% idle 显示了在 CPU 空闲并且系统没有未完成的磁盘 I/O 请求时的时间百分比。
% iowait 显示了 CPU 空闲期间系统有未完成的磁盘 I/O 请求时的时间百分比。
[user][+][sys] !CPU能力不足
[wait] 正常
磁盘使用率报告
% tm_act 表示物理磁盘处于活动状态的时间百分比(驱动器的带宽使用率)。
Kbps 表示以 KB 每秒为单位的传输(读或写)到驱动器的数据量。
tps 表示每秒钟输出到物理磁盘的传输次数。一次传输就是一个对物理磁盘的 I/O 请求。多个逻辑请求可被并为对磁盘的一个单一 I/O 请求。传输具有不确定的大小。
Kb_read 读取的 KB 总数。
Kb_wrtn 写入的 KB 总数。
磁盘负载均衡评估 正常
带宽使用评估 带宽值为:0Kbps
Hp-UNIX 命令vmstat释疑
# vmstat 5 5
procs memory page faults cpu
r b w avm free re at pi po fr de sr in sy cs us sy id
2 0 0 52260 24324 9 4 0 0 0 0 1 109 427 81 2 1 97
2 0 0 52260 24285 0 0 0 0 0 0 0 110 207 90 0 0 99
1 0 0 56211 24285 0 0 0 0 0 0 0 106 192 80 0 0 100
1 0 0 56211 24285 0 0 0 0 0 0 0 107 152 76 0 0 100
2 0 0 56552 24285 0 0 0 0 0 0 0 106 154 72 0 0 100
分析结果
procs
r 列表示在运行队列中等待的进程数。
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
w 列表示可以进入运行队列但被交换出来的进程 。
[b] 正常
cpu 表示cpu的使用状态
us 列显示了用户方式下所花费 CPU 时间的百分比。一个 UNIX 进程可以在用户方式下执行,也可以在系统(内核)方式下执行。当在用户方式下时,进程在它自己的应用程序代码中执行,不需要内核资源来进行计算、管理内存或设置变量。
sy
列详述了 CPU 在系统方式下执行一个进程所花时间的百分比。这包括内核进程(kprocs)和其它需要访问内核资源的进程所消耗的 CPU
资源。如果一个进程需要内核资源,它必须执行一个系统调用,并由此切换到系统方式从而使该资源可用。例如,对一个文件的读或写操作需要内核资源来打开文
件、寻找特定的位置,以及读或写数据,除非使用内存映射文件。这里us + sy的参考值为80%,如果us+sy 大于
80%说明可能存在CPU不足。
id 列显示了没有未决本地磁盘 I/O 时 CPU 空闲或等待的时间百分比。
[us]+[sy] 正常
fault 显示采集间隔内发生的中断数
in 列表示在某一时间间隔中观测到的每秒设备中断数。iostat命令输出更有参考意义。
sy
列表示在某一时间间隔中观测到的每秒系统调用次数。通过明确的系统调用,用户进程可以使用资源。这些调用指示内核执行调用线程的操作,并在内核和该进程之
间交换数据。因为工作负载和应用程序变化很大,不同的调用执行不同的功能,所以不可能定义每秒钟有多少系统调用才算太多。这里设置参考值为10000,超
过10000,用户需要注意。
cs 列表示,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
[sy] 正常
memory
avm 当前激活的虚拟内存数量(k表示)。
free 当前的空闲页面列表中内存数量(k表示)
[free] 正常
page
re 列表示回收的页面数。
at 列表示地址翻译错误计数。
pi 列表示进入页面数 (k表示)。
po 列表示出页面数(k表示)。
fr 列表示空余的页面数(k表示)。
de 列表示提前读入的页面中的未命中数。
sr 列表示通过时钟算法扫描的页面计数
[po] 正常
[fr:sr] 正常
Hp-unix下iostat释疑
# iostat 5 5
device bps sps msps
c0t6d0 0 0.0 1.0
c0t6d0 2 1.0 1.0
c0t6d0 2 0.8 1.0
c0t6d0 4 2.0 1.0
c0t6d0 2 1.0 1.0
分析结果
缓冲区性能分析
device: iostat统计的设备名称。
bps: 每秒该设备传输的K字节数。
sps: 每秒检索该设备次数。
msps: 平均每次检索所花费的时间,单位毫秒。
[bps] 正常