这是我第一次组装一台带有硬件 RAID 卡的机器。我们买了一台戴尔T620带有H710P RAID controller (1GB NV Cache)
、a160GB Solid State Drive (SATA Read Intensive MLC 3Gbps)
和 two 3TB 7.2K RPM Near-Line SAS 6Gbps Hard Drives
。固态硬盘几乎专用于操作系统,以使其保持“活跃”。
两个 SAS 驱动器由 RAID 0 配置。我们将此空间视为分析的临时空间,因此我们不必担心数据丢失。我们想要的是高性能 IO,因为我们要处理大量大文件。例如,我当前的项目是处理 800 个大小为 100-200GB 的文件。不幸的是,我必须将文件传输到计算机,分析它们,然后删除它们。令人惊讶的是(对我来说),我有 8 个作业同时运行(传输、分析、删除),每个作业的运行时间都在 20 多个小时(而单个作业大约需要 3 小时)。根据 top,我发现处理器正在等待 IO(等待 I/O 完成的时间徘徊在 20 左右)。
我知道这些硬盘的转速只有 7.2k RPM,但我认为它们的性能相当不错,因为戴尔列出的速度为 6Gbps。BeowulfNode42 提到这里有些驱动器甚至无法满足 3Gbps 链路的要求,但为了宣传而配备了 6Gbps 接口。但我认为戴尔不会在高端服务器上这样做。
我在谷歌上闲逛,看看我的期望是否不合理,但没有找到任何明确的答案。
问题:对于此设置的合理期望是什么?IO 显然是瓶颈。RAID 卡看起来很不错,我认为驱动器也很不错。
我运行了 hdparm 来查看结果。结果如下:
>sudo /usr/sbin/hdparm -Tt /dev/sdb
/dev/sdb:
Timing cached reads: 19542 MB in 2.00 seconds = 9778.47 MB/sec
Timing buffered disk reads: 1028 MB in 3.00 seconds = 342.11 MB/sec
缓存读取效果非常好,但我对缓冲读取的期望更高。我认为两个 6Gbps 驱动器的理论输出为 750MB/s,所以我预计会达到 600MB/s 左右。
感谢您的帮助。其他相关信息如下。如果我遗漏了任何内容,请告诉我。
OS: opensuse 13.1
RAM: 256GB (1866)
CPUs: Dual Intel Xeon E5-2650v2 2.6GHz, 20M Cache, 8.0GT/s QPI
答案1
6 Gbs 是 SAS 链路的速度,而不是单个磁盘的 IO 配置文件。
通常,SAS 背板的速度将被协商到最低公分母,因此您会发现仍然支持高速 SAS 链路的慢速磁盘,从而允许您在单个(外部)机箱或背板中混合磁盘,或者受益于分布在大量磁盘上的并行 IO。
类似 3 TB 7.2k 6 GB SAS 磁盘的 HP IO 配置文件为:
SAS Midline 驱动器适用于需要高容量的服务器和存储解决方案。这些驱动器具有价格适中的可靠性和性能,适合非关键任务、低工作负载应用程序,例如磁盘备份、归档和参考应用程序。
hdparm
最多只能表明原始磁盘性能,但它可以完全绕过文件系统,也不会模拟更多随机 IO,据我所知。请查看有哪些好的免费开源硬盘基准测试工具?
答案2
hdparm -T 本质上将测试读取磁盘缓存(即 CPU 和内存)的性能。这将测试当文件缓存在内存中时您将获得的读取速度(请参阅 free 命令的缓存部分)。
近线 SAS 驱动器不是完整的 SAS 驱动器。它们具有与 SAS 驱动器相同的优势,因为它们使用 SAS 接口,但仍然是 7200rpm 机械驱动器。您给出的 hdparm -t 数字与 RAID0 中的两个驱动器相当。相比之下,3TB SATA 驱动器的速度通常约为 150MB/s。
为了获得更好的性能,您将考虑添加更多驱动器。以 Hadoop 为例,建议获得每 GB 的最佳价格并使用更多驱动器并向集群添加更多服务器。如果您需要超强的 HD 性能,那么更高容量的 SSD 可能更合适,尽管由于更频繁的读/写周期,大量使用可能会导致早期故障。