KVM調優 思路
性能的損耗是矛盾的根源,KVM採用全虛擬化技術,全虛擬化要由一個軟件來模擬硬件層,故有一定的損耗,特別是I/O輸入輸出。
KVM性能優化主要在CPU、內存、I/O這幾方面,當然在這幾方面也是要分場景的,不同場景優化方向也是不同的。
CPU優化
要考慮CPU的數量問題,所有guestCPU的總數目不要超過物理機CPU的總數目。如果超過,則將對性能帶來嚴重影響,建議選擇複製主機CPU配置
內存優化
內存分配的最小單位是page(頁面),默認大小是4KB。可以將host機內容相同的內存合併,以節省內存的使用,特別是在虛擬機操作系統都一樣的情況下,肯定會有很多內容相同的內存值,開啓了KSM,則會將這些內存合併爲一個,當然這個過程會有性能損耗,所以開啓與否,需要考慮使用場景。
而KSM對KVM環境有很重要的意義,當KVM上運行許多相同系統的客戶機時,客戶機之間將有許多內存頁是完全相同的,特別是只讀的內核代碼頁完全可以在客戶機之間共享,從而減少客戶機佔用的內存資源,能同時運行更多的客戶機
通過/sys/kernel/mm/ksm目錄下可查看內存頁共享的情況
ll /sys/kernel/mm/ksm/
每個頁面的大小爲4KB,可計算出共享內存爲:4*頁面數=內存大小(KB)
- 對內存設置限制
爲了防止某個虛擬機無節制地使用內存資源,導致其他虛擬機無法正常使用,就需要對內存的使用進行限制
virsh memtune cc2 查看虛擬機內存狀態
virsh memtune cc2-hard-limit 1024000 --live #限制內存使用 在線狀態
大頁後端內存
在邏輯地址向物理地址轉換時,CPU保持一個翻譯後備緩衝器TLB,用來緩存轉換結果,而TLB容量很小,所以如果page很小,TLB很容易就充滿,這樣就容易導致cache miss,相反page很大,TLB需要保存的緩存項就變小,就會減少cache miss。通過爲客戶機提供大頁後端內存,就能減少客戶機消耗的內存並提高TLB命中率,從而提升KVM性能。
使用大頁,KVM的虛擬機的頁表將使用更少的內存,並且提高CPU的效率
cat /proc/meminfo
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
指定大頁需要的內存頁面數量
echo 25000 > /proc/sys/vm/nr_hugepages //臨時生效
永久生效
sysctl -w vm.nr_hugepages=25000
或者
vim /etc/sysctl.conf
vm.nr_hugepages=25000 //添加行,執行sysctl -p 立即生效
關閉虛擬機,編輯虛擬機XML配置文件使用大頁來分配內存。
<domain type='kvm'>
<name>c1</name>
<uuid>3a629211-b4f4-4484-9832-897fd082e621</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<memoryBacking><hugepages/></memoryBacking> #添加使用大頁
<vcpu placement='static'>1</vcpu>
重啓KVM服務,打開虛擬機,查看大頁內存是否生效。
systemctl restart libvirtd.service
virsh start c1
cat /proc/meminfo | grep HugePage
- I/O優化
在實際的生產環境中,爲了避免過度消耗磁盤資源而對其他的虛擬機造成影響,我們希望每臺虛擬機對磁盤資源的消耗是可以控制的。就可以調整I/O的權重weight,權重越高寫入磁盤的優先級越高。
1、整體的權重,範圍在100-1000
2、限制具體的I/O
- 系統調優工具tuned
tuned是服務端程序,用來監控收集系統各個組件的數據,並依據數據提供的信息動態調整系統設置,達到動態優化系統的目的
yum install tuned -y service tuned start tuned-adm active tuned-adm list
virtual-guest:企業級服務器配置中使用這個profile,其中包括電池備份控制程序、緩存保護以及管理磁盤緩存
latency-performance:延遲性能調試的服務器配置
enterperise-storage:企業存儲服務器優化方案
default:默認節點配置,是最基本的節點配置,只啓用磁盤和CPU插件
virtual-host:根據enterperise-storage配置,virtual-host還可減少可置換的虛擬內存,並啓用更多集合髒頁寫回。同時推薦在虛擬化主機中使用這個配置,包括KVM和紅帽企業版Linux虛擬化主機
throughput-performance:吞吐性能調整的服務器profile。如果系統沒有企業級存儲,建議使用這個profile