使用 SSD 磁碟和 10 Gbe 網路時 iSCSI 性能不佳
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 0中
sdd
配置的位置。發起者
我在具有 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 個。然後在這里報告結果。