59 KVM Skylark虚拟机混部-概述、架构及特性

news2024/9/29 13:28:16

文章目录

    • 59 KVM Skylark虚拟机混部-概述、架构及特性
      • 59.1 Skylark概述
        • 59.1.1 问题背景
        • 59.1.2 总体介绍
      • 59.2 架构及特性
        • 59.2.1 总体实现框架
        • 59.2.2 功耗干扰控制
        • 59.2.3 LLC/MB干扰控制
        • 59.2.4 CPU干扰控制

59 KVM Skylark虚拟机混部-概述、架构及特性

59.1 Skylark概述

59.1.1 问题背景

随着云计算市场规模的快速增长,各云厂商基础设施投入也不断增加。资源利用率低是行业普遍存在的问题,在上述背景下,提升资源利用率已经成为了一个重要的技术课题。本文档介绍 openEuler Skylark 组件,并给出安装方法及使用指导。

59.1.2 总体介绍

将业务区分优先级混合部署(下文简称混部)是典型有效的资源利用率提升手段。业务可根据时延敏感性分为高优先级业务和低优先级业务。当高优先级业务和低优先级业务发生资源竞争时,需优先保障高优先级业务的资源供给。因此,业务混部的核心技术是资源隔离控制,主要涉及内核态基础资源隔离技术及用户态 QoS 控制技术。

本文描述的对象为用户态 QoS 控制技术,由 openEuler Skylark 组件承载,首发于 openEuler 2209 版本。在 Skylark 视角下,优先级粒度为虚拟机级别,即给虚拟机新增高低优先级属性,以虚拟机为粒度进行资源的隔离和控制。Skylark 是一种混部场景下的 QoS 感知的资源调度器,在保障高优先级虚拟机 QoS 前提下提升物理机资源利用率。

在实际应用场景中如何更好地利用 Skylark 的高低优先级特性,请参考最佳实践章节。

59.2 架构及特性

59.2.1 总体实现框架

Skylark 核心类为QoSManager,类成员包括数据收集类实例、QoS 分析类实例、QoS 控制类实例、以及任务调度类实例:

  • DataCollector:数据收集类,有HostInfoGuestInfo两个成员,分别用于收集主机信息和虚拟机信息。
  • PowerAnalyzer:功耗分析类,用于分析功耗干扰以及需要限制的低优先级虚拟机。
  • CpuController:CPU 带宽控制类,用于限制低优先级虚拟机的 CPU 带宽。
  • CacheMBWController:LLC 及内存带宽控制类,用于限制低优先级虚拟机的 LLC 和内存带宽。
  • BackgroundScheduler:任务调度类,用于周期性驱动以上模块,持续进行 QoS 管理。

Skylark 检查主机环境后,创建守护进程。守护进程有两种线程:主调度线程和 Job 线程:

  • 主调度线程是唯一的,首先连接 Libvirt,然后创建并初始化QosManager类实例,最后开始驱动 Job 线程。
  • Job 线程可能不止一个,每个 Job 线程负责周期性执行某个 QoS 管理任务。

59.2.2 功耗干扰控制

相比非混部情况,混部后主机利用率更高,高利用率意味着高功耗,服务器功耗在超过 TDP 时会触发 CPU 降频。Skylark 支持当功耗超过预设的 TDP 阈值(即出现 TDP 热点)时,通过对低优先级虚拟机的 CPU 带宽进行限制,以此达到降低整机功耗的同时保障高优先级虚拟机 QoS。

Skylark 初始化时,根据配置Skylark中相关配置值,设置功耗干扰控制属性。在每个控制周期,综合分析主机信息和控制属性,判断是否出现 TDP 热点。如果出现热点,进一步根据虚拟机信息分析出需要对哪些低优先级虚拟机进行 CPU 带宽的限制。

59.2.3 LLC/MB干扰控制

