天天看點

KVM虛拟機的優化曆程---按需優化一、KVM為什麼要調優二、KVM優化思路及步驟

性能的損耗是沖突的根源,kvm采用全虛拟化技術,全虛拟化要由一個軟體來模拟硬體層,故有一定的損耗,特别是i/o輸入輸出。

kvm性能優化主要在cpu、記憶體、i/o這幾方面,當然在這幾方面也是要分場景的,不同場景優化方向也是不同的。

要考慮cpu的數量問題,所有guestcpu的總數目不要超過實體機cpu總數目,如果超過,則将對性能帶來嚴重影響,建議選擇複制主機cpu配置。

記憶體配置設定的最小機關是page(頁面),預設大小是4kb,可以将host主機内容相同的記憶體合并,以節省記憶體的使用。

當kvm上運作許多相同系統的客戶機時,客戶機之間将有很多記憶體頁是完全相同的,特别是隻讀的核心代碼頁完全可以在客戶機之間共享,進而減少客戶機占用的記憶體資源,也能同時運作更多的客戶機。

ll //sys/kernel/mm/ksm/
KVM虛拟機的優化曆程---按需優化一、KVM為什麼要調優二、KVM優化思路及步驟

檢視ksm是否開啟

cat run
KVM虛拟機的優化曆程---按需優化一、KVM為什麼要調優二、KVM優化思路及步驟

如果我們有多個虛拟機,為了防止某個虛拟機無節制的使用記憶體資源,導緻其他虛拟機無法正常使用,就需要對使用的記憶體進行限制。

virsh memtune c7-1 //檢視目前虛拟機的記憶體限制,機關為kb
KVM虛拟機的優化曆程---按需優化一、KVM為什麼要調優二、KVM優化思路及步驟

設定強制最大記憶體為100mb,線上生效。

virsh memtune c7-1 --hard-limit 1024000 --live
KVM虛拟機的優化曆程---按需優化一、KVM為什麼要調優二、KVM優化思路及步驟

在邏輯位址想實體位址轉換時,cpu保持一個翻譯後備緩沖器tlb,用來緩沖轉換結果,而tlb容量很小,是以如果page很小,tlb很容易就充滿,這樣就容易導緻cache miss,相反page變大,tlb需要儲存的緩存項就變少,就會減少cache miss,通過為用戶端提供大頁後端記憶體,就能減少客戶機消耗的記憶體并提高tlb命中率,進而提高kvm性能。

檢視記憶體資訊,無可用大頁

cat /proc/meminfo

指定大頁需要的記憶體頁面數量

echo 25000 > /proc/sys/vm/nr_hugepages //臨時生效

永久生效

關閉虛拟機,編輯虛拟機xml配置檔案使用大頁來配置設定記憶體。

virsh destroy c7-1 vim /etc/libvirt/qemu/c7-1.xml
KVM虛拟機的優化曆程---按需優化一、KVM為什麼要調優二、KVM優化思路及步驟

重新開機kvm服務,打開虛拟機,檢視大頁記憶體是否生效。

systemctl restart libvirtd.service virsh start c7-1 cat /proc/meminfo | grep hugepage
KVM虛拟機的優化曆程---按需優化一、KVM為什麼要調優二、KVM優化思路及步驟

關閉虛拟機,再檢視大頁記憶體是否有變化。

在實際的生産環境中,為了米面過度消耗磁盤資源而對其他的虛拟機造成影響,我們希望每台虛拟機對磁盤資源的消耗是可控的,比如多個虛拟機往硬碟中寫資料,誰可以優先寫,就可以調整i/o的權重weight,權重越高寫入磁盤的優先級越高。

對磁盤i/o控制方式有兩種方式:

在整體中的權重,範圍在100~1000. 限制具體的i/o.

針對虛拟機權重設定

virsh blkiotune c7-1 //檢視目前虛拟機權重狀态
KVM虛拟機的優化曆程---按需優化一、KVM為什麼要調優二、KVM優化思路及步驟
virsh blkiotune c7-1 --weight 500 //通過指令修改權重為500
KVM虛拟機的優化曆程---按需優化一、KVM為什麼要調優二、KVM優化思路及步驟

tuned是服務端程式,用來監控和收集系統各個元件的資料,并依據資料提供的資訊動态調整系統設定,達到動态優化系統的目的。

tuned-adm是用戶端程式,用來和tuned打交道,用指令行的管理方式和配置tuned/tuned-adm,提供了一些預先配置的優化方案可直接使用。

yum install tuned -y service tuned start tuned-adm active tuned-adm list
KVM虛拟機的優化曆程---按需優化一、KVM為什麼要調優二、KVM優化思路及步驟

更改解決方案

tuned-adm profile desktop

繼續閱讀