内容从<深度实践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配置虚拟机的NUMA
    virsh numatune rhel7 --nodeset '0,2-3'
vCPU的设置如下
    8
    8
    
    需要保持一致,配置的是物理CPU,配置的是CPU的核,包括超线程产生的核。使用strict模式,也必须是.
    
    设置一个虚拟机给32个虚拟CPU,但是一开始只能使用8个.然后根据系统压力,热添加CPU给虚拟机
     32

    
    CPU pinning策略
   
       
       
       
       
   

    

     或者使用emulatorpin的方式
         
             
         


         virsh emulatorpin CentOS7 1-3


     
         ……
         
             
             
         

         ...
     


             cell:numa的cell或者numa节点
             cpus:一个物理CPU可以使用的CPU范围
             memory:可以使用的内存大小,单位为KB

     虚拟机NUMA和内存KSM
         KSM技术可以合并相同的页,即使是不同的NUMA节点

         关闭ksm

         echo 0 > /sys/kernel/mm/ksm/merge_across_nodes
         或者
         
             
         

         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技术

            
        第三步:
            和宿主机一样,将第一层虚拟机按照宿主机配置,安装相应的组件,然后就可以安装第二层的虚拟机




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

                 虚拟机需要增加以下配置
                
                         
                




                 查看当前内存大小
                       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:影响停止和正在运行的虚拟机,如果虚拟机运行,虚拟机进程停止后,效果消失