首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个硬盘制造商在iozone O_SYNC基准测试上的根本原因是不同的性能

两个硬盘制造商在iozone O_SYNC基准测试上的根本原因是不同的性能
EN

Server Fault用户
提问于 2016-03-30 13:15:43
回答 1查看 475关注 0票数 5

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

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

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

A(节选)的结果:

代码语言:javascript
复制
                                                            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

B的结果(节选):

代码语言:javascript
复制
                                                            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

两台服务器都启用了写入缓存,但我无法根目录--因为假设我正确解释了结果,服务器A(108 kB/秒)的写吞吐量性能为什么要比服务器B (3332 kB/秒)慢得可怕。

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

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

谢谢。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2016-03-30 15:31:04

关于您的结果之间测量到的33x差异,根据我们在注释中的讨论,结果表明,MegaCli64 -LDGetProp -DskCache -Lall -aAll显示安装程序B默认启用了磁盘驱动器缓存,而在安装程序A上禁用了它。

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

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

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

如果您想避免这种机会,同时仍然具有良好的I/O性能,建议使用BBU备份缓存的控制器,并将您的卷配置为禁用磁盘缓存的写回模式。

两个RAID控制器之间的差异

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

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

SAS 2008尤其以一些OEM固件的糟糕的写性能而闻名(比如我在评论中提到的PERC H310中的戴尔固件)。

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

作为参考,这是我在工作站上使用软件RAID1中的10k WD速度猛禽获得的:

代码语言:javascript
复制
                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
   10240       4     182     181  1804774  2127084 2110984     167 1673159      153  1760968   954589  1203989 2022512  2062824

如果您在同步模式(O_SYNC)中运行,那么您的结果A在可以通过软/假RAID传递的内容方面似乎是合理的。

是否会导致数组的性能随着时间的推移而降低?

我不这样认为。通过激活的写缓存,控制器能够执行某些操作来优化挂起的写操作。

例如,这种对缓存操作的描述取自HP智能阵列控制器的白纸

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

正如您可以读取的那样,缓存用于进一步提高数组的写入性能,但这似乎不会对任何后续的写操作或读操作的性能产生任何影响。

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

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/767036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档