KVM虛擬化的優化

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/

KVM虛擬化的優化
每個頁面的大小爲4KB,可計算出共享內存爲:4*頁面數=內存大小(KB)

  • 對內存設置限制

    爲了防止某個虛擬機無節制地使用內存資源,導致其他虛擬機無法正常使用,就需要對內存的使用進行限制
    KVM虛擬化的優化

virsh memtune cc2 查看虛擬機內存狀態
virsh memtune cc2-hard-limit 1024000 --live #限制內存使用 在線狀態

KVM虛擬化的優化
大頁後端內存

在邏輯地址向物理地址轉換時,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虛擬化的優化
KVM虛擬化的優化
KVM虛擬化的優化
重啓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

    KVM虛擬化的優化

virtual-guest:企業級服務器配置中使用這個profile,其中包括電池備份控制程序、緩存保護以及管理磁盤緩存
latency-performance:延遲性能調試的服務器配置
enterperise-storage:企業存儲服務器優化方案
default:默認節點配置,是最基本的節點配置,只啓用磁盤和CPU插件
virtual-host:根據enterperise-storage配置,virtual-host還可減少可置換的虛擬內存,並啓用更多集合髒頁寫回。同時推薦在虛擬化主機中使用這個配置,包括KVM和紅帽企業版Linux虛擬化主機
throughput-performance:吞吐性能調整的服務器profile。如果系統沒有企業級存儲,建議使用這個profile
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章