內存虛擬化技術
KSM內存頁合并技術
KSM:主要將相同內存頁進行合并,CentOS 6和Centos 7默認打開碍岔,主要有兩個服務
KSM服務,ksmtuned服務
開啟服務并開啟開機自啟
systemctl start ksm
systemctl start ksmtuned
systemctl enable kvm
systemctl enable ksmtuned
檢測:查看/sys/kernel/mm/ksm/目錄下文件
pages_shared:正在共享的內存頁
pages_sharing:多少節(jié)點被共享并且被保存多少
pages_unshared:內存被合并時有多少內存頁獨特但是反復被檢查
pages_volatile::多少內存頁改變太快被放置
full_scans::對少次可以合并區(qū)域被掃描
阻止個別虛擬機進行內存壓縮的方法
使用nosharepages關鍵字阻止宿主機將特定的虛擬機內存頁合并账月,xml配置文件如下:
<memoryBacking>
<nosharepages/>
</momoryBacking>
應用場景:
測試環(huán)境推薦使用祖能,生產環(huán)境慎用
開啟kvm技術會導致兩個結果:
一是會消耗一定的計算機資源用于內存掃描,加重CPU的消耗
二是內存超用籽暇,當內存不夠的時候温治,只能頻繁地使用swap交互,導致虛擬機性能下降
內存氣球技術
可以在虛擬機之間調節(jié)內存大小戒悠,提高內存的利用率
宿主機內存氣球配置
使用時熬荆,虛擬機需要安裝virt balloon驅動,內核開啟CONFIG_VIRTIO_BALLOON
ballon有兩種操作
- 膨脹:虛擬機的內存被拿掉給宿主機
- 壓縮:宿主機的內存還給虛擬機
CentOS 7默認開啟绸狐,已經(jīng)安裝virt balloon驅動
檢測命令:lspci |grep balloon
虛擬機.xml配置文件需要增加以下配置
<memballooon model='virtio'>
<alias name='balloon0'/>
</memballoon>
虛擬機內存氣球配置
- Linux系統(tǒng)配置
查看當前內存大小卤恳,使用virsh qemu-monitor-command
命令
virsh qemu-monitor-command win2003 --hmp --cmd info balloon
限制內存大小為4G并查看
virsh qemu-monitor-command win2003 --hmp --cmd balloon 4096
virsh qemu-monitor-command win2003 --hmp --cmd info balloon
- Windows系統(tǒng)配置
Windows虛擬機先安裝virt balloon設備驅動,安裝內存氣球服務
應用場景
不同業(yè)務的虛擬機在同一臺宿主機上寒矿,可以使用氣球技術突琳,在不同時間段釋放或申請內存,提高內存利用率
內存限制技術
將虛擬機的內存限定在一定的范圍內
通過virsh命令符相,命令格式為:
virsh memtune virtual_machine --parameter size
可選參數(shù)如下(單位為kibibytes):
hard_limit:虛擬機可以使用的最大內存
soft_limit:競爭時的內存
swap_hard_limit:最大內存加swap
min_guarantee:最低保證給虛擬機使用的內存
示例:
限制虛擬機win2003最大使用4GB內存
virsh memtune win2003 --hard-limit 4194304 --config
memtune生效方式有3種:
-
--config
:寫到配置文件本今,下次重啟虛擬機生效 -
--live
:影響正在運行的虛擬機,重啟效果消失主巍。默認方式 -
--current
:影響停止和正在運行的虛擬機冠息,如果虛擬機運行后停止,效果消失
應用場景:
內存限制技術可以和內存氣球技術結合孕索,將內存氣球技術限制在一定范圍內逛艰,避免內存被氣球無限壓縮
巨型頁內存技術
巨型頁與透明巨型頁
kvm虛擬機可以通過分配巨型頁提升性能,CentOS 6有一種透明巨型頁面的技術搞旭,默認開啟巨型頁散怖,并可以自動調整
巨型頁可以手工配置,也可使用透明巨型頁技術
手工配置壞處:
必須手工配置肄渗,虛擬機的數(shù)量镇眷,可用的內存,虛擬機的啟動翎嫡,關閉欠动,遷移都需要重新配置,并且不能使用swap
使用透明巨型頁的好處:
- 可以使用swap
- 對用戶透明,不需要用戶做特殊配置
- 不需要root權限
- 不需要依賴某種庫文件
透明巨型頁內存配置
查看命令:
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
三個選項
- always 總是使用透明巨型頁
- madvise 避免改變內存占用
- never 不使用透明巨型頁
巨型頁手工配置
通過xml指定虛擬機可以使用巨型頁數(shù)量
例1.修改宿主機巨型頁數(shù)量默認2MB
sysctl vm.nr_hugepages=N
掛載巨型頁
mount -t hugetlbfs hugetlbfs /dev/hugepages
例2.關閉巨型頁
sysctl vm.nr_hugepages=0
umount hugetlbfs
應用場景
CentOS 7模式是打開透明巨型頁具伍,不需要做過多設置
可以監(jiān)控巨型頁的使用分配翅雏,在內存遇到瓶頸時方便查找原因