Linux RAID-0 性能不会超过 1 GB/s

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 条带化有缺陷吗?我还可以运行哪些其他测试?

小智 3

您是否在进行基准测试时尝试过运行latencytop?可能有助于查看哪个 linux 系统调用是罪魁祸首(如果有)。