两个 HDD 制造商在 iozone O_SYNC 基准测试中的根本性能差异很大

Vim*_*mal 5 hard-drive iozone benchmark

我有两台服务器 A 和 B,配置如下:

  • A:4TB HDD,带 RAID 1 (MegaRAID SAS 2008),128MB 缓存,无 BBU,直写模式,7.2k RPM,制造商 A。
  • B:1.5TB HDD,带 RAID 1 (MegaRAID SAS 3108),64MB 缓存,带 BBU,但直写模式,10.5k RPM,制造商 B。

我在单个 RAID 分区上运行以下基准测试: iozone -a -s 10240 -r 4 -+r

A的结果(摘录):

                                                            random  random    bkwd   record   stride
          kB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
       10240       4     108     474  4193564  6667334 6556395     701 4058822      475  3653175  2303202  2616201 6785306  6101840
Run Code Online (Sandbox Code Playgroud)

B的结果(摘录):

                                                            random  random    bkwd   record   stride
          kB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
       10240       4    3332   46961  5478410  6836065 4994841    2951 2853077      728  2299133  1722202  2008983 4549365  4712594
Run Code Online (Sandbox Code Playgroud)

两台服务器都启用了直写缓存,但我无法找出与服务器 B (3332 kB/秒) 相比,服务器 A (108 kB/秒) 上的写吞吐量性能为何慢得可怕的根本原因,假设我正在解释结果正确。

可能是什么原因?两台服务器具有相同的其他文件系统选项(ext4/相同的默认选项)。

对于涉及大量同步写入的工作负载,制造商 B 的磁盘是否优于 A 的磁盘?

谢谢。

s1l*_*v3r 3

关于测量结果之间的 33 倍差异,根据我们在评论中的讨论,结果表明,MegaCli64 -LDGetProp -DskCache -Lall -aAll设置B默认启用磁盘驱动器缓存,而在设置 A上禁用磁盘驱动器缓存。

\n\n

使用MegaCli64 -LDSetProp -DisDskCache -Immediate -Lall -aAll导致两个系统表现出相似的性能。

\n\n

在启用磁盘驱动器缓存的情况下运行 RAID 是否安全?

\n\n

在启用磁盘驱动器缓存的情况下运行 RAID 实际上类似于在启用写入缓存(强制回写模式)的情况下运行具有非 BBU 支持的易失性缓存的 RAID 控制器。它提高了性能,但同时增加了断电时数据丢失和数据不一致的可能性。

\n\n

如果您想避免这种情况,同时仍具有不错的 I/O 性能,建议使用具有 BBU 支持缓存的控制器,并将卷配置为回写模式并禁用磁盘缓存。

\n\n

两个 RAID 控制器之间的区别

\n\n

我不知道您是否已经知道,但是软件和硬件 RAID 之间还有更多的内容(这是一篇关于此的有趣文章)。

\n\n

最后,MegaRAID SAS 2008或多或少是一个具有附加 RAID 功能的 HBA 或 IO 控制器,而 MegaRAID SAS 3108是一个真正的 RAID 控制器\xe2\x84\xa2(也称为 ROC 或 RAID-on-Chip),它有一个专用处理器来处理 RAID 计算。

\n\n

SAS 2008 尤其以某些 OEM 固件的糟糕写入性能而闻名(例如我在评论中提到的 PERC H310 中的 DELL 固件)。

\n\n

特别是同步模式与您选择的记录长度和文件大小相结合似乎会导致软件/假 RAID 的结果非常糟糕。

\n\n

作为参考,这是我在软件 RAID1 中使用 10k WD Velocity Raptors 在工作站上得到的结果:

\n\n
                                                    random  random    bkwd   record   stride                                   \n      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread\n   10240       4     182     181  1804774  2127084 2110984     167 1673159      153  1760968   954589  1203989 2022512  2062824\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您在同步模式 (O_SYNC) 下运行,那么就可以通过软/假 RAID 提供的内容而言,您的结果 A似乎是合理的。

\n\n
\n\n

随着时间的推移,直写式缓存模式是否会导致阵列性能下降?

\n\n

我不这么认为。通过激活的写入高速缓存,控制器能够执行某些操作以优化待处理的写入操作。

\n\n

例如,缓存操作的描述取自HP Smart Array 控制器的白皮书:

\n\n
\n

在高工作负载环境中,写入缓存通常会填满并在大部分时间保持满状态。控制器利用此机会分析挂起的写入命令以提高其效率。控制器可以使用写入合并,将对相邻逻辑块的小写入合并为单个较大写入,以加快执行速度。控制器还可以执行命令重新排序,重新排列缓存中写入的执行顺序,以减少整体磁盘延迟。

\n
\n\n

正如您所看到的,缓存用于进一步增强阵列的写入性能,但这似乎不会对任何后续写入或读取操作的性能产生任何影响。

\n\n

关于磁盘碎片,这是文件系统/操作系统级别的问题。RAID 控制器(在块级别上运行)根本无法优化文件系统碎片,因此如果它在write-troughwrite-back模式下运行,则没有区别。

\n