以QEMU作为模拟器的虚拟化平台一般借助于libvirt进行较细颗粒度的vCPU性能调节,包括CPU特征、拓扑、钉选(pinning)、NUMA配置等。
Libvirt中可对CPU进行的定义包含如下内容。
□vCPU微调
对虚拟机CPU性能优化的常用做法是设置其拓扑与微调字段。Cputune中的vcpupin即是我们常说的钉选,即是将虚拟机的单个或多个vCPU线程分别固定在指定pCPU上运行;而share、period、quota字段则可限制虚拟机在全部物理核上的时间片比例。以虚拟机并发数量较高的应用场景为例,多个模拟器的子进程为在多个物理核间进行漂移,上下文切换成本较大,导致全部虚拟机内的程序运行缓慢。如果对上述参数进行适当设置,将全部虚拟机的所有vCPU平均地分散到各个pCPU上,就能够较好地改善此状况。
□vNUMA
钉选同样也是虚拟机进行NUMA优化的基础。由于vCPU在主机操作系统中是在用户空间任务运行,如果当虚拟机的所有vCPU线程在同一个路CPU中运行时,那么它们之间将会共享L3缓存从而提高执行效率。(www.xing528.com)
在设置NUMA之前,我们需要查询主机能力中是否支持NUMA功能,使用命令“virsh host capabilities”进行查询:
然后在虚拟机的定义中添加NUMA内存分配模式,包括strict(严格遵守定义,资源请求失败则分配失败)、interleave(以轮询方式请求资源,这种模式适用于大多数场景)、prefered(优先从单一节点分配内存):
最后将虚拟机的vCPU进行分组,即定义vNUMA:
如此一来这个虚拟机的8个vCPU便分别绑定到了服务器的两个pCPU上,从而能够增加vCPU的内存效率。期间可以通过命令numastat查询NUMA节点内存使用情况、numactl控制进程与共享内存的NUMA策略,在virsh中使用numatune动态调节vNUMA。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。