KVM虛擬機的優化歷程---按需優化

1、KVM爲何要調優

  • 性能的損耗是矛盾的根源,KVM採用全虛擬化技術,全虛擬化要由一個軟件來模擬硬件層,故有必定的損耗,特別是I/O輸入輸出。
  • KVM性能優化主要在CPU、內存、I/O這幾方面,固然在這幾方面也是要分場景的,不一樣場景優化方向也是不一樣的。

2、KVM優化思路及步驟

一、CPU優化

  • 要考慮CPU的數量問題,全部guestcpu的總數目不要超過物理機CPU總數目,若是超過,則將對性能帶來嚴重影響,建議選擇複製主機CPU配置。

二、內存優化

(1)KSM---kernel Samepage Merging 相同頁合併

  • 內存分配的最小單位是page(頁面),默認大小是4KB,能夠將host主機內容相同的內存合併,以節省內存的使用。
  • 當KVM上運行許多相同系統的客戶機時,客戶機之間將有不少內存頁是徹底相同的,特別是只讀的內核代碼頁徹底能夠在客戶機之間共享,從而減小客戶機佔用的內存資源,也能同時運行更多的客戶機。

ll //sys/kernel/mm/ksm/vim

KVM虛擬機的優化歷程---按需優化

  • 查看KSM是否開啓

cat run後端

KVM虛擬機的優化歷程---按需優化

[root@bogon ksm]# cat run    //是否開啓KSM,0爲關閉,1爲開啓
0
[root@bogon ksm]# echo 1 > run  //臨時開啓KSM,只能使用重定向,不支持VI編輯器
                                //若想永久開啓,可在/etc/rc.local中添加echo 1 > /sys/kernel/mm/ksm/run,讓KSM開機自動運行
[root@bogon ksm]# cat pages_to_scan  //按期掃描相同頁,sleep_millisecs決定多長時間
                                     //pages_to_scan決定每次查看多少個頁面
                                     //默認是100,越大越好,超過2000無效,須要開啓兩個服務ksmtuned和tuned,支持更多頁面

(2)對內存設置限制

  • 若是咱們有多個虛擬機,爲了防止某個虛擬機無節制的使用內存資源,致使其餘虛擬機沒法正常使用,就須要對使用的內存進行限制。

virsh memtune c7-1 //查看當前虛擬機的內存限制,單位爲KB緩存

KVM虛擬機的優化歷程---按需優化

hard_limit     : 無限制       //強制最大內存
soft_limit     : 無限制       //可用最大內存
swap_hard_limit: 無限制       //強制最大swap使用大小
  • 設置強制最大內存爲100MB,在線生效。

virsh memtune c7-1 --hard-limit 1024000 --live性能優化

KVM虛擬機的優化歷程---按需優化

三、大頁後端內存

  • 在邏輯地址想物理地址轉換時,CPU保持一個翻譯後備緩衝器TLB,用來緩衝轉換結果,而TLB容量很小,因此若是page很小,TLB很容易就充滿,這樣就容易致使cache miss,相反page變大,TLB須要保存的緩存項就變少,就會減小cache miss,經過爲客戶端提供大頁後端內存,就能減小客戶機消耗的內存並提升TLB命中率,從而提升KVM性能。dom

  • 查看內存信息,無可用大頁

cat /proc/meminfotcp

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配置文件使用大頁來分配內存。

virsh destroy c7-1
vim /etc/libvirt/qemu/c7-1.xmlide

......
<domain type='kvm'>
  <name>c7-1</name>
  <uuid>09ea8217-8943-47b1-9275-63b0357d31e2</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <memoryBacking><hugepages/></memoryBacking>   //添加,使用大頁
  <vcpu placement='static'>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
    <boot dev='hd'/>
......

KVM虛擬機的優化歷程---按需優化

  • 重啓KVM服務,打開虛擬機,查看大頁內存是否生效。

systemctl restart libvirtd.service
virsh start c7-1
cat /proc/meminfo | grep HugePage工具

KVM虛擬機的優化歷程---按需優化

  • 關閉虛擬機,再查看大頁內存是否有變化。

四、I/O優化

  • 在實際的生產環境中,爲了米麪過分消耗磁盤資源而對其餘的虛擬機形成影響,咱們但願每臺虛擬機對磁盤資源的消耗是可控的,好比多個虛擬機往硬盤中寫數據,誰能夠優先寫,就能夠調整I/O的權重weight,權重越高寫入磁盤的優先級越高。性能

  • 對磁盤I/O控制方式有兩種方式:

在總體中的權重,範圍在100~1000.
限制具體的I/O.

  • 針對虛擬機權重設置

virsh blkiotune c7-1 //查看當前虛擬機權重狀態

KVM虛擬機的優化歷程---按需優化

virsh blkiotune c7-1 --weight 500 //經過命令修改權重爲500

KVM虛擬機的優化歷程---按需優化

五、系統調優工具tuned/tuned-adm

  • tuned是服務端程序,用來監控和收集系統各個組件的數據,並依據數據提供的信息動態調整系統設置,達到動態優化系統的目的。
  • tuned-adm是客戶端程序,用來和tuned打交道,用命令行的管理方式和配置tuned/tuned-adm,提供了一些預先配置的優化方案可直接使用。

yum install tuned -y
service tuned start
tuned-adm active
tuned-adm list

KVM虛擬機的優化歷程---按需優化

  • 更改解決方案

tuned-adm profile desktop

相關文章
相關標籤/搜索