debuggingIO限制

我有一个严重的IO局限性的Fedora盒,我不知道如何debugging。

该服务器拥有一台具有12个7200 RPM 1.5 TB磁盘的Marvell Technology Group Ltd. 88E8050 PCI-E ASF千兆位以太网控制器的Areca Technology Corp. ARC-1130 12端口PCI-X至SATA RAID控制器。

uname -a输出:2.6.32.11-99.fc12.x86_64#1 SMP Mon Apr 5 19:59:38 UTC 2010 x86_64 x86_64 x86_64 GNU / Linux

服务器是运行Nginx并启用存根状态模块的文件服务器,所以我可以看到当前的连接数量。 当我在写入状态下有大量的同时连接时,问题就出现了。 通常在350左右,现在是590,服务器几乎不可用,卡在230mbit / s。

如果我运行停止,并打1看到CPU核心使用情况,我有所有4核心与约99%的io等待,如果我运行iotop的nginx工人是唯一的进程产生任何读取负载,目前在25MB / s左右。 我把每个工人都绑在自己的核心上。

最初我认为这只是磁盘被窃听。 但是我运行了fscheck和smartmontools检查,发现没有错误。 我也跑了一个iozonetesting,你可以看到这里的结果: http : //www.pastie.org/951667.txt? key=fimcvljulnuqy2dcdxa

此外,当连接数量低,我没有问题得到一个很好的速度。 如果我通过本地networking轻松达到60MB /秒。

现在我只是试着把一个文件放在/ dev / shm中,然后我把一个文件从public dir链接到它,在本地networking上使用wget,只有50KB / s。

另外,如果我尝试cp / dev / shm / test / root / test,它会快速复制大约740MB,然后放慢HEAVILY。 再次用iotop报告99%艾奥瓦。

我不太清楚如何去搞清楚问题所在。 这可能是一个自然的磁盘限制,但然后从/ dev / shm文件应该传输,所以似乎有一个networking限制,但没有多less连接时,这很好。 也许这是一个TCP堆栈问题,但我真的不知道如何检查。

任何关于如何进行debugging的build议都是非常受欢迎的。 如果需要额外的信息,请让我知道,我会尽力得到它。

谢谢。

iotop很高兴看到哪些进程正在创buildio,但我会用一些更具体的数字sar; 例如,sar -d 10 6会在一分钟内为您提供10秒钟的样本,这将为您提供有关磁盘性能的更多详细信息,以及您是否实际存在瓶颈(请记住,相当小的等待/ svctime可能会产生重大影响性能 – 我已经看到只有20ms svctimes渲染一个数据库服务器可用,因为这是每个IOP 20毫秒DB试图做)。

除了设置sar的sa1(在/etc/cron.d/sysstat中)比每隔十分钟的默认值更频繁地收集,并在繁忙时段收集完整的数据集(sar -A -s 09:00: 00 -e 10:00:00)会给你详细的networking性能,并且可以很容易地关联CPU,磁盘,networking,内存行为来寻找不好的数字。

(是的,networking可以显示为爱荷华州)