2012-08-22 51 views
1

我遇到了性能问题与我的应用程序,我的嫌疑犯之一是过度IO。 iostat显示每秒写入10K块的速率。我怎么知道这是否很多?我如何知道特定机器和磁盘的限制?分析iostat输出

编辑:继艾略特的要求:

的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 

感谢

回答

2

我可以从经验告诉你,对于大多数系统来说块写入速率非常高。但是,您的系统可能完全有能力处理 - 取决于您拥有的硬件类型。重要的是你的server load数字和iowait百分比。如果您的服务器负载很高(即高于系统上的内核数量)并且您的负载主要由iowait组成,那么您遇到了问题。

您可以在应用程序运行时与我们分享iostat,uptime的全部输出以及top -c输出的快照吗?

+0

谢谢,目前没关系。一旦它再次发生,我会分享这些信息 – duduamar

1

视角:

  • 如果它旋转磁盘,这是一个很高的价值。
  • 如果是具有写入缓存的SSD或SAN,这是合理的。

使用iostat的-x宽和扩展指标:

[[email protected]]$ 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处于繁忙状态的时间百分比。