Zfs

我的 SAS HDD 陣列可以使用多少 PCI-E 頻寬?

  • July 7, 2020

注意:這個問題是現實世界的,但要分析它,請注意我從設備和匯流排能力的“理論”起點開始,我承認這通常根本不能代表使用中的頻寬使用率。

我有一個 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 的標準。

啊,你有沒有費心擺脫理論數字?你說得真好…

峰值時 18 x SAS3 最大值:(1.2 x 18) = 21.6 GB/秒

是的。現在給我看一個可以提供足夠數據以實際飽和它的 SAS3 連結的單個硬碟(您談論的是 HDD)。提示:記憶體不是光碟。

當您查看硬碟可以處理的真實數據數量時,您的論點就會失效。

引用磁碟堆棧的 Max SAS 吞吐量?

因此,一個 SAS 10K HDD 的 IOPS 約為 140。對於 8KB 塊,吞吐量僅為 8 * 140 = 1120 KB/s。

轉動 x18,你最終會得到驚人的 20160kb/秒。舍入 20MB。那是您頻寬的 0.1%。

SAS 足以處理數百張光碟是有原因的。

現在,當您將 SSD 添加到組合中時,這種情況確實會發生變化,是的,那麼您很可能會淘汰 SAS。帶一個 SSD。這就是為什麼 U.2 外形尺寸實際上使用每個 SSD 的 PCIe 通道,並且有些情況下可以處理其中的 24 個。

但是,只要您不談論 SSD,您基本上就忽略了協議層(標準化)的吞吐量絕對無關緊要的事實,因為您的終端設備甚至無法接近開始飽和。

由於您的頻寬限制,您不會產生節流效果 - 您之所以會產生一個限制效果,是因為您基本上有一條高速公路供一些孤獨的卡車使用。

引用自:https://serverfault.com/questions/1024347