虚拟机混合部署是指把对 cpu、io、memory 等资源有不同需求的虚拟机通过调度方式部署、迁移到同一个计算节点上,从而使得节点的资源得到充分利用。
虚拟机混合部署的场景有多种,比如通过动态资源调度满足节点资源的动态调整;根据用户使用习惯动态调整节点虚拟机分布等等。而虚拟机高低优先级调度也是其中的一种实现方法。在单机的资源调度分配上,区分出高低优先级,即高优先级虚机和低优先级虚机发生资源竞争时,资源优先分配给前者,严格保障其 qos。
在 openstack nova 中引入虚拟机高低优先级技术,再配合 skylark qos 服务能力,可以一定程度上满足虚拟机的混合部署要求。
实现方案
在 nova 的虚拟机创建、迁移流程中引入高低优先级概念,虚拟机对象新增高低优先级属性。高优先级虚拟机在调度的过程中,会尽可能的调度到资源充足的节点,这样的节点需要至少满足内存不超卖、高优先级虚拟机所用 cpu 不超卖的要求。
用户创建 flavor 或创建虚机时,可指定其优先级属性。但优先级属性不影响 nova 现有的资源模型及节点调度策略,即 nova 仍按正常流程选取计算节点及创建虚机。虚机高低优先级特性主要影响虚机创建后单机层面的资源调度分配策略。高优先级虚机和低优先级虚机发生资源竞争时,资源优先分配给前者,严格保障其 qos。
nova 针对虚机高低优先级特性有以下改变:
vm 对象和 flavor 新增高低优先级属性配置。同时结合业务场景,约束高优先级属性只能设置给绑核类型虚机,低优先级属性只能设置给非绑核类虚机。
对于具有优先级属性的虚机,需修改 libvirt xml 配置,让单机上的 qos 管理组件(名为 skylark)感知,从而自动进行资源分配和 qos 管理。
低优先级虚机的绑核范围有改变,以充分利用高优先级虚机空闲的资源。
如何使用
准备
假设有如下一台主机:
假设主机有 12 个 cpu core。
os 是 openeuler 22.09,已安装 skylark 服务,且内核版本符合 syklark 要求。
已基于 rpm 安装部署好了 openstack yoga 版本。
安装
安装 plugin
dnf install openstack-plugin-priority-vm
配置数据库
nova-manage api_db syncnova-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-7cpu_shared_set=8-11cpu_priority_mix_enable=true
重启 nova-compute 服务
systemctl restart openstack-nova-compute
使用
创建新的 flavor
openstack flavor create --ram 8192 --disk 50 --vcpus 8 --public --property hw:cpu_priority='low' low_prioopenstack flavor create --ram 8192 --disk 50 --vcpus 8 --public --property hw:cpu_priority='high' --property hw:cpu_policy='dedicated' high_prio
使用新 flavor 创建虚拟机
openstack server create --flavor high_prio --image openeuler2203 --network private-network high_prio_testopenstack 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 中反馈问题、交流经验。
车小米荣获“实力先锋企业”在众多智能网联组企业中脱颖而出
定时开关控制三相电机如何接线,步骤是怎样的
超声波电机是什么,它的优缺点都有哪些
大功率LED芯片制作方法汇总
理性、成本、稀缺、选择
openEuler资源利用率提升之道:虚拟机混部OpenStack调度
RF为何是千禧一代的理想从业领域呢?
世平集团推出多重选择的电容式触摸屏平板电脑解决方案
wps5g和无线5g的区别 wifi6跟wifi5的穿墙能力区别
功率分配器的作用及技术指标
温湿度控制器的概念、原理及作用
PSoC 4000S完整原型开发套件和参考设计
自动驾驶技术上的竞争聚焦于决策环节
浅析锂电池自放电的原因及其测量方式
机器人产品的实在是它超越AI领先全球投资方向的主要原因
盘点2016年的云计算,互联网巨头们的多维战争
iPhone 7 Plus也出状况,部分用户反映摄像头无法使用
5G通信中对高频连接器的需求
ATL与宁德时代CATL这两家同源的公司在电池领域全面开战
如何在Linux下统计高速网络中的流量