在 Nova 的虚拟机创建、迁移流程中引入高低优先级概念,虚拟机对象新增高低优先级属性。高优先级虚拟机在调度的过程中,会尽可能的调度到资源充足的节点,这样的节点需要至少满足内存不超卖、高优先级虚拟机所用 CPU 不超卖的要求。
用户创建 flavor 或创建虚机时,可指定其优先级属性。但优先级属性不影响 Nova 现有的资源模型及节点调度策略,即 Nova 仍按正常流程选取计算节点及创建虚机。虚机高低优先级特性主要影响虚机创建后单机层面的资源调度分配策略。高优先级虚机和低优先级虚机发生资源竞争时,资源优先分配给前者,严格保障其 QoS。
Nova 针对虚机高低优先级特性有以下改变:
假设有如下一台主机:
假设主机有 12 个 cpu core。
OS 是 openEuler 22.09,已安装 Skylark 服务,且内核版本符合 Syklark 要求。
已基于 RPM 安装部署好了 OpenStack Yoga 版本。
dnf install openstack-plugin-priority-vm
nova-manage api_db sync
nova-manage db sync
3.重启 nova 服务
systemctl restart openstack-nova-*
nova.conf
文件打开/etc/nova/nova.conf
,修改[compute]
内的cpu_dedicated_set
、cpu_shared_set
和cpu_priority_mix_enable
,其中cpu_dedicated_set
表示高优先级虚机使用的 CPU 核心,cpu_shared_set
指低优先级虚机使用的 CPU 核心,cpu_priority_mix_enable
表示是否允许低优先虚机同时使用cpu_dedicated_set
的 CPU 核心,默认值是 False。
以此文章的主机为例,设置如下:
[compute]
cpu_dedicated_set=0-7
cpu_shared_set=8-11
cpu_priority_mix_enable=True
systemctl restart openstack-nova-compute
openstack flavor create --ram 8192 --disk 50 --vcpus 8 --public --property hw:cpu_priority='low' low_prio
openstack flavor create --ram 8192 --disk 50 --vcpus 8 --public --property hw:cpu_priority='high' --property hw:cpu_policy='dedicated' high_prio
openstack server create --flavor high_prio --image openEuler2203 --network private-network high_prio_test
openstack server create --flavor low_prio --image openEuler2203 --network private-network low_prio_test
使用virsh list
查看虚机 id,然后使用virsh vcpuinfo
命令分别查看两个虚机,可以发现high_prio_test
的 CPU 与 0-7 号 CPU 一一绑定,low_prio_test
的 CPU 在 0-11 号 CPU 中范围绑定。
本特性的实现已发布在 openEuler 22.09 创新版的 OpenStack Yoga 版本中,也会在即将发布的 openEuler 22.03 LTS SP1 的 OpenStack Train 中集成。欢迎大家体验,在 OpenStack SIG 中反馈问题、交流经验。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!