一直在使用 SuperMicro X8DTL 主板和各种 SATA 硬盘(例如 7,200RPM Seagate Constellation ES 和 10,000 RPM Western Digital VelociRaptor)测试白盒系统。
已测试 Fedora 15、Fedora 16、Ubuntu 11,使用此处找到的命令运行 SysBenchMySQL 高性能博客
磁盘写入结果非常糟糕 - 通常结果如下:
Operations performed: 0 Read, 3635 Write, 3635 Other = 7270 Total
Read 0b Written 14.199Mb Total transferred 14.199Mb (145.39Kb/sec)
36.35 Requests/sec executed
另一方面,具有完全相同的 CPU 和运行 Fedora 15 的 7,200RPM SATA 硬盘的 Tier1 服务器会产生以下测试结果:
Operations performed: 0 Read, 151453 Write, 151453 Other = 302906 Total
Read 0b Written 591.61Mb Total transferred 591.61Mb (5.9159Mb/sec)
1514.48 Requests/sec executed
我无法理解为什么会有如此巨大的差异,并且基于 SuperMicro 的系统会产生如此糟糕的磁盘写入性能。
我测试了各种东西,包括调整 fstab、调度、禁用磁盘待机以及使用 sar、iostat、vmstat 等来查找潜在问题。但是%idle
、%iowait
等等并没有表现出任何异常。也vm.zone_reclaim_mode
如此处所示磁盘性能差尽管 Fedora 上的默认设置已经是 0。
我尝试了不同的硬盘 BIOS 设置,包括 IDE 和 AHCI。预计 AHCI 应该是最好的,但 IDE 和 AHCI 选项之间的写入性能差异可以忽略不计。
有人有想法吗?
答案1
首先,要进行一般 IO 测试,我建议使用 iozone:http://www.iozone.org/
为了正确回答这个问题,我们需要有关每个服务器中 IO 子系统的更多信息。
然而,一般来说,如果您正在寻求良好的 IO 性能,则需要带有板载缓存的专用硬件 RAID 卡和用于备份该缓存的电池。这使得RAID卡可以执行回写式缓存,从而可以显着提高IO性能。与板载控制器相比,RAID 卡通常还可以提供更好的吞吐量。
最后,BIOS 中的 AHCI 设置将控制板载 SATA 控制器。板载意味着它位于主板上,而不是服务器级独立硬件 RAID 卡。如果 IO 不是工作负载的优先级,则服务器(白盒或其他)可能没有单独的 RAID 卡,并且可能确实使用板载控制器。
您肯定希望将此 BIOS 设置设置为 AHCI,因为任何其他设置都不会为 Linux 提供对驱动器的快速、直接访问。如果此设置没有产生任何影响,则可能没有任何驱动器连接到板载控制器,或者可能存在其他配置错误,导致 Linux 或 BIOS 回退到 IDE 兼容模式。您可以检查内核启动消息以查看内核看到的驱动器以及内核使用什么接口来访问这些驱动器。