首页 > 数据库 > 数据库开发技术 > 30 KVM管理系统资源-CPU热插
30 KVM管理系统资源-CPU热插30.1 概述30.2 约束限制30.3 操作步骤30.2.1 配置虚拟机XML30.2.2 热插并上线CPU
在线增加(热插)虚拟机CPU是指在虚拟机处于运行状态下,为虚拟机热插CPU而不影响虚拟机正常运行的方案。当虚拟机内部业务压力不断增大,会出现所有CPU均处于较高负载的情形。为了不影响虚拟机内的正常业务运行,可以使用CPU热插功能(在不关闭虚拟机情况下增加虚拟机的CPU数目),提升虚拟机的计算能力。
如果处理器为AArch64架构,创建虚拟机时指定的虚拟机芯片组类型(machine)需为virt-4.1或virt更高版本。如果处理器为x86_64架构,创建虚拟机时指定的虚拟机芯片组类型(machine)需为pc-i440fx-1.5或pc更高版本。
在配置Guest NUMA的场景中,必须把属于同一个socket的vcpu配置在同一vNode中,否则热插CPU后可能导致虚拟机softlockup,进而可能导致虚拟机panic。
虚拟机在迁移、休眠唤醒、快照过程中均不支持CPU热插。
虚拟机CPU热插是否自动上线取决于虚拟机操作系统自身逻辑,虚拟化层不保证热插CPU自动上线。
CPU热插同时受限于Hypervisor和GuestOS支持的最大CPU数目。
虚拟机启动、关闭、重启过程中可能出现热插CPU失效的情况,但再次重启会生效。
热插虚拟机CPU的时候,如果新增CPU数目不是虚拟机CPU拓扑配置项中Cores的整数倍,可能会导致虚拟机内部看到的CPU拓扑是混乱的,建议每次新增的CPU数目为Cores的整数倍。
若需要热插CPU在线生效且在虚拟机重启后仍有效,virsh setvcpus接口中需要同时传入–config和–live选项, 将热插CPU动作持久化。
使用CPU热插功能,需要在创建虚拟机时配置虚拟机当前的CPU数目、虚拟机所支持的最大CPU数目,以及虚拟机芯片组类型(对于AArch64架构,需为virt-4.1及以上版本。对于x86_64架构,需为pc-i440fx-1.5及以上版本)。这里以AArch64架构虚拟机为例,配置模板如下:
<domain type='kvm'>
...
<vcpu placement='static' current='m'>n</vcpu>
<os>
<type arch='aarch64' machine='virt-4.1'>hvm</type>
</os>
...
<domain>
说明:
例如,配一个虚拟机当前CPU数目为4,最大支持的热插CPU上限为64的XML配置为:
<domain type='kvm'>
……
<vcpu placement='static' current='4'>64</vcpu>
<os>
<type arch='aarch64' machine='virt-4.1'>hvm</type>
</os>
……
placement的值必须是static。
m为虚拟机当前CPU数目,即虚拟机启动后默认的CPU数目。n为虚拟机支持热插到的最大CPU数目,该值不能超过Hypervisor支持的虚拟机最大CPU规格及GuestOS支持的最大CPU规格。n大于或等于m。
如果热插CPU后需要自动上线热插的CPU,可以使用root权限在虚拟机内部创建udev rules文件/etc/udev/rules.d/99-hotplug-cpu.rules,并在其中定义udev规则,内容参考如下:
# automatically online hot-plugged cpu
ACTION=="add", SUBSYSTEM=="cpu", ATTR{online}="1"
说明: 如果没有使用udev rules自动上线热插CPU,可以在热插CPU后,使用root权限,参考如下命令手动上线:
for i in `grep -l 0 /sys/devices/system/cpu/cpu*/online`
do
echo 1 > $i
done
利用virsh工具进行虚拟机CPU热插操作。例如给虚拟机openEulerVM热插CPU到6,且在线生效的参考命令如下:
# virsh setvcpus openEulerVM 6 --live
说明: virsh setvcpus 进行虚拟机CPU热插操作的格式如下:
# virsh setvcpus <domain> <count> [--config] [--live]
domain: 参数,必填。指定虚拟机名称。
count: 参数,必填。指定目标CPU数目,即热插后虚拟机CPU数目。
–config: 选项,选填。虚拟机下次启动时仍有效。
–live: 选项,选填。在线生效。
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
有什么吐槽或反馈意见,直接告诉我!
温馨提示:如出现二维码失效也可直接添加微信号:ysc13803862469。
原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。