最佳性能:1tb 与仅使用顺序读/写的应用程序中更大的驱动器

Pae*_*ula 6 performance sata

我有一个多线程的自定义应用程序;每个线程都在自己的逻辑内核上运行(工作站是双 Xeon,具有 12 个物理内核和 24 个逻辑内核)。所以有 24 个线程同时运行。

在过去的 2 天里,我一直在研究多种存储选项,我的头以大约 15k rpm 的速度旋转。

该应用程序有2种模式,它们是独占的:读取数据或写入数据;我的意思是他们不会进行交错的读/写。每个线程只会进行长时间的顺序读取或写入。我需要的总存储空间很大:超过 50 tbs(如果您在 2016 年读到这篇文章,您现在可能对“巨大”这个词感到很开心。)

每个线程将读取或写入一个大约 .8tb 的文件

我将使用 jbod,因为如果驱动器出现故障,我需要做的就是更换它,该应用程序将在大约 10 分钟内重新创建数据。

我将使用 SATA 或 SAS 控制器将驱动器放入外部塔式或机架中(尚未弄清楚它们的 +/-)。

所以,我的问题是:我假设为这个特定应用程序使用 1tb 驱动器比使用 2、3 或 4 倍大小的驱动器在性能方面更好吗?看起来,除非 3 tb 驱动器的顺序读/写吞吐量是 1 tb 驱动器的 3 倍,否则较小的驱动器是可行的方法。

显然,使用 3 tb 驱动器将我需要担心的驱动器数量减少了 1/3,但只有当我能够实现与 1tb 驱动器相同的性能时,这才是一个考虑因素。

kub*_*zyk 3

最重要的是,为了获得最佳性能,您需要 24 个驱动器(或更多,请耐心等待),因为您有 24 个线程。如果磁盘少于线程,则没有顺序操作。考虑到单个磁盘上的两个线程,它将有一些寻道;每次寻道大约需要 10 毫秒,因此损失了大约 1 MB 的传输机会。每秒仅 10 次搜索,您的速度为 90 MB/s (2 x 45),而不是 1 x 100 MB/s。

我认为 48 个驱动器(每个驱动器 1 TB)会更好。驱动器将进行配对,以获得 24 个剥离(又名 RAID0)组。您可以假设在操作系统级别完成的剥离将产生不明显的影响,因此每个线程实际上获得 1 TB 驱动器的双倍吞吐量。

我认为 3 TB 硬盘在性能方面没有任何优势。

但最大的性能优势仍然是完全不同的。只需确保应用程序有效地传输数据 - 它认真地向 HDD 上的队列提供这些 I/O 命令。如果它的编写方式是在对另一个 I/O 进行排队之前笨拙地等待某些 I/O 完成,那么它将严重影响吞吐量。

  • 最好在应用程序本身中修复它,或者......
  • 为了部分缓解这一问题,您需要投入大量资金购买具有巨大额外缓存的磁盘阵列。

附言。喜欢关于 2016 年的评论,大家好!你已经拿到那些悬停板了吗?