玄苦
苦海无边,回头是岸

导航

 

简介

本文主要介绍几个常见的性能测试工具。

本博客所有文章:http://www.cnblogs.com/xuanku/p/index.html

性能测试工具

在这篇文章中,我们介绍常见性能测试工具的使用,这些工具在我们平时追查问题,尤其是性能问题的时候特别有用。

平时在服务器上调试程序的时候,我们经常需要看如下设备的状态:CPU;内存;硬盘;网卡。

网上有一副很经典的图,包含了常见性能查看工具:

性能查看工具

本文介绍几个常见的硬件性能查看和分析软件。

vmstat

首当其冲推荐vmstat工具,该工具对机器整体性能进行分析,但是无法针对进程级分析。

常见参数:

vmstat 1

输出解释:

procs

r:ready的缩写。进程调度算法中,处于就绪状态,等待运行的进程数,当这个值经常大于4的话,机器就不太正常了;
b:block额缩写。进程调度算法中,处于因为IO而阻塞住的进程数;

memory

swpd:现在可用于交换的内存,单位KB;
free:现在空闲的内存,单位KB,当新malloc的时候就会优先从这些内存中分配;
buff:缓冲区的内存,单位KB,这些内存就是操作系统使用的,用来提高系统性能,但是一旦有别的进程要申请内存且空闲内存不够的话,系统会自动把这块内存吐出来;
cache:跟buff的定位类似,只是一般来说,buff是对数据进行缓存,cache是对指令进行缓存,所以cache比buff占用空间更小,但更重要;

swap

si:从磁盘交换到内存的空间大小,单位KB/s;
so:跟si相反,从内存交换到磁盘空间大小,单位KB/s,这两个都仅仅指进程切换的时候需要对进程内存和硬盘之间置换的数字;

io

bi:磁盘写入磁盘的数据量,单位块/s,如果这两个值长期不为0的话,说明系统内存用于操作系统的buffer/cache空间不够了,可以考虑增加内存;
bo:磁盘从磁盘中读入数据的速度,单位块/s;

system

in:系统中断数;
cs:上下文切换次数/s,当进程锁加得比较多的时候就得注意这个值是否偏高了;

cpu

us:用户进程使用时间占比,百分比;
sy:系统进程使用时间占比,百分比;
id:空闲时间占比,百分比,如果该值小于30的话,机器就很忙了;
wa:CPU等待IO所占用的时间,这个值应该低于10,如果高于10,就证明IO性能有问题了;

iostat

用于查看IO状态。

常见参数:

iostat -kdx 1

k:将部分结果展现的单位转换成K;
d:只看磁盘的数据;
x:显示跟多数据;

输出解释:

rrqm/s:每秒钟有多少请求被merge了。merge的概念是这样的:操作系统的不同进程可能同一时间会同时读取同一块磁盘的数据,在操作系统中,会自动将这类读取请求merge成一个;
wrqm/s:跟rrqm/s对应,写请求merge数据;
r/s:这一秒有多少次读请求落到该磁盘上了;
w/s:这一秒有多少次写请求落到该磁盘上了;
rkB/s:这一秒从这块磁盘读了多少数据;
wkB/s:这一秒往这块磁盘写了多少数据;
avgrq-sz:平均每次读取请求的大小,单位k;
avgqu-sz:平均IO等待队列长度;
await:平均每次IO等待时间,单位ms;
svctm:平均每次IO服务时间,单位ms;
%util:目前IO使用百分比,计算方式是一秒中有多长时间IO队列不为空;

mpstat

用于查看每个CPU的运行状态。

常见参数:

mpstat -P ALL 1

输出解释:

CPU:CPU的id
usr:用户态进程所占CPU比例
nice:nice值为负的这部分进程所占用的比例。nice值默认为0,取值范围从-20~19,越低优先级越高。负值一定是人工调整过优先级的;
sys:系统态所占CPU比例;
iowait:等待IO的时间所占用比例;
irq:硬中断时间所占用比例;
soft:软中断时间所占用比例;
steal:当超线程开启的时候,看当前CPU被迫等待另外一颗虚拟的CPU的时间占比;
guest:当超线程打开的时候,虚拟的那颗CPU使用时间占比;
idle:空闲CPU比例;

sar

sar命令很复杂,这里只解释他看网卡命令的参数。

常见参数:

sar -n DEV 1

输出解释:

IFACE:
rxpck/s:每秒收到的数据包总数;
txpck/s:每秒输出的数据包总数;
rxkB/s:每秒收到的数据量;
txkB/s:每秒输出的数据量;
rxcmp/s:每秒收到的压缩包数量,压缩协议例子:cslip,是一种压缩的串行线路协议,一般用于telnet和Rlogin这样的应用程序,用于节约带宽;
txcmp/s:每秒发送的压缩包数量;
rxmcst/s:每秒收到的组播数据包总数,组播是一种协议,介于单播和广播之间,单播是点到点通信,广播是给局域网所有机器通信,组播是给局域网内同一个组的机器通信;
posted on 2015-09-02 07:53  玄苦  阅读(1231)  评论(1编辑  收藏  举报