张芳涛 2011-08-16
Linux下vmstat输出释疑:
Vmstat
procs-----------memory-------------swap-------io------system------cpu----
rbswpdfreebuffcachesisobiboincsussyidwa
0 0 100152 2436 97200 289740 0 1 34 45 99 33 0 0 99 0procs
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作为buffercache的内存数量,一般对块设备的读写才需要缓冲。
cache:作为pagecache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
swap
si由内存进入内存交换区数量。
so由内存交换区进入内存数量。
IO
bi从块设备读入数据的总量(读磁盘)(每秒kb)。
bo块设备写入数据的总量(写磁盘)(每秒kb)
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。Solairs系统下vmstat输出释疑
vmstat 5 5
procsmemorypagediskfaultscpu
rbwswapfreeremfpipofrdesrs1s1----insycsussyid
0007049682076400120000000030263100100
0007050482067281200000000030243400100
0007050482067280000000000030233500100
0007050482067280000000000030133400100
0007050482067280000000000030263500100
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
extendeddevicestatisticsttycpu
devicer/sw/skr/skw/swaitactvsvc_t%w%btintoutussywtid
sd10.30.03.40.10.00.013.20000000100
sd150.00.00.00.00.00.00.000
nfs10.00.00.00.00.00.00.000
extendeddevicestatisticsttycpu
devicer/sw/skr/skw/swaitactvsvc_t%w%btintoutussywtid
sd10.00.00.00.00.00.00.000077000100
sd150.00.00.00.00.00.00.000
nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0tty和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个或多个磁盘上,并使用volumemanager/disksuite的条带化特点
3.) 增加系统参数值,如inode cache , ufs_ninode。AIX下vmstat释疑:
# vmstat 5 20
kthrmemorypagefaultscpu
---------------------------------------------------------------
rbavmfrerepipofrsrcyinsycsussyidwa
1124452812270335615104041420141542886
262445381241039148242435110904466075714912238
532445407910222139376077011836605246194434121
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页面替换例程扫描页面帧表(PageFrame.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 % iowait0.0 0.3 0.2 0.4 99.4 0.1
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk20.11.00.24509051075
hdisk1 0.0 0.0 0.0 0 0tty: tin tout avg-cpu: % user % sys % idle % iowait0.0 70.6 45 54 99.4 0.0
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk20.00.00.000
hdisk1 0.0 0.0 0.0 0 0tty: tin tout avg-cpu: % user % sys % idle % iowait0.0 70.6 0.0 0.4 99.6 0.0
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk20.00.00.000
hdisk10.00.00.000
分析结果
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总数。
磁盘负载均衡评估正常
带宽使用评估 带宽值为:0KbpsHp-UNIX 命令vmstat释疑
#vmstat55
procsmemorypagefaultscpu
rbwavmfreereatpipofrdesrinsycsussyid
20052260243249400001109427812197
20052260242850000000110207900099
100562112428500000001061928000100
100562112428500000001071527600100
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
c0t6d000.01.0
c0t6d021.01.0
c0t6d020.81.0
c0t6d042.01.0
c0t6d021.01.0
分析结果
缓冲区性能分析
device:iostat统计的设备名称。
bps:每秒该设备传输的K字节数。
sps:每秒检索该设备次数。
msps:平均每次检索所花费的时间,单位毫秒。
[bps]正常