與故障轉移相比,為什麼主動-主動配置會降低性能?
我們正在為我們正在管理的應用統計、生物資訊學和基因組學的 HPC 計算集群設置新的儲存。
配置
我們有一個帶有 Dell EMC ME4084 (84x12TB 7200rpm) 的主機箱和一個帶有 Dell EMC ME484 (28x12TB) 的附加機箱。EMC ME4084 提供 ADAPT 分佈式 RAID(類似於 RAID6)和雙硬體控制器。
文件伺服器執行 CentOS 7。儲存使用兩根 SAS 電纜連接到文件伺服器。每個 LUN 對應一個具有 ADAPT 的 14 磁碟組,並且兩個 SAS 連接都顯示為設備
sdb
和sdj
. 以下範例針對 LUN ID 0 給出。我們
multipath
為主動-主動配置進行瞭如下配置:$ cat /etc/multipath.conf defaults { path_grouping_policy multibus path_selector "service-time 0" } $ multipath -ll mpatha (3600c0ff000519d6edd54e25e01000000) dm-6 DellEMC ,ME4 size=103T features='0' hwhandler='0' wp=rw `-+- policy=‘service-time 0' prio=1 status=active |- 1:0:0:0 sdb 8:16 active ready running `- 1:0:1:0 sdj 8:144 active ready running
故障轉移配置:
$ cat /etc/multipath.conf defaults { path_grouping_policy failover path_selector "service-time 0" } $ multipath -ll mpatha (3600c0ff000519d6edd54e25e01000000) dm-6 DellEMC ,ME4 size=103T features='0' hwhandler='0' wp=rw |-+- policy=’service-time 0' prio=1 status=active | `- 1:0:0:0 sdb 8:16 active ready running `-+- policy=’service-time 0' prio=1 status=enabled `- 1:0:1:0 sdj 8:144 active ready running
我們驗證了寫入會
mpatha
導致在主動-主動配置中sdb
和sdj
僅sdb
在啟用主動的配置中寫入。我們將mpatha
另一個條帶化mpathb
到一個邏輯卷中,並使用 XFS 對其進行格式化。測試設置
fio
我們使用以下工作負載對 I/O 性能進行了基準測試:
- 單個 1MiB 隨機讀/寫程序
- 單個 4KiB 隨機讀寫程序
- 16 個並行 32KiB 順序讀/寫程序
- 16 個並行 64KiB 隨機讀/寫程序
測試結果
Failover Active-Active ------------------- ------------------- Workload Read Write Read Write -------------- -------- -------- -------- -------- 1-1mb-randrw 52.3MB/s 52.3MB/s 51.2MB/s 50.0MB/s 1-4kb-randrw 335kB/s 333kB/s 331kB/s 330kB/s 16-32kb-seqrw 3181MB/s 3181MB/s 2613MB/s 2612MB/s 16-64kb-randrw 98.7MB/s 98.7MB/s 95.1MB/s 95.2MB/s
我只報告了一組測試,但結果在重複(n = 3)和
path_selector
.是否有任何理由主動-主動不能至少與主動啟用的性能相匹配?我不知道問題是否與工作負載和多路徑配置有關。當我們使用線性邏輯捲而不是條帶化時,差異更加驚人(20%)。我真的很好奇我是否忽略了一些明顯的東西。
非常感謝,
尼古拉斯
當您使用 HDD 時,單個控制器 對於您的後端磁碟來說已經*非常快了。*在主動/主動模式下添加另一個控制器意味著沒有額外的 IOP(由於 HDD),但在多路徑級別有更多成本,因此會降低性能。
換句話說:您將在第一個控制器的 CPU之前使 HDD 飽和,因此讓它們處於主動/被動模式。此外,我會嘗試使用單個 28 磁碟陣列並對其進行基準測試,以查看它是否提供了比實際 2x 14 磁碟設置更多或更少的性能。