注意:这个问题是真实的,但要分析它,请注意我已经从设备和总线能力的“理论”起点开始,我承认这通常根本不能代表使用中的带宽利用率。
我有一个 18 x SAS3 混合 8TB 和 10TB 企业驱动器阵列,在 ZFS (FreeBSD) 下配置为 6 组 3 路镜像。目前,它们都挂在单个 24 端口 HBA (9305-24i) 上。
很难知道有多少驱动器在高峰期一起工作,但假设它们都用于读取,我得到以下计算最坏的情况(可能不现实?):
SAS3 单工带宽:(12 gbits/sec) x (8/10 encoding) = 1.2 GB/sec 原始数据最大值
=> 18 x SAS3 峰值最大值:(1.2 x 18) = 21.6 GB/sec
但 PCI-E 3.0 x 8 单工带宽:7.9 GB/秒
因此,乍一看,似乎阵列可能会因需求而受到严重限制,因为链路将阵列 IO 从 21.6 GB/秒降至 7.9 GB/秒:损失了 64% 的 HDD I/ O能力。
另一方面,文件服务器主要由 2 个最终用户使用:文件服务器本身需要以最高速度读取和写入作为其文件处理的一部分,以及通过 10 GbE 链接的任何其他设备,因此即使使用 2 个链路聚合,也不能消耗超过 2 GB/秒的单工。因此,无论如何,它可能无法使用超过 PCI-E 链接速度的一小部分。
(即使我通过 SSH 对服务器本身进行一些文件管理,2 GB/秒仍然是相当不错的速度,我可能不会抱怨。)
此外,无论 SAS 3 理论上可以提供什么,12 gbit = 1.2 GB/秒,即使从其内部缓存中读取最大,企业 HDD 似乎也不太可能利用 SAS 带宽。SSD 是的,但是 HDD 呢?不太可能?数据表中的最大读取速度通常为 200 - 300 GB/秒左右。
因此,我的问题是,鉴于 HBA 可以在 PCI-E 上提供高达近 8 GB/秒的带宽,而最终用户最多可以消耗 2 GB/秒,实际上是否会产生节流效应?
换句话说,考虑到最终用户有 2 GB/秒的聚合连接,理论上磁盘阵列在 PCIE 插槽处从 22 GB/秒限制到 8 GB/秒是否重要?还是 PCI-E 插槽限制仍然是一个问题,因为本地系统有时需要比终端设备带宽建议的更快的 I/O?
如果有限制,我可以将磁盘拆分为 2 个 HBA,但我想知道如何评估是否存在真正的问题,然后再牺牲第二个 PCIE 插槽来提高原始磁盘 IO 的标准。
啊,你有没有费心摆脱理论数字?你说得真好...
是的。现在给我看一个可以提供足够数据以实际饱和它的 SAS3 链接的单个硬盘(您谈论的是 HDD)。提示:缓存不是光盘。
当您查看硬盘可以处理的真实数据数量时,您的论点就会失效。
引用磁盘堆栈的 Max SAS 吞吐量?
转动 x18,你最终会得到惊人的 20160kb/秒。舍入 20MB。那是您带宽的 0.1%。
SAS 足以处理数百张光盘是有原因的。
现在,当您将 SSD 添加到组合中时,这种情况确实会发生变化,是的,那么您很可能会淘汰 SAS。带一个 SSD。这就是为什么 U.2 外形尺寸实际上使用每个 SSD 的 PCIe 通道,并且有些情况下可以处理其中的 24 个。
但是,只要您不谈论 SSD,您基本上就忽略了协议层(标准化)的吞吐量绝对无关紧要的事实,因为您的终端设备甚至无法接近开始饱和。
由于您的带宽限制,您不会产生节流效果 - 您之所以会产生一个限制效果,是因为您基本上有一条高速公路供一些孤独的卡车使用。