我的应用程序遇到了性能问题,而我的一个疑点是IO过多。iostat显示每秒写入10K数据块的速率。我怎么知道这是不是很多?如何知道具体机器和磁盘的限制?
编辑:遵循Elliot的请求:
iostat输出:
avg-cpu: %user %nice %system %iowait %steal %idle
16.39 0.00 0.52 11.43 0.00 71.66
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
cciss/c0d0 315.20 0.00 10341.80 0 51709正常运行时间:
2:08am up 17 days 17:26, 5 users, load average: 9.13, 9.32, 8.73顶部:
top - 02:10:02 up 17 days, 17:27, 5 users, load average: 8.89, 9.18, 8.72
Tasks: 202 total, 2 running, 200 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.9%us, 0.7%sy, 0.0%ni, 90.5%id, 2.9%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 96556M total, 15930M used, 80626M free, 221M buffers
Swap: 196615M total, 93M used, 196522M free, 2061M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20027 root 16 0 10.5g 9.8g 12m S 74 10.4 2407:55 /usr/intel/pkgs/java/1.6.0.31-64/jre//bin/java -server -X谢谢
发布于 2012-08-23 04:01:22
我可以根据经验告诉你,对于大多数系统来说,这是一个非常高的块写入速率。但是,您的系统可能完全有能力处理这一问题--这取决于您拥有哪种硬件。重要的是你的server load数字和iowait百分比。如果您的服务器负载很高(即高于系统上的核心数量),并且您的负载主要由iowait组成,那么您就有问题了。
您能否在您的应用程序运行时与我们分享iostat、uptime的完整输出以及top -c输出的快照?
发布于 2013-12-13 04:47:59
观点:
将iostat -x用于宽指标和扩展指标:
[xxx@xxxxxxxxxx]$ iostat -x
Linux 2.6.32-358.6.2.el6.x86_64 (boxname.goes.here) 12/12/2013 _x86_64_ (24 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.57 0.00 0.21 0.00 0.00 99.21
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.06 28.38 0.04 3.99 0.99 259.15 64.58 0.01 2.11 0.55 0.22%util是您的朋友。如果您查看iostat.c (请参阅:http://code.google.com/p/tester-higkoo/source/browse/trunk/Tools/iostat/iostat.c),您可以看到它通过查看执行IO所花费的时间(以处理器节拍为单位)与已过的总节拍数来计算此百分比。换言之,PERCENTAGE-UTIL是IO处于繁忙状态的时间百分比。
https://stackoverflow.com/questions/12080494
复制相似问题