1. 程式人生 > 實用技巧 >KVM虛擬化Disk Cache模式對效能的影響分析

KVM虛擬化Disk Cache模式對效能的影響分析

緩衝模式

qemu-kvm磁碟讀寫的緩衝(cache)模式一共有五種,分別是writethrough, wirteback, none, unsafe, directsync,當你對VM讀寫磁碟的效能有不同的要求的時候,你可以在其啟動的引數(cache=xxxx)裡面進行一個合理的選擇。

  • cache=writethrough

該模式對應的標誌位是 O_DSYNC ,僅當資料被提交到了儲存裝置裡面的時候,寫操作才會被完整的通告。此時host的頁快取可以被用在一種被稱為writethrough快取的模式。guest的虛擬儲存裝置被告知沒有回寫快取(writeback cache),因此guest不需要為了操縱整塊資料而傳送重新整理快取的指令了。此時的儲存功能如同有一個直寫快取(writethrough cache)一樣。

  • cache=none(讀效能最佳,適用於讀多寫少的場合,例如資料庫伺服器)

所對應的標誌位是 O_DIRECT ,在 none 模式下,VM的IO操作直接在qemu-kvm的userspace緩衝和儲存裝置之間進行,繞開了host的頁緩衝。這個過程就相當於讓vm直接訪問了你的host的磁碟,從而效能得到了提升。

  • cache=writeback(寫效能最佳,ceph rbd開啟快取時必須使用此模式,並且rbd資料格式必須為raw)

對應的標誌位既不是 O_DSYNC 也不是 O_DIRECT ,在writeback模式下,IO操作會經過host的頁緩衝,存放在host頁緩衝裡的寫操作會完整地通知給guest.除此之外,guest的虛擬存貯介面卡會被告知有回寫快取(writeback cache),所以為了能夠整體地管理資料,guest將會發送重新整理快取的指令.類似於帶有RAM快取的磁碟陣列(RAID)管理器.

  • cache=unsafe(資料不安全)

該模式與writeback差不多,不過從guest發出的重新整理快取指令將會被忽視掉,這意味著使用者將會以犧牲資料的完整性來換取效能的提升。

  • cache=directsync(新新增的模式,writethrough和none的結合)

該模式所對應的標誌位是 O_DSYNC 和 O_DIRECT ,僅當資料被提交到了儲存裝置的時候,寫操作才會被完整地通告,並且可以放心地繞過host的頁快取。就像writethrough模式,有時候不傳送重新整理快取的指令時很有用的.該模式是最新新增的一種cache模式,使得快取與直接訪問的結合成為了可能.

推薦設定

  • ssd pool(ceph rbd)
image format: raw
hdd cache mode: Write back
  • sas pool(ceph fs)
image format: qcow2
hdd cache mode: Disabled / Write back
  • 關閉系統的Swap
swapoff -a

注:物理機必須使用swap分割槽,虛擬機器不要使用swap分割槽。修改/etc/fstab檔案,註釋掉SWAP的自動掛載,使用free -m確認swap已經關閉。

核心引數說明

overcommit_memory檔案指定了核心針對記憶體分配的策略,其值可以是0、1、2。

0: 表示核心將檢查是否有足夠的可用記憶體供應用程序使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用程序
1: 表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何
2: 表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體