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

我无法获得我的设置的最大吞吐量。 硬件如下:

  • 双核四核AMD Opteron(tm)处理器2376
  • 16 GB DDR2 ECC内存
  • 双Adaptec 52245 RAID控制器
  • 48个1TB SATA驱动器设置为2个RAID-6arrays(256KB条带)+备件。

软件:

  • 普通香草2.6.32.25内核,针对AMD-64编译,针对NUMA进行了优化; Debian Lenny userland。
  • 基准运行:disktest,bonnie ++,dd等等。所有的结果都一样。 这里没有差异。
  • io调度程序使用:noop。 是的,这里没有任何诡计。

到目前为止,我基本上认为,条带化(RAID 0)几个物理设备应该大致线性地提高性能。 然而这不是这种情况:

  • 每个RAIDarrays可以实现大约780 MB / s的写入,持续读取和1 GB / s的读取。
  • 两个不同的进程同时写入两个RAIDarrays可以达到750 + 750 MB / s,两者的读取速度都是1 + 1 GB / s。
  • 然而,当我将两个arrays条带化在一起时,使用mdadm或lvm,性能约为850 MB / s写入和1.4 GB / s读取。 至less比预期的less30%!
  • 针对条纹arrays运行两个平行的写入器或读取器处理不会增强数字,实际上它会进一步降低性能。

那么这里发生了什么? 基本上我排除了总线或内存争用,因为当我在两个驱动器上同时运行dd时,聚合写入速度实际上达到了1.5 GB / s,并且读取速度达到了2 GB / s。

所以这不是PCIe总线。 我想这不是内存。 这不是文件系统,因为我得到了与原始设备或使用XFS完全相同的数字基准。 而且我也可以使用LVM条纹和md条纹获得完全相同的性能。

怎么了? 什么阻止了进程达到最大吞吐量? Linux条带有缺陷吗? 我可以运行哪些其他testing?

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

    就我所知,这是一张x8 PICe Gen 1卡 – 假设它的开销为零,它可以支持的最大数据速率是2GBytes / sec。 Adaptec自己只声称这些卡最多可以维持1.2Gbytes / sec,而且超出了这个范围。

    采用业界领先的双核心芯片(RoC),x8 PCI Express连接和512MB DDR高速caching,每秒提供超过250,000个IO和1.2GB / s。

    我的猜测是,既然你能够显着超过他们声称的性能与两个RAID 0集独立行事的额外负载,小和所有这可能是,条纹增加,这是超负荷的RAID CPU,或可能是RAM子系统上控制器,以GByte / sec加载。