溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

KVM性能優(yōu)化

發(fā)布時(shí)間:2020-06-01 16:10:24 來源:網(wǎng)絡(luò) 閱讀:2117 作者:居思涵 欄目:云計(jì)算

一、KVM為什么要調(diào)優(yōu)

性能的損耗是關(guān)鍵。KVM采用全虛擬化技術(shù),全虛擬化要由一個(gè)軟件來模擬硬件,故有一定的損耗,特別是I/O,因此需要優(yōu)化。
KVM性能優(yōu)化主要在CPU、內(nèi)存、I/O這幾方面。當(dāng)然對(duì)于這幾方面的優(yōu)化,也是要分場景的,不同的場景其優(yōu)化方向也是不同的。

二、KVM優(yōu)化思路及步驟

KVM的性能已經(jīng)很不錯(cuò)了,但還有一些微調(diào)措施可以進(jìn)一步提高KVM的性能
1、CPU的優(yōu)化
要考慮CPU的數(shù)量問題,所有g(shù)uestcpu的總數(shù)目不要超過物理機(jī)CPU的總數(shù)目。如果超過,則將對(duì)性能帶來嚴(yán)重影響,建議選擇復(fù)制主機(jī)CPU配置。
2、內(nèi)存的優(yōu)化
(1)KSM(Kernel Samepage Merging,相同頁合并)
內(nèi)存分配的最小單位是page(頁面),默認(rèn)大小是4KB,可以將host機(jī)內(nèi)容相同的內(nèi)存合并,以節(jié)省內(nèi)存的使用,特別是在虛擬機(jī)操作系統(tǒng)都一樣的情況下,肯定會(huì)有很多內(nèi)容相同的內(nèi)存值,開啟了KSM,則會(huì)將這些內(nèi)存合并為一個(gè),當(dāng)然這個(gè)過程會(huì)有性能損耗,所以開啟與否,需要考慮使用場景。
而KSM對(duì)KVM環(huán)境有很重要的意義,當(dāng)KVM上運(yùn)行許多相同系統(tǒng)的客戶機(jī)時(shí),客戶機(jī)之間將有許多內(nèi)存頁是完全相同的,特別是只讀的內(nèi)核代碼頁完全可以在客戶機(jī)之間共享,從而減少客戶機(jī)占用的內(nèi)存資源,能同時(shí)運(yùn)行更多的客戶機(jī)。
KSM會(huì)稍微影響系統(tǒng)性能,以效率換空間,如果系統(tǒng)的內(nèi)存很寬裕,則無須開啟KSM,如果想盡可能多地并行運(yùn)行KVM客戶機(jī),則可以打開KSM。
ll /sys/kernel/mm/ksm/ //查看內(nèi)核信息
KVM性能優(yōu)化
pages_shared合并的頁面數(shù)
pages_sharing 正在共享單個(gè)頁面的虛擬頁面數(shù)
page_unshared 作為共享候選者但當(dāng)前未共享的頁數(shù)
page_volatile 作為共享候選者但頻繁更改的頁數(shù),KSM服務(wù)不會(huì)合并這個(gè)頁面
full_scan 為重復(fù)內(nèi)容掃描KSM的次數(shù)
merge_across_nodes 是否允許在NUMA節(jié)點(diǎn)中執(zhí)行合并
pages_to_scan 一次掃描的頁數(shù),該數(shù)字會(huì)影響系統(tǒng)性能
sleep_milisecs 掃描之間的時(shí)間間隔
每個(gè)頁面的大小為4KB,可計(jì)算出共享內(nèi)存為:4頁面數(shù)=內(nèi)存大?。↘B)

cd /sys/kernel/mm/ksm/
cat run //是否開啟KSM,0是不開啟,1是開啟
echo 1 > run    //臨時(shí)開啟KSM,只能使用重定向,不支持VI編輯器
vi /etc/rc.local        //添加echo 1 > /sys/kernel/mm/ksm/run,讓KSM開啟自啟
cat pages_to_scan       //定期掃描相同頁,sleep_millisecs決定多長時(shí)間,    pages_to_scan決定每次查看多少個(gè)頁面,默認(rèn)為100,越大越好,超過2000無效,  需要開啟兩個(gè)服務(wù)ksmtuned和tuned支持更過頁面

(2)對(duì)內(nèi)存設(shè)置限制
如果我們有多個(gè)虛擬機(jī),為了防止某個(gè)虛擬機(jī)無節(jié)制地使用內(nèi)存資源,導(dǎo)致其他虛擬機(jī)無法正常使用,就需要對(duì)內(nèi)存的使用進(jìn)行限制。
virsh memtune c01 //查看當(dāng)前虛擬機(jī)c01內(nèi)存的限制,單位為KB
KVM性能優(yōu)化
virsh memtune --help
KVM性能優(yōu)化
KVM性能優(yōu)化

virsh memtune c01 --hard-limit 1024000 --live   //設(shè)置強(qiáng)制最大內(nèi)存并且在線生效
virsh memtune c01       //查看

