Linux

使用 SSD 磁碟和 10 Gbe 網路時 iSCSI 性能不佳

  • August 14, 2015

iSCSI 目標

Ubuntu 14.04 (Trusty Tahr) 具有 16 GB RAM 和 16 核 CPU 作為 LVM 支持的 iSCSI 目標,使用三個三星 SSD 磁碟,每個都能夠使用帶有板載記憶體的 LSI 6 Gbit/s 控制器執行 65k IOPS。

目標中 SSD 磁碟的基準測試:

fio --filename=/dev/sdd --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=ssd-max

iops=65514

使用三個三星 850 EVO SSD在硬體RAID 0sdd配置的位置。

發起者

我在具有 32 GB RAM 和 8 個核心 CPU 的 Ubuntu 14.04 客戶端上導出了一個 500G LUN。

導出 LUN 的基準

fio --filename=/dev/sdg --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=client-max

iops=2400

執行 DAS 和通過網路時性能顯著下降,我預計至少 10k IOPS。

目標和發起方之間的通信不到 1 毫秒,iperf 顯示網路吞吐量為 9.2 Gbit/s。

我知道 4k 寫入會對性能產生影響,因為每個數據在寫入磁碟之前都必須通過啟動器和目標的網路堆棧,但這是從 65k 到 2k 的不可接受的下降。

問題可能出在哪裡?我在目標和啟動器之間有一個10 Gbit/s 乙太網NIC。有任何想法嗎?

**簡短的回答:**這是網路延遲direct=1串列工作負載的結果(正如您使用,sync=1和強加的iodepth=1)。

**長答案:**使用direct=1,sync=1並且您創建了一個串列工作負載,因為在送出確認iodepth=1之前的寫入之前,新的寫入無法排隊。換句話說,寫入送出率嚴格取決於網路延遲。兩台機器之間的簡單時間很可能超過 0.2 毫秒,當使用更高級別的協議如 TCP(以及在其之上的 iSCSI)時更是如此。假設總網路延遲約為 0.33 毫秒,您的最大 IOPS 值約為 3000。這沒有考慮其他延遲源(例如:磁碟本身),因此它與您記錄的內容一致。ping

**試試這個:**在沒有 的情況下執行第一個基準測試--direct=1 --sync=1,然後使用這些選項執行另一個基準測試,但將iodepth請求增加到 32 個。然後在這里報告結果。

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