Vim*_*mal 5 hard-drive iozone benchmark
我有两台服务器 A 和 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 的磁盘?
谢谢。
关于测量结果之间的 33 倍差异,根据我们在评论中的讨论,结果表明,MegaCli64 -LDGetProp -DskCache -Lall -aAll设置B默认启用磁盘驱动器缓存,而在设置 A上禁用磁盘驱动器缓存。
使用MegaCli64 -LDSetProp -DisDskCache -Immediate -Lall -aAll导致两个系统表现出相似的性能。
在启用磁盘驱动器缓存的情况下运行 RAID 实际上类似于在启用写入缓存(强制回写模式)的情况下运行具有非 BBU 支持的易失性缓存的 RAID 控制器。它提高了性能,但同时增加了断电时数据丢失和数据不一致的可能性。
\n\n如果您想避免这种情况,同时仍具有不错的 I/O 性能,建议使用具有 BBU 支持缓存的控制器,并将卷配置为回写模式并禁用磁盘缓存。
\n\n我不知道您是否已经知道,但是软件和硬件 RAID 之间还有更多的内容(这是一篇关于此的有趣文章)。
\n\n最后,MegaRAID SAS 2008或多或少是一个具有附加 RAID 功能的 HBA 或 IO 控制器,而 MegaRAID SAS 3108是一个真正的 RAID 控制器\xe2\x84\xa2(也称为 ROC 或 RAID-on-Chip),它有一个专用处理器来处理 RAID 计算。
\n\nSAS 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\nRun Code Online (Sandbox Code Playgroud)\n\n如果您在同步模式 (O_SYNC) 下运行,那么就可以通过软/假 RAID 提供的内容而言,您的结果 A似乎是合理的。
\n\n我不这么认为。通过激活的写入高速缓存,控制器能够执行某些操作以优化待处理的写入操作。
\n\n例如,缓存操作的描述取自HP Smart Array 控制器的白皮书:
\n\n\n\n\n在高工作负载环境中,写入缓存通常会填满并在大部分时间保持满状态。控制器利用此机会分析挂起的写入命令以提高其效率。控制器可以使用写入合并,将对相邻逻辑块的小写入合并为单个较大写入,以加快执行速度。控制器还可以执行命令重新排序,重新排列缓存中写入的执行顺序,以减少整体磁盘延迟。
\n
正如您所看到的,缓存用于进一步增强阵列的写入性能,但这似乎不会对任何后续写入或读取操作的性能产生任何影响。
\n\n关于磁盘碎片,这是文件系统/操作系统级别的问题。RAID 控制器(在块级别上运行)根本无法优化文件系统碎片,因此如果它在write-trough或write-back模式下运行,则没有区别。
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |