文章目录
- 一、NUMA
- 二、虚拟机xml配置解析
参考文章
第一篇:KVM虚拟化CPU技术总结
第二篇:虚机cpu和mem的配置(cputune和numatune)
第三篇:libvirt 中cpu, numa 的配置
第四篇:如何提高虚拟机性能?利用这个特性来实现!
一、NUMA
NUMA架构是一种解决多CPU共同工作的技术方案。
多CPU共同工作主要有三种架构:
- SMP
- MPP
- NUMA
SMP和MPP此处不多做介绍。
此处只简单介绍NUMA。
NUMA:每个处理器有自己的存储器,每个处理器也可以访问别的处理器的存储器
二、虚拟机xml配置解析
1.给虚拟机cpu绑定物理机核心
2.给虚拟机cpu分组
3.给虚拟机cpu分配内存
物理机numa分配
lscpu | grep -i numa
查看虚拟机cpu使用情况(18289是虚拟机进程号)
cat /proc/18289/status | grep Cpus_allowed_list
上述都是检查步骤,不涉及虚拟机numa绑定,下述涉及绑定。
本文:将虚拟机的vcpu都绑定在同一个numa节点。本次选定的是:NUMA 节点0
假设虚拟机为8核,16G
虚拟机vcpu绑定物理机核心
<vcpu cpuset='0-7'>8</vcpu>
<cputune>
<vcpupin vcpu='0' cpuset='0'/>
<vcpupin vcpu='1' cpuset='1'/>
<vcpupin vcpu='2' cpuset='2'/>
<vcpupin vcpu='3' cpuset='3'/>
<vcpupin vcpu='4' cpuset='4'/>
<vcpupin vcpu='5' cpuset='5'/>
<vcpupin vcpu='6' cpuset='6'/>
<vcpupin vcpu='7' cpuset='7'/>
</cputune>
属性:
1.vcpu:对应虚拟机cpu编号;
2.cpuset:对应物理机cpu编号;
(上面两行解释,可能不是很专业,但是比较好理解。)
在物理机查看一下虚拟机绑核状态
virsh vcpupin <vm-name>
或:再查看虚拟机cpu使用情况(18289是虚拟机进程号)
cat /proc/18289/status | grep Cpus_allowed_list
给虚拟机cpu分组
把虚拟机的vcpu分成多个node
<cpu>
<topology sockets='1' cores='8' threads='1'/>
<numa>
<cell cpus='0' memory='2' unit='GiB'/>
<cell cpus='1' memory='2' unit='GiB'/>
<cell cpus='2' memory='2' unit='GiB'/>
<cell cpus='3' memory='2' unit='GiB'/>
<cell cpus='4' memory='2' unit='GiB'/>
<cell cpus='5' memory='2' unit='GiB'/>
<cell cpus='6' memory='2' unit='GiB'/>
<cell cpus='7' memory='2' unit='GiB'/>
</numa>
</cpu>
# 创建了8个node,每个node的memory为2GiB
vcpu 0 :绑定在node0
vcpu 1 :绑定在node1
vcpu 2 :绑定在node2
vcpu 3 :绑定在node3
vcpu 4 :绑定在node4
vcpu 5 :绑定在node5
vcpu 6 :绑定在node6
vcpu 7 :绑定在node7
在虚拟机查询cpu节点分配
lscpu | grep -i numa
根据node绑定memory
<numatune>
<memory mode="strict" nodeset="0-7"/>
<memnode cellid="0" mode="strict" nodeset="0"/>
<memnode cellid="1" mode="strict" nodeset="1"/>
<memnode cellid="2" mode="strict" nodeset="2"/>
<memnode cellid="3" mode="strict" nodeset="3"/>
<memnode cellid="4" mode="strict" nodeset="4"/>
<memnode cellid="5" mode="strict" nodeset="5"/>
<memnode cellid="6" mode="strict" nodeset="6"/>
<memnode cellid="7" mode="strict" nodeset="7"/>
</numatune>