CPU,內存虛擬化技術

內容從<深度實踐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:影響停止和正在運行的虛擬機,如果虛擬機運行,虛擬機進程停止後,效果消失

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章