【虚拟化】虚拟机vcpu绑核物理机
vcpu,numa
·
文章目录
参考文章
第一篇:KVM虚拟化CPU技术总结
第二篇:虚机cpu和mem的配置(cputune和numatune)
第三篇:libvirt 中cpu, numa 的配置
第四篇:如何提高虚拟机性能?利用这个特性来实现!
一、NUMA
NUMA架构是一种解决多CPU共同工作的技术方案。
多CPU共同工作主要有三种架构:
- SMP
- MPP
- NUMA
SMP和MPP此处不多做介绍。
此处只简单介绍NUMA。
NUMA:每个处理器有自己的存储器,每个处理器也可以访问别的处理器的存储器
二、虚拟机xml配置(重点)
虚拟机配置要求
1. 8c16g
2. 100g-lvm
3. vcpu绑单NUMA核
关于lvm卷的创建,参看我的这篇文章:【操作系统】磁盘管理高级
此处简述,以/dev/nvme0n1p1
为例
# 1.物理卷
pvcreate /dev/nvme0n1p1
# 2.卷组
vgcreate vgdata /dev/nvme0n1p1
# 3.逻辑卷
lvcreate -L 10G -n testblk vgdata
虚拟机xml关于磁盘的配置
<disk type='block' device='disk'>
<driver name='qemu' type='raw'>
<source dev='/dev/vgdata1/testblk'/>
<target dev='sda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x08' slot='0x01' function='0x0'/>
</disk>
下面开始准备绑核!!!
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
虚拟机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 mode='host-passthrough' check='none'>
<topology sockets='1' cores='8' threads='1'/>
<numa>
<cell id='0' cpus='0' memory='2' unit='GiB'/>
<cell id='1' cpus='1' memory='2' unit='GiB'/>
<cell id='2' cpus='2' memory='2' unit='GiB'/>
<cell id='3' cpus='3' memory='2' unit='GiB'/>
<cell id='4' cpus='4' memory='2' unit='GiB'/>
<cell id='5' cpus='5' memory='2' unit='GiB'/>
<cell id='6' cpus='6' memory='2' unit='GiB'/>
<cell id='7' 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
en,也可以不分,不分的话,xml如下
<cpu mode='host-passthrough' check='none'>
<topology sockets='1' dies='1' cluster='1' cores='8' threads='1'/>
<numa>
<cell id='0' cpus='0-7' memory='16' unit='GiB'/>
</numa>
</cpu>
根据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>
不分的话
<numatune>
<memnode cellid="0" mode="strict" nodeset="0"/>
</numatune>
更多推荐
已为社区贡献2条内容
所有评论(0)