如何從 Citrix XenServer 獲得更高的 I/O 性能?
我在 HP 伺服器上安裝了 Citrix XenServer 6.1(1x Intel Xeon E5630 @ 2.53GHz(4 核,8 執行緒,RAM:dom0 為 752MB,來賓為 55286MB)。伺服器有 2 個 scsi 鏡像磁碟,用於開發/測試。
主機執行我在測試期間打開或關閉的 5 個客人。大多數性能測試的結果都很差。但我想調整 Xen:例如,“dd if=/dev/zero …”在主機上提供 130MB/s,但在單獨的客人上只有 75MB/s。
如果我
dd if=/dev/urandom
在客戶機上執行 a,CPU 就會飽和,我得到 7MB/s。通過
tune-vcpus
,我設法為 dom0 提供了 8 個 vCPU,但我得到的性能更少。預設值為 4 個 vCPU,我想只給 dom0 1 個 vCPU,但它不起作用。這是我嘗試過的:
- 編輯
/etc/sysconfig/tunes-vcpus
> NR_DOMAIN0_VCPUS=1 和 MAX_NR_DOMAIN0_VCPUS=1/etc/init.d/tune-vcpus
開始分鐘- 重啟主機
我也試過
/opt/xensource/libexec/xen-cmdline -set-dom0 blkbk.reqs=256
為了從儲存中獲得更多性能,它不會改變任何東西。
我在 VBD 上啟用了 Qos,並將最高優先級分配給我進行測試的那個。
畢竟,我在 I/O 性能方面沒有任何收穫。還有什麼可做的嗎?
您可以嘗試為 max_sectors_kb 找到一個合適的值。預設設置為 512 或 1024。例如,您可以將其設置為 128 並再次測試(dom0 和 domU)。
echo 128 > /sys/block/[your blockdevice]/queue/max_sectors_kb
此設置不是持久的。將條目放入 /etc/rc.local 以在啟動時進行設置。
請發布您的結果。
您可以嘗試添加的一件事是將 vm 中的 io 調度程序切換到截止日期,並實際上在此處禁用 io 合併。這應該會減少一般的 io 延遲,並且它可能與 Xen 的 IO 環結構一起工作得更好。
echo 1 > /sys/block/$dev/queue/nomerges
我的推理和經驗是 Linux 的塊程式碼並不是很聰明,但我認為它是。因此,它會在將所有 IO 請求傳遞給磁碟驅動程序之前嘗試將它們理想地合併為一個請求。在 Xen 的例子中,下一個動作是將它們分開,以便它們適合環形緩衝區。然後它們位於 dom0 中,並且磁碟驅動程序處於更好的位置,可以找出需要合併的內容,因為它不需要單獨的 VM 知識來進行對齊。
如果它沒有幫助,那麼撤消更改,但是當其他一切都已經嘗試過時,這是我會看的地方。
也許您的伺服器很久以前就被遺棄了,但是我仍然會幫助其他人。