如何才能实现最大持续连续磁盘写入性能?

如何才能实现最大持续连续磁盘写入性能?

我需要约 1 GB/秒的数据写入速率,持续约 1 小时。数据以这个速率传入PCIe x4 图像采集卡。我需要将其全部带宽传输到磁盘。

我没有使用过 RAID,但据我所知,RAID 0 搭配尽可能多的高 RPM 磁盘才是最佳选择。我还了解到,独立 RAID 控制器比主板内置的任何控制器都更快、更可靠。

为了得到具体答案的特定起点,我最初的猜测是以下硬件将是完成这项任务的良好系统:

  • RAID控制器:LSI MegaRAID 9280-16i4e
  • 硬盘:11x Western Digital Black Caviar 2 TB SATA III 7200 RPM 64 MB
  • 电缆:3ware CBL-SFF8087OCF-10M SFF-8087 串行 ATA 分支电缆
  • 主板:技嘉 GA-Z77X-UD3H LGA 1155 英特尔 Z77
  • 电源:Silverstone Strider Gold Evolution SST-ST1200-G 1200W v2.3 80 PLUS GOLD
  • 机箱:Rosewill RSV-L4411 4U 机箱 12 个热插拔托架

我的问题是: 如何实现最大持续连续磁盘写入性能?

一个好的答案将解决以下问题:

  • 为了实现最快的顺序写入,我需要在 RAID 控制器和 HDD 中寻找哪些功能/规格?
  • 写入速度是否与 CPU 无关?(例如,我如何确保使用 DMA?)有没有办法让数据路径绕过 RAM?四通道 RAM 和双通道 RAM 有关系吗?
  • 主板上是否存在需要注意的瓶颈,例如南北桥?如果是,我该如何检测/避免此类问题?
  • 在持续顺序写入时,任何缓存(在控制器、HDD、CPU 等上)是否相关?
  • 我如何确保 PSU 适用于所有这些驱动器?我知道我可能需要担心轨道上的电流消耗?这里的不足会表现为性能问题/随机崩溃,还是会直接正常工作/失败?
  • 与上述问题相同,关于冷却。
  • 使用外部驱动器外壳是否有优势?连接它们会造成瓶颈吗?
  • 哪些 BIOS 设置对于此应用程序很重要?AHCI 等?
  • 哪种文件系统最好?相机/帧抓取器驱动程序都是 Windows 的,所以我只能使用 win7。我猜 64 位与 32 位相比会提高带宽?
  • 我应该进行哪些调整?

A该问题的先前版本因“范围太广”而被删除:

“要么可能的答案太多,要么好的答案对于这种格式来说太长了。请添加详细信息以缩小答案集或隔离可以在几段中回答的问题。”

但我的问题非常具体,具有普遍意义,我提供的细节可以在一个段落中得到有效回答,而不是“整本书”。我所有详细的问题都只是为了确保答案全面,涵盖了任何人都应该关注的这个单一问题的潜在瓶颈:快速持续的顺序写入。将问题分成 32 个单独的问题对任何人都没有用,因为用户 50-3 建议。下面是一个示例响应,显示了我所期望的形式(我不知道实际信息是否正确,这是我最好的猜测):

  • 具有高 RPM 磁盘的 RAID 0 确实是实现最快持续顺序写入的方法(假设您使用帧抓取器的“流”模式)。SSD 不适合这样做,因为它们会随着使用而大大减慢写入时间,这是由于“平衡”所需的处理(防止任何一个位置比其他位置使用得更多)。
  • 要无限期地维持 1GB/秒,您需要 >3 个 7200RPM 6Gb/秒 SATA 驱动器(6Gb/秒 * 1/8 GB/Gb = .75 GB/秒/驱动器,无余量)。更多驱动器将线性提高带宽余量,但在总线数据宽度(32 或 64)之后会饱和。
  • SATA 是最具成本效益的 HDD 技术,SAS 在快速顺序写入方面没有明显的优势。SAS 在随机位置寻道时间和可靠性方面更胜一筹。SAS 中更快的 RPM 会增加顺序写入速度,但会被较低的密度/容量抵消。
  • 任何适用于帧抓取器/RAID 卡的驱动程序都使用 DMA(您提到的驱动程序就是),因此 CPU 无关紧要。数据路径将始终包括系统内存。写入磁盘的速度将比 RAM 慢得多,因此您不需要任何奇特的东西(任何 DDR3 都可以)。RAM 的数量(以及控制器、HDD、CPU 上的缓存大小)无关紧要,因为在持续写入期间缓冲区会很快填满。
  • 任何 PCIe 2.0 主板上的南北桥都不会成为瓶颈。您所需要的只是一个 >= PCIe 2.0 的独立 RAID 控制器,该控制器具有足够的 SATA 连接来连接您拥有的驱动器。只有在使用扩展器导致驱动器共享带宽时,与机箱的外部连​​接才会成为瓶颈。您需要一张 PCIe 通道数多于帧抓取器上的 4 个的卡,这样 PCIe 总线就不会成为瓶颈。9280 就很好,但对于您的目的来说有点大材小用;9240 8i 的成本不到一半,而且足够了。LSI 控制器是最昂贵的控制器之一,但在错误恢复过程中往往比便宜的品牌 Highpoint/Areca 更快/更可靠/更省事。
  • 您需要一个功率足以满足所有驱动器和控制器需求的 PSU(9280 使用 15W,每个 WD 使用 10W)。每个驱动器的峰值电流约为 1A,您需要限制 PSU 每个电路(“轨道”)上的电流数量。1200G 有一个 100A 的轨道,因此您不会遇到问题。过度消耗会表现为随机硬崩溃(可能会损坏驱动器和其他组件),过热也是如此。
  • 机箱内置 12 个热插拔托架,其冷却系统足以应对近乎恒定的非顺序读取负载,这种负载产生的热量比顺序写入更多。为确保不需要额外的冷却,请在持续写入几分钟后监测温度(谷歌 HDDTemp)。
  • AHCI 是唯一与快速顺序写入相关的 BIOS 设置(也启用 SMART)。将这两个都设置安装 Windows。
  • Windows 的 NTFS 文件系统就可以了(反正也没有其他选择)。
  • 与 win32 相比,win64 将具有更好的顺序写入性能,因为到 raid 控制器的 DMA 带宽将是其两倍。
  • 您不必进行任何调整;您的 raid 控制器设置的默认块大小等应该足够了。块越大速度越快,但更容易损坏且不必要。

