openEuler资源利用率提升之道06:虚拟机混部OpenStack调度
虚拟机混合部署是指把对 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 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
-
重启 nova-compute 服务
systemctl restart openstack-nova-compute
使用
-
创建新的 flavor
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
-
使用新 flavor 创建虚拟机
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 中反馈问题、交流经验。
加入我们
文中所述资源利用率提升技术,由 Cloud Native SIG、Kernel SIG、OpenStack SIG、Virt SIG 共同参与,其源码将在 openEuler 社区逐步开源。如果您对相关技术感兴趣,欢迎您的围观和加入。您可以添加小助手微信,加入对应 SIG 微信群。
系列文章回顾
[1] openEuler 资源利用率提升之道 01 :概论 :https://mp.weixin.qq.com/s/x9sdogEslRJJ5mDbs5bxgQ
[2] openEuler 资源利用率提升之道 02 :典型应用下的效果 :https://mp.weixin.qq.com/s/anOTdRIufYaj5pl4hy1e_A
[3] openEuler 资源利用率提升之道 03 :rubik 混部引擎 :https://mp.weixin.qq.com/s/jJXeBCRM2k92rPqyA6SL-Q
[4] openEuler 资源利用率提升之道 04 :CPU 抢占和 SMT 隔离控制 :https://mp.weixin.qq.com/s/8Odi24WjKAho8SYsYd7a1A
[5] openEuler 资源利用率提升之道 05 :虚拟机混部介绍与功耗管理技术 :https://mp.weixin.qq.com/s/wXE5cpx2jBvXEISToqhW3Q
本文分享自微信公众号 - openEuler(openEulercommunity)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【开源应用 案例共享】微众银行——金融级云原生消息总线及事件网格平台建设
2021年10月,中国人民银行等联合发布了《关于规范金融业开源技术应用与发展的意见》(银办发〔2021〕146 号),规范金融机构合理应用开源技术,提高应用水平和自主可控能力,促进开源技术健康可持续发展。前期,为助力成员单位做好开源技术应用与发展工作,北京金融科技产业联盟开源专委会组织了金融业开源技术应用、创新等方面的案例征集,现对部分优秀案例进行宣传,发挥先进典型示范引领作用 一案例背景 实施背景 微众银行作为一家纯线上银行,为满足互联网客户的7×24业务服务需求,对系统的可用性有着极高的要求。同时为更好地提供普惠金融能力,微众银行也需要走出一条“高效率、低成本、广覆盖”的创新之路。因此,微众银行基于开源技术自研了分布式金融级消息总线,实现了对商业消息总线产品的全部替换,实现了完全自主可控,同时在两地三中心的基础上,基于分布式金融级消息总线的多活特性,启动和实施了全行业务系统同城多中心多活的规划和建设,实现同城任何一个数据中心故障不影响对客户的业务服务,为普罗大众提供更加可靠的金融服务。 业务需求 为达到分布式架构基础组件的安全可控,支持海量业务的发展,加强同城数据中心容灾能力,进一...
- 下一篇
【内核优化篇】大页 struct page 内存优化87%+ !HVO 最新优化进展与规划
欢迎关注【字节跳动 SYS Tech】公众号。字节跳动 SYS Tech 聚焦系统技术领域,与大家分享前沿技术动态、技术创新与实践、行业技术热点分析等内容。 大家下午好,今天给大家带来的主题是《HVO Progress and Plans》 ,即大页内存占用优化的进度与计划。 HVO 简介 Linux 内核一般以 4K 为单位来管理物理页面。每 4K 物理内存对应一个 struct page 结构体,每个 struct page 大约 64 字节,即 struct page 占据了 1.56% 的内存,那么每 1T 内存会有 16G 的空间用于 struct pages。 Linux 有大页的功能,每个大页会有 2M、1G 等不同大小,理论上一个大页只需要用一个 struct page 来表示,但实际上构成大页的每个 4K 物理页在内核中都依然要用一个 struct page 来表示。这些 struct pages 内容相同且用处很少,占用了大量内存,因此我们提出了 HVO 的特性来优化内存。 HVO 是 HugeTLB Vmemmap Optimization 的简称,可以降低大页内...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题