資源描述:
《kvm虛擬機(jī)性能分析之內(nèi)存性能》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、Kvm虛擬機(jī)性能分析之內(nèi)存性能1摘要內(nèi)存虛擬化,最主要的是實(shí)現(xiàn)客戶機(jī)虛擬地址(GuestVirtualAddress,GVA)到宿主機(jī)物理地址之間的轉(zhuǎn)換。根據(jù)上述客戶機(jī)物理地址到宿主機(jī)物理地址之間的轉(zhuǎn)換以及客戶機(jī)頁表,即可實(shí)現(xiàn)客戶機(jī)虛擬地址空間到客戶機(jī)物理地址空間之間的映射,也即GVA到HPA的轉(zhuǎn)換。顯然通過這種映射方式,客戶機(jī)的每次內(nèi)存訪問都需要KVM介入,并由軟件進(jìn)行多次地址轉(zhuǎn)換,其效率是非常低的。因此,為了提高GVA到HPA轉(zhuǎn)換的效率,KVM提供了兩種實(shí)現(xiàn)方式來進(jìn)行客戶機(jī)虛擬地址到宿主機(jī)物理地址之間的直接轉(zhuǎn)
2、換。其一是基于純軟件的實(shí)現(xiàn)方式,也即通過影子頁表(ShadowPageTable)來實(shí)現(xiàn)客戶虛擬地址到宿主機(jī)物理地址之間的直接轉(zhuǎn)換。其二是基于硬件對虛擬化的支持,來實(shí)現(xiàn)兩者之間的轉(zhuǎn)換(即EPT技術(shù))。EPT技術(shù)由于其內(nèi)存轉(zhuǎn)換更為直接,所以可以獲得物理機(jī)更多的內(nèi)存性能。虛擬化內(nèi)存優(yōu)化項(xiàng)包括EPT、大頁、ksm,下面一個(gè)一個(gè)來介紹。2內(nèi)存優(yōu)化技術(shù)簡介EPT針對內(nèi)存的使用,存在邏輯地址和物理地址的轉(zhuǎn)換,這個(gè)轉(zhuǎn)換時(shí)通過pagetable來進(jìn)行的,并II轉(zhuǎn)換過程由cpuvmm硬件加速,速度是很快速的。但是弓丨入vm之后,v
3、mvaddr>vmpadddr>hostpaddr,首先vm需要進(jìn)行邏輯地址和物理地址的轉(zhuǎn)換,但是vm的物理地址還是host機(jī)的邏輯地址,需要再進(jìn)行一次邏輯地址到物理地址的轉(zhuǎn)換,所以這個(gè)過程冇2次地址轉(zhuǎn)換,效率非常低。RPT頁表相對于影子貞表,其實(shí)現(xiàn)方式大大簡化。而H,由于客戶機(jī)內(nèi)部的缺頁異常也不會(huì)致使客戶機(jī)退出,因此提高了客戶機(jī)運(yùn)行的性能。此外,KVM只需為每個(gè)客戶機(jī)維護(hù)一套EPT頁表,也大大減少了內(nèi)存的額外開銷。我們運(yùn)用了kvm技術(shù),默認(rèn)己經(jīng)開啟了EPT功能。通過下述命令,我們可以驗(yàn)證是否使用了EPT技術(shù)。l
4、smod
5、grepkvm結(jié)果中有kvm的兩個(gè)模塊出現(xiàn):[root@host211?]#lsmod
6、grepkvmkvmintelkvm14272894308841kvmintel大頁:巨型頁與透明巨型頁X86默認(rèn)的內(nèi)存頁大小是4KB,但是也可以使用2MB或者1GB的巨型頁,系統(tǒng)的巨型頁可以傳輸過虛擬機(jī),KVM虛擬機(jī)可以通過分配巨型頁提高性能。在CentOS5上面,需要手工配置巨型頁。在CentOS6上面啟用一種叫作透明巨型頁的技術(shù),默認(rèn)開啟巨型頁,并且可以自動(dòng)調(diào)整。使用巨型頁可以提升內(nèi)存的分配效率,提升系統(tǒng)性能。
7、巨型頁可以手工配置,也可以使用透明巨型頁技術(shù)。巨型頁可以手工配置的壞處:必須手工配置,虛擬機(jī)的數(shù)量、可用的內(nèi)存、虛擬機(jī)的啟動(dòng)、關(guān)閉、遷移都需要重新配置,并且不能使用swap。使用透明巨頁內(nèi)存的好處:可以使用swap,內(nèi)存頁默認(rèn)大小是2MB,需要使用swap的時(shí)候,內(nèi)存被分割為4KB。對用戶透明,不需要用戶做特殊配罝。不需要root權(quán)限。不需要依賴某種庫文件。2.透明巨型頁內(nèi)存配罝CentOS6.x默認(rèn)啟用透明巨型頁內(nèi)存。查看目前狀態(tài):cat/sys/kernel/mm/transparent_hugepage/e
8、nabled[always]madvisenever修改配置:echonever>/sys/kernel/mm/transparent_hugepage/enabled參數(shù)說明如下:never:關(guān)閉,不使用透明內(nèi)存。alway:盡量使用透明內(nèi)存,掃描內(nèi)存,有512個(gè)4KB頁面可以整合,就整合成一個(gè)2MB的頁面。madvise:避免改變內(nèi)存占用。使用情況監(jiān)控:可以查看/sys/kernel/mm/transparent_hugepage/khugepaged下的信息opages_to_scan(默認(rèn)4096=16M
9、B):—個(gè)掃描周期被掃描的內(nèi)存頁數(shù)。scans1eep_millisecs(默認(rèn)10000=10sec):多長時(shí)間掃描一次。allocsleepmillisecs(默認(rèn)60000=60sec):多長時(shí)間整理一次碎片。也可以查看/proc/meminfo信息。grepHuge/proc/meminfoAnonHugePages:266240kBHugePagesTotal:0HugePages_Free:0HugcPagcsRsvd:0HugcPagcsSurp:0Ilugcpagcsizc:2048kB使用注意要
10、點(diǎn):虛擬機(jī)和宿主機(jī)都需要啟動(dòng)THP,這樣可以獲得以下好處。虛擬機(jī)的CPU可以使用2MB的TLB。相同的算法。相同的代碼。相同的內(nèi)核鏡像。2.巨型頁手工配置(1)虛擬機(jī)巨型頁手工配置有的場景需要手工配置虛擬機(jī)可以使用的巨型頁數(shù)量。通過配置虛擬機(jī).xml文件,可以指定虛擬機(jī)可以使用的巨型頁數(shù)量。