如果您仍然认为这个问题“太宽泛”,请具体说明原因并建议如何缩小范围,同时为那些希望实现最大持续顺序写入性能的人提供详尽的答案。这个问题更适合 Superuser 而不是 Serverfault,因为它并不特定于企业 IT。

答案1

你列出了很长的清单,我不会一一回答。但是我想明确以下几点:

1) PCI 无法维持这些速度。PCI Express 可以,它是一种完全不同的技术,采用点对点链路(称为通道)而不是共享总线。您链接到的卡是“PCIe x4”。额外的功能e非常相关。

2) 条带 (RAID 0、RAID10 等) 是完全可行的。要么使用十几个高性能磁盘。或者您可以使用普通磁盘。办公室角落商店,标准的 7200 RPM SATA 驱动器将达到约 100MB/秒。因此,您至少需要十几个这样的驱动器(因为事情从来都不是那么完美)。

3) HW RAID、软件 RAID 和 Fake RAID(带有 BIOS 支持的软件 RAID,例如 Intel IRSST)均可工作。

如果您不需要进行大量计算(例如 RAID6)并且需要高性能或 CPU 较慢,则不建议使用软件 RAID。

硬件 RAID 会有所不同。好的硬件 RAID 卡很棒。与好的软件 RAID 解决方案相比,差的硬件 RAID 卡的性能可能相当差。好的硬件 RAID 通常需要电池支持的缓存或闪存来启用快速模式。

4) SATA II 或 III(3.0 或 6.0 GB/秒)或 SAS 3GBIT/秒、SAS 6GBIT SEC,... 无关紧要。单个旋转磁盘不会使这些链路饱和。当前消费者 SATA 驱动器的最大速度约为 100MB/秒。高端企业 SAS 驱动器可以达到 200MB/秒。两种速度都低于 3.0GB/秒。

5) RAID0 不太安全。如果一个磁盘发生故障,您将失去所有磁盘。如果您只需要测试并保存数据,这可能是可以接受的。然后立即将其保存在安全的地方进行处理。但是,您使用的磁盘越多,发生故障的磁盘就越多。

RAID 通常与冗余有关。 RAID0 不是,它只与性能有关

6)最后为了完整性:SSD 本身并不坏。对于这么多的数据,它们将昂贵的可能不需要,但 SSD 不需要减速。只需在将其添加到录制阵列之前完全擦除 SSD(例如删除所有分区或安全擦除)。一旦它满了,它可能会变慢。但适当准备并运行一个会话,它应该没问题。

7)

AHCI 是唯一与快速顺序写入相关的 BIOS 设置(也打开 SMART)。

您无法打开或关闭 SMART。它在驱动器上始终处于打开状态。BIOS 中的选项仅表示“在 POST 时读取驱动器 SMART 数据,如果有任何错误则警告用户。通常只有一行,如“SMART:磁盘故障即将发生。按 F1 继续!”。它不会影响性能。

在安装 Windows 之前设置这两项。

为了获得一致的性能:将操作系统安装在其自己的驱动器上。为操作系统和数据保留单独的卷。

8)

T 无限期地维持 1GB/秒,您需要 >3 7200RPM 6Gb/秒 SATA 驱动器(6Gb/秒 * 1/8 GB/Gb = .75 GB/秒/驱动器,没有余量)。

不。

6GBit/秒数据链路 SATA 驱动器将能够在磁盘和控制器/RAID 卡之间传输大约 300MiB/秒。(6.0 除以 8 以获得位到字节的转换,但也有一些开销并且更为/10现实)。

其次,驱动器将能够相当快地接收数据,但将数据写入磁盘的速度会比较慢。现代 7200 RPM SATA 驱动器的实际值是 100MiB/秒的持续写入。

这意味着您至少需要 10 个这样的驱动器。而且只有当所有东西都完美扩展时才需要。

更多的驱动器将线性提高您的带宽余量,但在总线的数据宽度(32 或 64)之后会饱和。

PCI 确实如此。但尽管 OP 写的是 PCI,但他指的是 PCI-e,它要快得多。4 通道 PCI-e v2 最高可达 10Gbit/秒。这应该足够了(尽管没有太多余地)。

相关内容