KVM虚拟化CPU技术总结资料下载.pdf
《KVM虚拟化CPU技术总结资料下载.pdf》由会员分享,可在线阅读,更多相关《KVM虚拟化CPU技术总结资料下载.pdf(13页珍藏版)》请在冰豆网上搜索。
SMP多个CPU通过一个总线访问存储器,因此SMP系统有时也被称为一致存储器访问(UMA)结构体系,一致性意指无论在什么时候,处理器只能为内存的每个数据保持或共享唯一一个数值。
SMP的缺点是可伸缩性有限,因为在存储器接口达到饱和的时候,增加处理器并不能获得更高的性能,因此SMP方式支持的CPU个数有限。
处理器缓存处理器缓存处理器缓存内存内存处理器缓存MPPMPP模式则是一种分布式存储器模式,能够将更多的处理器纳入一个系统的存储器。
一个分布式存储器模式具有多个节点,每个节点都有自己的存储器,可以配置为SMP模式,也可以配置为非SMP模式。
单个的节点相互连接起来就形成了一个总系统。
MPP可以近似理解成一个SMP的横向扩展集群,MPP一般要依靠软件实现。
NUMA每个处理器有自己的存储器,每个处理器也可以访问别的处理器的存储器。
多CPU的NUMA架构处理器缓存处理器缓存内存内存处理器缓存内存处理器缓存内存多核CPU的NUMA架构NUMA-Q是IBM最早将NUMA技术应用到i386上的商业方案,可以支持更多的x86CPU一起工作。
KVM虚拟机NUMA调优因为NUMA架构每个处理器都可以访问自己和别的处理器的存储器,访问自己的存储器要比访问别的存储器的快很多,NUMA调优的目标就是让处理器尽量的访问自己的存储器,以提高处理速度。
通过numactl-hardware可以看到当前CPU硬件的情况libvirt的numa管理使用numastat命令可以查看每个节点的内存统计使用numatune命令可以查看或者修改虚拟机的numa配置linux的numu平衡策略linux系统默认是自动numu平衡策略,如果要关闭Linux系统的自动平衡,使用如下命令#echo0/proc/sys/kernel/numa_balancing如果要开启,使用如下命令echo1/proc/sys/kernel/numa_balancingnuma工作方式可以是strict,指定cpu,或者auto使用系统的numad服务virshnumatunerhel7-nodeset0,2-3vpcu的设置88和需要保持一致,配置的是物理CPU,配置的CPU的核,包括超线程产生的核;
使用static模式,也必须是;
也可以设置一个虚拟机给32个虚拟CPU,但是一开始只能使用8个,然后可以根据系统压力,热添加CPU给虚拟机。
32也可以给每个虚拟机CPU,指定具体的物理机CPUpinning策略也可以使用emulatorpin的方式emulatorpin标签可以指定一个特定的物理CPU,是虚拟机使用的CPU和存储器都在一个物理机CPU内部命令方式为virshemulatorpinrhel71-31-3的核都在一个物理CPU内部。
默认情况下,系统使用的是自动平衡的NUMA策略。
虚拟机的numa拓扑可以设置虚拟机对numa资源的使用.cellnuma的cell或者numa节点cpucpu一个物理CPU可以使用的CPU范围memory可以使用的内存大小,单位kbNUMA-AWARE和KSMKSM可以合并相同的内存页,即使是不同NUMA节点,设置/sys/kernel/mm/ksm/merge_across_nodes参数为0,可以关闭关闭跨NUMA节点的内存合并或者可以关闭虚拟机的内存合并二host-passthrough技术及应用场景KVM关于CPU型号的定义libvirt对CPU的定义提炼出标准的几种类型在/usr/share/libvirt/cpu_map.xml可以查到.主要是以下几种CPU型号。
486pentiumpentium2pentium3pentiumprocoreduopentiumpron270coreduocore2duoqemu32kvm32cpu64-rhel5cpu64-rhel6kvm64qemu64ConroePenrynNehalemWestmereSandyBridgeHaswellathlonphenomOpteron_G1Opteron_G2Opteron_G3Opteron_G4Opteron_G5POWER7POWER7_v2.1POWER7_v2.3使用这种方案主要是为了在虚拟机迁移的时候,在不同的宿主机间保证兼容性。
CPU配置模式可以有以下几种种模式:
custom自己定义kvm64.host-model根据物理CPU的特性,选择一个最靠近的标准CPU型号,如果没有指定CPU模式,默认也是使用这种模式,xml配置文件为:
host-passthrough直接将物理CPU暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理CPU的型号;
xml配置文件为:
使用host-model看到的VCPUprocessor:
3vendor_id:
GenuineIntelcpufamily:
6model:
44modelname:
WestmereE56xx/L56xx/X56xx(Nehalem-C).使用host-passthrough看到的VCPUprocessor:
Intel(R)Xeon(R)CPUX56502.67GHz应用场景HOST技术适用于以下场景:
1CPU压力非常大;
2需要将物理CPU的一些特性传给虚拟机使用;
3需要在虚拟机里面看到和物理CPU一模一样的CPU品牌型号,这个在一些公有云很有意义;
注意:
HOST方式虚拟机不能迁移到不同型号的CPU上;
三CPU热添加CPU热添加是centos7的一个新特性,要求宿主机和虚拟机都是centos7如何使用我们在给虚拟机分配的时候,就用预留CPU目前在虚拟机中可以看到4个CPU。
我们把CPU在线修改成5个virshsetvcpuscentos75-live在虚拟机里面将第5个CPU激活可以看到虚拟机的CPU已经变成了5个同样的方法,我们可以把CPU增加到6个因为我们一开始预留的是10个,所有最多的时候,可以热添加CPU到10个。
应用场景:
对于虚拟机跑得应用非常重要,不能停机,而性能严重不足的场景,CPU热添加的技术是一个很好的解决方案。
四nested虚拟机嵌套(kvmonkvm)nested技术,简单的说,就是在虚拟机上跑虚拟机。
KVM虚拟机嵌套和VMWare原理不同,VMWare第一层是用的硬件虚拟化技术,第二层就是完全软件模拟出来的,所以VMWare只能做两层嵌套。
KVM是将物理CPU的特性全部传给虚拟机,所有理论上可以嵌套N多层。
配置方法因为nested技术centos还没有正式支持,建议测试的时候用最新的fedora进行测试。
第一步打开kvm内核模块nested特性modprobekvm-intelnested=1或者修改modprobe.d编辑/etc/modprobe.d/kvm_mod.conf,添加以下内容optionskvm-intelnested=y检查是否打开nested功能cat/sys/module/kvm_intel/parameters/nestedY第二步第一层的虚拟机配置文件,要将物理机CPU特性全部传给虚拟机,使用CPUHOST技术第三步和宿主机一样,将第一层虚拟机按照宿主机配置,按照相应的组件,然后就可以再安装第二层的虚拟机了。