性能的損耗是矛盾的根源,KVM採用全虛擬化技術,全虛擬化要由一個軟件來模擬硬件層,故有必定的損耗,特別是I/O輸入輸出。
KVM性能優化主要在CPU、內存、I/O這幾方面,固然在這幾方面也是要分場景的,不一樣場景優化方向也是不一樣的。vim
要考慮CPU的數量問題,全部guestCPU的總數目不要超過物理機CPU的總數目。若是超過,則將對性能帶來嚴重影響,建議選擇複製主機CPU配置後端
內存分配的最小單位是page(頁面),默認大小是4KB。能夠將host機內容相同的內存合併,以節省內存的使用,特別是在虛擬機操做系統都同樣的狀況下,確定會有不少內容相同的內存值,開啓了KSM,則會將這些內存合併爲一個,固然這個過程會有性能損耗,因此開啓與否,須要考慮使用場景。緩存
而KSM對KVM環境有很重要的意義,當KVM上運行許多相同系統的客戶機時,客戶機之間將有許多內存頁是徹底相同的,特別是只讀的內核代碼頁徹底能夠在客戶機之間共享,從而減小客戶機佔用的內存資源,能同時運行更多的客戶機性能優化
ll /sys/kernel/mm/ksm/服務器
每一個頁面的大小爲4KB,可計算出共享內存爲:4*頁面數=內存大小(KB)dom
爲了防止某個虛擬機無節制地使用內存資源,致使其餘虛擬機沒法正常使用,就須要對內存的使用進行限制
ide
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的權重weight,權重越高寫入磁盤的優先級越高。
一、總體的權重,範圍在100-1000
二、限制具體的I/O
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