Skylark 支持对低优先级虚拟机的 LLC 和内存带宽进行限制,当前仅支持静态分配。Skylark 通过操作系统提供的/sys/fs/resctrl接口来限制低优先级虚拟机的 LLC 和内存带宽。

  1. Skylark 在/sys/fs/resctrl目录下建立low_prio_machine文件夹,并将低优先级虚拟机的 pid 写入/sys/fs/resctrl/low_prio_machine/tasks文件中。
  2. Skylark 根据配置Skylark章节中 LLC/MB 相关配置项对低优先级虚拟机的 LLC ways 和内存带宽进行分配,配置项写入/sys/fs/resctrl/low_prio_machine/schemata文件中。

59.2.4 CPU干扰控制

混部场景下,低优先级虚拟机会对高优先级虚拟机产生 CPU 时间片干扰和 SMT(硬件超线程)干扰。

  • 当高低优先级虚拟机相关线程在同一个最小 CPU 拓扑单元(core 或 SMT)上同时处于可运行状态时,会竞争 CPU 时间片。
  • 当高低优先级虚拟机相关线程在同一个 CPU core 的不同 SMT 上同时处于可运行状态时,会竞争 SMT 共享的 core 内资源。

CPU 干扰控制分为 CPU 时间片干扰控制及 SMT 干扰控制,分别基于内核提供的 QOS_SCHEDSMT_EXPELLER 特性实现。

  • QOS_SCHED 特性实现了单个 CPU core 或 SMT 上高优先级虚拟机对低优先级虚拟机的绝对压制,解决了 CPU 时间片干扰问题。
  • SMT_EXPELLER 特性实现了同一个 CPU core 的不同 SMT 上高优先级虚拟机对低优先级虚拟机的绝对压制,解决了 SMT 干扰问题。

Skylark 初始化时,会把 Cgroup CPU 子控制器下低优先级虚拟机对应 slice 层级的cpu.qos_level字段设置为 -1,以使能上述内核特性,后续就由内核实现对 CPU 相关干扰的控制,Skylark 无需介入。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

image-20230409100335905

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/687774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android SPI

1.SPI SPI全称Service Provider Interface,服务提供方接口,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。服务通常指一个接口或者一个抽象类,服务提供方是对这个接口或者抽象类的具体实现&…

kafka常见问题

1.为什么要用mq(mq的作用)? 2.引入mq会多哪些问题? 3. 如何解决这些问题? 1.1实现异步发送 有些复杂的业务系统,一次用户请求可能会同步调用N个系统的接口,需要等待所有的接口都返回了&#…

虹科分享 | 高考大数据可视化志愿填报分析-基于虹科Domo BI工具

高考是中国教育系统中一项极为重要的考试,它不仅是学生完成高中学业的重要标志,也是进入大学的门槛。每年高考都会吸引数百万学生参加,同时也吸引了各地高校和招生部门的关注。高考招生数据是教育研究和政策制定的重要依据,通过对…

技术管理第二板斧建团队-知人善用

1、什么是知人善用 知人善用就是指技术 Leader 怎么用对人?用好人?核心在于怎么给事情安排对的人?怎么给人安排合适的事情?其中,“人”与“事”相辅相成,如果把事情安排给对的人,不光会取得好结…

干货丨如何实现WinApp的UI自动化测试?自动化工具如何选择人?

WinApp(WindowsAPP)是运行在Windows操作系统上的应用程序,通常会提供一个可视的界面,用于和用户交互。例如运行在Windows系统上的Microsoft Office、PyCharm、Visual Studio Code、Chrome,都属于WinApp。常见的WinApp&…

Arduino IDE 2.1.0 下安装ESP32(2.0.9)

很久没玩Arduino了。新装了一台电脑,想重新捡起ESP32-WROOM-32开发板玩玩。官网上下了Arduino IDE 2.1.0,然后配置ESP32开发环境。 下载及安装Arduino IDE略过不谈。装完后还是老规矩,文件 -> 首选项,先把自定义板管理地址填入…

好程序员:2023年自学Java四阶段学习法,真滴好用麻啦!

同学们,我是好程序员小源,今天给大家整理了自学Java的四个阶段,大家可以按照这四个阶段学习哦~会更加规划系统一点! 第一阶段: JavaSE[5周] 本阶段从零基础起步,荃面深入的学系JavaSE课程,主要内容包括Java…

支付“清结算”体系的设计方法

