BroadCom MegaRAID SAS 9361-24i 性能问题

BroadCom MegaRAID SAS 9361-24i 性能问题

我有很多 1TB 三星 mSATA 硬盘,我想将它们重新用作服务器存储。我购买了 24 个 -星达 25SAT22MSAT适配器,并为每个适配器安装 2 个 mSATA 驱动器。然后,我在每个适配器/载体上启用了 RAID0 功能。

接下来,我把所有 24 个适配器装进SuperMicro SC216BAC-R920LPB机箱,并将 SAS-216A 背板的 6 个 SAS 通道连接到BroadCom MegaRAID SAS 9361-24i卡片。

MegaRAID 9361-24i 卡具有 24 个独立 SAS/SATA 通道和 PCIe Gen3 x8 接口。我原本希望使用此设置能够实现 4-5 GB/s 的读取性能。然而,我能获得的最快读取速度约为 2.1 GB/s。

我一直在使用简单(单线程)定时 cat 操作来测量性能:

$ sudo bash -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
$ time cat data_20GB.bin > /dev/null

real    0m9.780s
user    0m0.165s
sys     0m5.969s

以及使用我打算在这台机器上运行的(多线程)应用程序。两种方法都表现出类似的性能。

我做的第一件事就是测量单个适配器/载体的性能:

$ sudo bash -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
$ time cat data_20GB.bin > /dev/null

real    0m38.639s
user    0m0.309s
sys     0m10.142s

我的简单测试显示,每个适配器的单线程读取性能约为 530 MB/s。如果我四舍五入,得出 500 MB/s x 24 = ~12 GB/s。我相信此设置应该能够轻松满足 PCIe Gen 3 x8 链路(8 GT/s)的要求。

SuperMicro 服务器运行的是 Ubuntu 16.04,其启动盘与 RAID 阵列是分开的。我已将 Linux 驱动程序和固件都更新到最新版本。我还验证了 RAID 卡是否以预期的 Gen 3 x8 速率连接。

目标应用程序的数据访问模式主要是大型顺序读取。

以下是我首次配置 RAID 阵列的方式:

storcli64 /c0 add vd type=raid5 name=storage drives=252:0-23 pdperarray=24 pdcache=on cached wb ra strip=256

此配置提供读取性能:

  • 简单(定时猫):1.98 GB/s
  • 应用程序:2.04 GB/s

以下是从那时起我尝试过的其他一些事情:

  • 调整许多(如果不是全部)RAID 配置选项的组合(RAID0 与 RAID5、缓存与直接、预读与不预读、所有支持的条带大小)。没有一种组合能达到高于 2 GB/s 的读取速度,许多组合的速度要慢得多。
  • 调整 RAID 卡本身的配置选项。更改这些选项对性能几乎没有影响。
  • 仅使用 6 个驱动器创建阵列。我测量的读取性能仍然为 ~2 GB/s,与使用所有 24 个驱动器时相同。这似乎是一个重大危险信号,但我无法找出原因。无论我使用驱动器 0-5 还是驱动器 0、4、8、12、16、20 创建阵列,我都会获得相同的读取性能。
  • 创建包含 12 个驱动器的阵列。同样的问题,我测量的读取性能约为 2 GB/s。

我完全被难住了。有人知道为什么硬件 RAID 读取性能最高只有 ~2 GB/s 吗?欢迎提出任何建议。

更新

我将 RAID 卡设置为 JBOD 模式,这样 24 个驱动器中的每一个都作为单独的块设备出现在操作系统中。然后我创建了一个软件 (mdadm) RAID5 并重复了我的性能测量:

  • 简单(定时猫):4.06 GB/s
  • 实际应用:5.92 GB/s

这是我期望硬件 RAID 达到的性能水平。也许我应该省下 500 美元,直接购买同等的 SAS HBA 卡。

相关内容