我的应用程序出现了性能问题,我的一个疑问是IO过多。 iostat显示每秒写入10K块的速率。我怎么知道这是不是很多?我怎么知道特定机器和磁盘的限制?
编辑:遵循艾略特的要求:
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
由于
答案 0 :(得分:2)
我可以从经验告诉你,大多数系统的块写入速率非常高。但是,您的系统完全有能力处理 - 取决于您拥有的硬件类型。重要的是您的server load数字和iowait
百分比。如果您的服务器负载很高(即,高于系统上的核心数)并且您的负载主要由iowait
组成,那么您就遇到了问题。
您可以在应用程序运行时与我们分享iostat
,uptime
的完整输出以及top -c
输出的快照吗?
答案 1 :(得分:2)
视角:
将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处于忙碌状态的时间百分比。