內容從<深度實踐KVM>一書總結
CPU、內存虛擬化技術與應用場景
NUMA技術與應用
1.SMP技術
2.MPP模式
3.NUMA技術(none Uniform memory access architecture)非一致性內存訪問架構
numactl --hardware :查看當前CPU硬件的情況
numastat -c qemu-kvm
關閉Linux系統的自動平衡:echo 0 > /proc/sys/kernel/numa_balancing
虛擬機NUMA信息查看與配置
virsh numatune:查看修改虛擬機的NUMA配置
<numatune>
<memory mode='strict' placment='auto'/>
</numatune>
<numatune>
<memory mode='strict' node='0,2-3'/>
</numatune>
使用numatune配置虛擬機的NUMA
virsh numatune rhel7 --nodeset '0,2-3'
vCPU的設置如下
<vcpu placement='auto'>8</vcpu>
<vcpu placement='static' cpuset='0-10,^5'>8</vcpu>
<vcpu>和<numatune>需要保持一致,<numatune>配置的是物理CPU,<vcpu>配置的是CPU的核,包括超線程產生的核。<numatune>使用strict模式,<nodeset>也必須是.
設置一個虛擬機給32個虛擬CPU,但是一開始只能使用8個.然後根據系統壓力,熱添加CPU給虛擬機
<vcpu placement='auto' current='8'>32</vcpu>
CPU pinning策略
<cputune>
<vcpupin vcpu="0" cpuset="1-4",^2"/>
<vcpupin vcpu="1" cpuset="0,1"/>
<vcpupin vcpu="2" cpuset="2,3"/>
<vcpupin vcpu="3" cpuset="0,4"/>
</cputune>
或者使用emulatorpin的方式
<cputune>
<emulatorpin cpuset="1-3"/>
</cputune>
virsh emulatorpin CentOS7 1-3
<cpu>
……
<numa>
<cell cpus='0-3' memory='512000'/>
<cell cpus='4-7' memory='512000'/>
</numa>
...
</cpu>
cell:numa的cell或者numa節點
cpus:一個物理CPU可以使用的CPU範圍
memory:可以使用的內存大小,單位爲KB
虛擬機NUMA和內存KSM
KSM技術可以合併相同的頁,即使是不同的NUMA節點
關閉ksm
echo 0 > /sys/kernel/mm/ksm/merge_across_nodes
或者
<memoryBacking>
<nosharepages/>
</memoryBakcing>
CPU綁定操作方法
可以在線配置,並且立即生效
1.CPU信息查看
virsh vcpuinfo 21 <------ 虛擬機ID
在線綁定虛擬機的CPU
virsh emulatorpin 21 26-31 --live
virsh vcpuinfo 21
virsh # dumpxml 21
NUMA在虛擬化應用之外的提示:
某些應用,比如數據庫,爲了保證性能,需要儘量使用更多的內存.如果使用系統默認的NUMA自動平衡策略,有可能一個CPU的內存消耗光,另外一個CPU還有內存可以使用,但是系統卻去調度swap使用,造成嚴重的性能下降,使用這些內存消耗型的應用時,可以考慮直接將系統的NUMA自動平衡策略關閉
CPU熱添加與應用
cat /proc/interrupts 查看CPU中斷可是看到有幾顆CPU在工作
virsh setvcpus CentOS7 5 --live
echo 1 > /proc/devices/system/cpu/cpu4/online激活CPU4
CPU Nested技術與配置方法
第一步
rmmode kvm-intel
modprobe kvm-intel nested=1
或者修改modprobe.d 編輯/etc/modprobe.d/kvm_mod.conf
options kvm-intel nested=y
檢查cat /sys/module/kvm_intel/parameters/nested Y
第二步:
第一層的虛擬機配置文件,要將物理機CPU的特性全部傳給虛擬機,使用CPU HOST技術
<cpu mode='host-passthrough'/>
第三步:
和宿主機一樣,將第一層虛擬機按照宿主機配置,安裝相應的組件,然後就可以安裝第二層的虛擬機
KSM技術與應用
1. 宿主機內存合併
KSM服務
ksmtuned服務
要關閉KSM,關閉相關的兩個服務
service ksm stop
servicde ksmtuned stop
chkconfig ksm off
chkconfig ksmtuned off
桌面虛擬機推薦使用, 但是要根據實際情況控制內存超用的比率
內存氣球技術
1.安裝virt balloon的驅動,內核開啓CONFIG_VIRTIO_BALLOON CentOS7默認開啓,並且默認安裝該驅動
lspci
...
Red Hat.Inc Vritio balloon
虛擬機需要增加以下配置
<memballoon model='virtio'>
<alias name='balloon0'/>
</memballoon>
查看當前內存大小
virsh qemu-monitor-command windows7 --hmp --cmd info balloon
balloon:actual=4096
限制內存大小爲2GB並查看
virsh qemu-monitor-command windows7 --hmp --cmd balloon 2048
內存限制技術
virsh memtune virtual_machine --parameter size
hard_limit
soft_limit
swap_hard_limit
min_guarantee
virsh memtune windows7 --hard_limit 9437184 --config
virsh memtune windows7 --soft_limit 7340032 --config
virsh memtune windows7 --swap_hard_limit 10488320 --config
virsh memtune windows7 --min_guarantee 4194304 --config
--config寫到配置文件中,下次重啓虛擬機進程生效
--live:影響正在運行的虛擬機,虛擬機進程停止後,效果消失
--current:影響停止和正在運行的虛擬機,如果虛擬機運行,虛擬機進程停止後,效果消失
CPU,內存虛擬化技術
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.