支付完成以后进行履约,履约完成以后就需要清算各方利益并最终进行结算,清结算体系与支付体系并行是支付范畴另一个非常庞大的体系。 一、清算系统设计 我们都知道一笔支付最终都是要进行清算的,业务一般都会有众多参与者或者利益方&#xff…

ESP32网络应用 -- ESP32-S3使用MQTT协议与其他设备进行数据交互

在嵌入式物联网技术领域,MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议是一种非常常见且应用广泛的消息协议,它基于发布/订阅范式进行数据传输。关于MQTT协议的详细介绍,网络上不乏相关文章,此处不再进行详细论述。 ESP32-S3是一款应用广泛的物联网…

WPF实现登录页面设计

1、文件架构 2、CommandBase.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input;namespace CourseManagement.Common {public class CommandBase : ICommand{public ev…

EXCEL和VBA如何改变字母大小写 和 大小写互换?我写的自定义函数

目录 1 EXCEL里改变大小写的内置函数 2.1 转换大小写的函数 2.2 神奇的把数字和中文大小写转换的函数 2 VBA里改变大小写的内置函数 2.1 改变大小写 的内置函数 2.2 使用 excel的WorksheetFunction. text() 函数 3 如果想交换字母的大小写呢? 3.1 ASCII码里…

Java Servlet 技术

一、Servlet 简介 Servlet 是 JavaEE 的规范之一,通俗的来说就是 Java 接口,将来我们可以定义 Java 类来实现这个接口,并由 Web 服务器运行 Servlet ,所以 TomCat 又被称作 Servlet 容器。 Servlet 提供了动态 Web 资源开发技术…

偷偷爆料下工资特别高的8个开发岗。。。。。

外国网站 devjobsscanner 统计了全年需求量大的8种编程语言,基本上薪资很高的,也就是这几个方向了。 对于跳槽、找工作、转行、转语言等,都有一定的参考意义。 接下来结合网站统计和招聘网站的数据,可以做一个对照。 NO.1 Java…

MongoDB的基本操作

MongoDB的基本操作 MongoDB MongoDB是一个基于分布式文件存储的数据库,由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数…

游泳带什么防水耳机好,最佳游泳耳机的推荐排行榜

在炎炎夏日,玩水无疑是降温的最佳方式。既可以在室内游泳馆通过游泳锻炼身体,也可以到海滨浴场享受游泳和日光浴的乐趣。因此,选购一款适合水上活动的游泳耳机变得尤为重要。音乐的力量可以让原本单调乏味的游泳运动变得更具活力,…

Linux基础服务4——ftp

文章目录 一、基本了解1.1 C/S型架构1.2 数据连接模式1.3 用户认证 二、安装服务端2.1 安装vsftpd2.2 配置文件2.3 主配置文件参数2.4 windows访问服务端2.4.1 系统用户访问2.4.2 匿名用户访问2.4.2 开启客户端上传权限2.4.3 开启客户端其他权限2.4.4 开启客户端删除、修改权限…

hvv 文件上传和文件包含考点

天眼如何判断文件上传漏洞是否成功 数据包分析 观察客户端请求数据:是否包含webshell流量特征观察服务器返回信息:是否有“上传成功”或“success upload”等信息提示 尝试寻找上传的文件:访问上传的文件看是否存在;查看文件上传…

Redisson分布式锁-源码分析

Redisson分布式锁整体流程图 Redisson分布式锁源码流程图 Redisson分布式锁源码解析 获取分布式锁lock private void lock(long leaseTime, TimeUnit unit, boolean interruptibly) throws InterruptedException {//获取当前线程IDlong threadId Thread.currentThread().get…

参与 2023 第二季度官方 Flutter 开发者调查

Flutter 3.10 已经正式发布,每个季度一次的 Flutter 开发者调查也来啦!邀请社区的各位成员们填写: 调研旨在了解你对 Flutter 的满意程度以及对其各个子系统的反馈。你的意见将对我们改进 Flutter 的功能和性能产生重要影响。 在这次调研中&a…

Linux——软硬链接的理解

目录 那什么是链接? 链接命令的生成: 实验案例: 硬链接概念: 软链接概念: 情况1:删除myfile.txt: 情况2:重新创建一个新的myfile.txt文件: 软链接作用&#xff1…