为什么当我从 4 磁盘 RAID 10 升级到 6 磁盘 RAID 10 时性能没有提升?

为什么当我从 4 磁盘 RAID 10 升级到 6 磁盘 RAID 10 时性能没有提升?

我在 RAID10 组中有 4 个驱动器和 2 个备用磁盘。我们一直在监控 perfmon 平均磁盘传输(读取和写入)秒数计数器。我们又买了 2 个磁盘,使用 6 个磁盘(2 个跨度)重建了 RAID10 组,性能保持不变。RAID10 是否仅基于 4 个磁盘倍数(4、8、12 等)进行改进?

我正在使用 Dell R510。这是一台 SQL 服务器。我们将相同的文件保存在卷上。


我正在使用 Dell Perc H700 1GB 非易失性缓存。

ADs/T约为200ms。

这些是 15K sas 驱动器 600GB

我不知道 Dell PERC 控制器如何进行跨度。它只是询问我想要跨度中的磁盘数量(在本例中为 2 个或 3 个)。

我们添加主轴的原因是为了增加每笔交易的总时间。我们从 RAID1 升级到 RAID10(4 个磁盘),性能翻了一番。我们希望增加 33%。建议 ADs/T 最大为 20ms。我们的是 100。我们意识到我们无法通过添加 2 个磁盘达到 20,但由于在我来这里之前它们的时间为 400ms,因此它们暂时在 50 到 60 之间是可以的。

每秒传输量约为 850


我理解添加磁盘不会加快针对给定磁盘的单个传输的逻辑。但出于所有意图和目的,ADs/T(或读取或写入)是根据 Windows 对针对给定磁盘/卷执行某项操作所花费的时间的度量。因此,如果整个事务需要 40 毫秒,但实际上它写入 4 个磁盘,则如果并行执行,理论上每个磁盘花费 10 毫秒。它总是有可能尽可能快地写入一个磁盘,然后继续写入下一个磁盘,但人们如何知道它在做什么?

因此,4 个磁盘所需的时间应该与 6 个磁盘成比例。即使磁盘已达到其最大潜力,Windows 也应该将其视为更快,每个磁盘都不会更快。

由于索引规模庞大、所有 sql 文件所需的总空间以及成本,ssd 对我们来说不是一个选择。SSD 大小目前还不够,但对于较小尺寸的文件来说,它可能有意义。

如果添加磁盘无助于提高速度,那么如何解释从 2 个磁盘增加到 4 个磁盘时性能提高 50%,而从 4 个磁盘增加到 6 个磁盘时性能却没有任何提高?

答案1

您应该深入了解 SQL 性能统计数据以及驱动器统计数据。如果您有大量连接,创建多个较小的 TempDB 文件可能会有所帮助。(阅读此内容,这对我们来说是一大收获。http://msdn.microsoft.com/en-us/library/ms175527.aspx) 如果缓冲区缓存比率低于 93,您可能需要更多内存。一个统计数据不足以诊断问题。有多种方法可以破坏存储。

如果机器是 2008,请使用资源监视器来确定哪些 DB 文件最繁忙。将它们放在不同的主轴上是最好的性能修复方法。具体来说,如果您有大量的读取和写入操作而不是大部分是读取,则应该考虑获取第二个驱动器控制器、几个较小的 15k 外部驱动器,并将 LOG 和 TempDB 文件从包含数据的驱动器组中移开。

答案2

您可能会受到总线的限制,还请考虑使用多通道电缆来增加吞吐量。

答案3

您可能遇到了总线或处理器无法处理数据的问题。如果这确实是瓶颈,那么您需要考虑购买另一台机器,取出您添加的 2 个磁盘,并将它们添加到另一台机器上的 raid10 中。

此时,您将在机器上的两个 RAID 之间设置一个并行文件系统,以进一步提高性能(您应该会看到数据读写速率大幅提升)

答案4

RAID的肮脏小秘密:

如果您的瓶颈是由于任务太多而磁盘不足而导致排队,那么添加更多磁盘只会提高您的性能。它不会使单个磁盘变得更快,实际上会增加一定的开销。最后,从磁盘读取数据的方式与以前完全相同,并且仍然需要同样长的时间。不同之处在于您可以同时在多个磁盘上执行此操作 - 这只有在您保持所有磁盘繁忙时才有用。

换用速度更快的磁盘(如 SSD)可能会有很大帮助。如果延迟和寻道时间是问题所在,那么单个 SSD 的性能就可能优于一整盒 Winchester 驱动器。

一个有趣的解决方案仍在开发中,但已经显示出很大的前景,那就是 Facebook 的闪存缓存模块。它仅适用于 Linux,但如果性能是一个问题,那么你无论如何都不应该使用 Windows。Vadim Tkachenko 在 Percona 进行的一些基准测试表明,flashcache 可以让你约 99% 的表现在 SSD 上运行仅需花费一小部分成本——显然假设你的命中分布不是均匀分布在整个数据集上。

相关内容