KVM性能優(yōu)化
(3)大頁后端內(nèi)存(Huge Page Backed Memory)
在邏輯地址向物理地址轉(zhuǎn)換時(shí),CPU保持一個(gè)翻譯后備緩沖器TLB,用來緩存轉(zhuǎn)換結(jié)果,而TLB容量很小,所以如果page很小,TLB很容易就充滿,這樣就容易導(dǎo)致cache miss,相反page變大,TLB需要保存的緩存項(xiàng)就變少,就會(huì)減少cache miss。通過為客戶機(jī)提供大頁后端內(nèi)存,就能減少客戶機(jī)消耗的內(nèi)存并提高TLB命中率,從而提升KVM性能。
Intel的x86 CPU通常使用4KB內(nèi)存頁、但是經(jīng)過配置,也能夠使用大頁(huge page): x86_32是4MB,x86_64和x86_32 PAE是2MB,這是KVM虛擬機(jī)的又一項(xiàng)優(yōu)化技術(shù)。
使用大頁,KVM的虛擬機(jī)的頁表將使用更少的內(nèi)存,并且將提高CPU的效率。
cat /proc/meminfo //查看內(nèi)存信息,無可用大頁
KVM性能優(yōu)化
echo 25000 > /proc/sys/vm/nr_hugepages //指定大頁需要的內(nèi)存頁面數(shù)量(臨時(shí)生效)
KVM性能優(yōu)化

sysctl -w vm.nr_hugepages=25000     //指定大頁需要的內(nèi)存頁面數(shù)永久生效
或者在/etc/sysctl.conf中添加vm.nr_hugepages=2500來持久設(shè)定大頁文件系統(tǒng)需要的內(nèi)存頁面數(shù)。

注意:大頁文件系統(tǒng)需要的頁面數(shù)可以由客戶機(jī)需要的內(nèi)存除以頁面大小來大體估計(jì)。

virsh destroy c01   //刪除原有的域
virsh edit c01  //編輯虛擬機(jī)的XML配置文件使用大頁來分配內(nèi)存

KVM性能優(yōu)化
KVM性能優(yōu)化

mount -t hugetlbfs /dev/hugepages/  //掛載hugetlbfs文件系統(tǒng)
systemctl restart libvirtd.service
virsh start c01     //開啟虛擬機(jī)
cat /proc/meminfo | grep HugePage   //查看

KVM性能優(yōu)化

virsh destroy c01   //再次刪除
cat /proc/meminfo | grep HugePage   //再次查看,發(fā)現(xiàn)大頁被釋放

KVM性能優(yōu)化
3、I/O的優(yōu)化
在實(shí)際的生產(chǎn)環(huán)境中,為了避免過度消耗磁盤資源而對(duì)其他的虛擬機(jī)造成影響,我們希望每臺(tái)虛擬機(jī)對(duì)磁盤資源的消耗是可以控制的。比如多個(gè)虛擬機(jī)往硬盤中寫數(shù)據(jù),誰可以優(yōu)先寫,就可以調(diào)整I/O的權(quán)重weight,權(quán)重越高寫入磁盤的優(yōu)先級(jí)越高。
對(duì)磁盤I/O控制有兩種方式
(1)在整體中的權(quán)重,范圍在100~1000。
(2)限制具體的I/O。
virsh blkiotune c01 //查看c01的I/O參數(shù)
KVM性能優(yōu)化

virsh blkiotune c01 --weight 500    //設(shè)置權(quán)重為500
virsh blkiotune c01     //再次查看

KVM性能優(yōu)化
virsh edit c01 //也可編輯虛擬機(jī)的XML配置文件
KVM性能優(yōu)化
virsh blkiotune --help //查看使用幫助
KVM性能優(yōu)化
4、系統(tǒng)調(diào)優(yōu)工具tuned/tuned-adm
CentOS在6.3版本以后引入了一套新的系統(tǒng)調(diào)優(yōu)工具tuned/tuned-adm,其中,tuned是服務(wù)端程序,用來監(jiān)控和收集系統(tǒng)各個(gè)組件的數(shù)據(jù),并依據(jù)數(shù)據(jù)提供的信息動(dòng)態(tài)調(diào)整系統(tǒng)設(shè)置,達(dá)到動(dòng)態(tài)優(yōu)化系統(tǒng)的目的;tuned-adm是客戶端程序,用來和tuned打交道,用命令行的方式管理和配置tuned/tuned-adm,提供了一些預(yù)先配置的優(yōu)化方案可供直接使用。當(dāng)然不同的系統(tǒng)和應(yīng)用場景有不同的優(yōu)化方案,tuned-adm預(yù)先配置的優(yōu)化策略不是總能滿足要求,這時(shí)候就需要定制,tuned-adm允許用戶自己創(chuàng)建和定制新的調(diào)優(yōu)方案。

yum install tuned -y    //安裝和啟動(dòng)tuned工具
service tuned start
tuned-adm active  //查看當(dāng)前優(yōu)化方案

KVM性能優(yōu)化
tuned-adm list //查看預(yù)先設(shè)定好的優(yōu)化方案
KVM性能優(yōu)化
tuned-adm profile virtual-host //修改優(yōu)化方案為virtual-host
KVM性能優(yōu)化

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI