頻道欄目
首頁 > 資訊 > 云計算 > 正文

KVM性能優化教程

19-02-18        來源:[db:作者]  
收藏   我要投稿
一、KVM為什么要調優

性能的損耗是關鍵。KVM采用全虛擬化技術,全虛擬化要由一個軟件來模擬硬件,故有一定的損耗,特別是I/O,因此需要優化。

KVM性能優化主要在CPU、內存、I/O這幾方面。當然對于這幾方面的優化,也是要分場景的,不同的場景其優化方向也是不同的。

二、KVM優化思路及步驟

KVM的性能已經很不錯了,但還有一些微調措施可以進一步提高KVM的性能

1、CPU的優化

要考慮CPU的數量問題,所有guestcpu的總數目不要超過物理機CPU的總數目。如果超過,則將對性能帶來嚴重影響,建議選擇復制主機CPU配置。

2、內存的優化

(1)KSM(Kernel Samepage Merging,相同頁合并)

內存分配的最小單位是page(頁面),默認大小是4KB,可以將host機內容相同的內存合并,以節省內存的使用,特別是在虛擬機操作系統都一樣的情況下,肯定會有很多內容相同的內存值,開啟了KSM,則會將這些內存合并為一個,當然這個過程會有性能損耗,所以開啟與否,需要考慮使用場景。

而KSM對KVM環境有很重要的意義,當KVM上運行許多相同系統的客戶機時,客戶機之間將有許多內存頁是完全相同的,特別是只讀的內核代碼頁完全可以在客戶機之間共享,從而減少客戶機占用的內存資源,能同時運行更多的客戶機。

KSM會稍微影響系統性能,以效率換空間,如果系統的內存很寬裕,則無須開啟KSM,如果想盡可能多地并行運行KVM客戶機,則可以打開KSM。

ll /sys/kernel/mm/ksm/ //查看內核信息

KVM性能優化

pages_shared合并的頁面數

pages_sharing 正在共享單個頁面的虛擬頁面數

page_unshared 作為共享候選者但當前未共享的頁數

page_volatile 作為共享候選者但頻繁更改的頁數,KSM服務不會合并這個頁面

full_scan 為重復內容掃描KSM的次數

merge_across_nodes 是否允許在NUMA節點中執行合并

pages_to_scan 一次掃描的頁數,該數字會影響系統性能

sleep_milisecs 掃描之間的時間間隔

每個頁面的大小為4KB,可計算出共享內存為:4頁面數=內存大小(KB)>

cd /sys/kernel/mm/ksm/

cat run //是否開啟KSM,0是不開啟,1是開啟

echo 1 > run //臨時開啟KSM,只能使用重定向,不支持VI編輯器

vi /etc/rc.local //添加echo 1 > /sys/kernel/mm/ksm/run,讓KSM開啟自啟

cat pages_to_scan //定期掃描相同頁,sleep_millisecs決定多長時間, pages_to_scan決定每次查看多少個頁面,默認為100,越大越好,超過2000無效, 需要開啟兩個服務ksmtuned和tuned支持更過頁面>>

(2)對內存設置限制

如果我們有多個虛擬機,為了防止某個虛擬機無節制地使用內存資源,導致其他虛擬機無法正常使用,就需要對內存的使用進行限制。

virsh memtune c01 //查看當前虛擬機c01內存的限制,單位為KB

KVM性能優化

virsh memtune --help

KVM性能優化 KVM性能優化

virsh memtune c01 --hard-limit 1024000 --live //設置強制最大內存并且在線生效

virsh memtune c01 //查看

KVM性能優化

(3)大頁后端內存(Huge Page Backed Memory)

在邏輯地址向物理地址轉換時,CPU保持一個翻譯后備緩沖器TLB,用來緩存轉換結果,而TLB容量很小,所以如果page很小,TLB很容易就充滿,這樣就容易導致cache miss,相反page變大,TLB需要保存的緩存項就變少,就會減少cache miss。通過為客戶機提供大頁后端內存,就能減少客戶機消耗的內存并提高TLB命中率,從而提升KVM性能。

Intel的x86 CPU通常使用4KB內存頁、但是經過配置,也能夠使用大頁(huge page): x86_32是4MB,x86_64和x86_32 PAE是2MB,這是KVM虛擬機的又一項優化技術。

使用大頁,KVM的虛擬機的頁表將使用更少的內存,并且將提高CPU的效率。

cat /proc/meminfo //查看內存信息,無可用大頁

KVM性能優化

echo 25000 > /proc/sys/vm/nr_hugepages //指定大頁需要的內存頁面數量(臨時生效)

KVM性能優化

sysctl -w vm.nr_hugepages=25000 //指定大頁需要的內存頁面數永久生效

或者在/etc/sysctl.conf中添加vm.nr_hugepages=2500來持久設定大頁文件系統需要的內存頁面數。

注意:大頁文件系統需要的頁面數可以由客戶機需要的內存除以頁面大小來大體估計。

virsh destroy c01 //刪除原有的域

virsh edit c01 //編輯虛擬機的XML配置文件使用大頁來分配內存

KVM性能優化 KVM性能優化mount -t hugetlbfs /dev/hugepages/ //掛載hugetlbfs文件系統

systemctl restart libvirtd.service

virsh start c01 //開啟虛擬機

cat /proc/meminfo | grep HugePage //查看

KVM性能優化

virsh destroy c01 //再次刪除

cat /proc/meminfo | grep HugePage //再次查看,發現大頁被釋放

KVM性能優化

3、I/O的優化

在實際的生產環境中,為了避免過度消耗磁盤資源而對其他的虛擬機造成影響,我們希望每臺虛擬機對磁盤資源的消耗是可以控制的。比如多個虛擬機往硬盤中寫數據,誰可以優先寫,就可以調整I/O的權重weight,權重越高寫入磁盤的優先級越高。

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

(1)在整體中的權重,范圍在100~1000。

(2)限制具體的I/O。

virsh blkiotune c01 //查看c01的I/O參數

KVM性能優化

virsh blkiotune c01 --weight 500 //設置權重為500

virsh blkiotune c01 //再次查看

KVM性能優化

virsh edit c01 //也可編輯虛擬機的XML配置文件

KVM性能優化

virsh blkiotune --help //查看使用幫助

KVM性能優化

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

CentOS在6.3版本以后引入了一套新的系統調優工具tuned/tuned-adm,其中,tuned是服務端程序,用來監控和收集系統各個組件的數據,并依據數據提供的信息動態調整系統設置,達到動態優化系統的目的;tuned-adm是客戶端程序,用來和tuned打交道,用命令行的方式管理和配置tuned/tuned-adm,提供了一些預先配置的優化方案可供直接使用。當然不同的系統和應用場景有不同的優化方案,tuned-adm預先配置的優化策略不是總能滿足要求,這時候就需要定制,tuned-adm允許用戶自己創建和定制新的調優方案。

yum install tuned -y //安裝和啟動tuned工具

service tuned start

tuned-adm active //查看當前優化方案

KVM性能優化

tuned-adm list //查看預先設定好的優化方案

KVM性能優化

tuned-adm profile virtual-host //修改優化方案為virtual-host

KVM性能優化
相關TAG標簽
上一篇:臺積電:絕大多數7nm客戶都會轉向6nm_IT新聞_博客園
下一篇:最后一頁
相關文章
圖文推薦

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

美女MM131爽爽爽毛片