waz*_*oox
8
linux
raid
performance-tuning
我无法从我的设置中获得最大吞吐量。硬件如下:
- 双四核 AMD Opteron(tm) 处理器 2376
- 16 GB DDR2 ECC 内存
- 双 Adaptec 52245 RAID 控制器
- 48 个 1 TB SATA 驱动器设置为 2 个 RAID-6 阵列(256KB 条带)+ 备件。
软件 :
- 普通 vanilla 2.6.32.25 内核,为 AMD-64 编译,为 NUMA 优化;Debian Lenny 用户区。
- 运行基准测试:disktest、bonnie++、dd 等。都给出相同的结果。这里没有差异。
- 使用的 io 调度程序:noop。是的,这里没有技巧。
到目前为止,我基本上假设条带化 (RAID 0) 几个物理设备应该大致线性地提高性能。然而,这里的情况并非如此:
- 每个 RAID 阵列可实现约 780 MB/s 的写入(持续)和 1 GB/s 的读取(持续)。
- 使用两个不同的进程同时写入两个 RAID 阵列的速度为 750 + 750 MB/s,同时读取两者的速度为 1 + 1 GB/s。
- 但是,当我使用 mdadm 或 lvm 将两个阵列条带化在一起时,性能约为 850 MB/s 写入和 1.4 GB/s 读取。至少比预期低 30%!
- 针对条带阵列运行两个并行写入器或读取器进程不会增强数字,实际上它会进一步降低性能。
那么这里发生了什么?基本上我排除了总线或内存争用,因为当我同时在两个驱动器上运行 dd 时,聚合写入速度实际上达到了 1.5 GB/s,而读取速度则高达 2 GB/s。
所以它不是PCIe总线。我想这不是内存。这不是文件系统,因为我得到了与原始设备或使用 XFS 进行基准测试完全相同的数字。而且我还使用 LVM 条带化和 md 条带化获得完全相同的性能。
怎么了?是什么阻止了进程达到最大可能的吞吐量?Linux 条带化有缺陷吗?我还可以运行哪些其他测试?