1

我的应用程序遇到性能问题,我的一个嫌疑人是过多的 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

谢谢

4

2 回答 2

2

看法:

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

将 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 处于忙碌状态的时间百分比。

于 2013-12-12T20:47:58.797 回答
2

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

您能否与我们分享您的应用程序运行时的完整输出iostat和输出uptime快照?top -c

于 2012-08-22T20:01:21.530 回答