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

文章目录

    • 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.hqwc.cn/news/5520.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 20.04.02 LTS安装virtualbox7.0

ubuntu22.04的软件仓库也有virtualbox,不过版本较老。 使用安装命令:sudo apt install virtualbox 如果想要安装最新版,那么需要去官网下载deb包或者使用官方的仓库。 这里采用安装Oracle官方仓库的方法。 执行如下命令: wge…

流量分析工具wireshark-学习笔记

(一)wireshark工具 1、wireshark工具简介 Wireshark是一种开源网络分析工具,它可以让你在计算机网络上捕获和查看数据包,并能帮助你深入了解网络的运行和协议的实现。它可以捕获不同类型的流量,包括以太网、Wi-Fi、TC…

02-独立按键控制LED状态

程序 #include <REGX52.H>void main() {while(1) {if(P3_1 0) //DOWN{P2_0 0xFE;}if(P3_1 1) //UP{P2_0 0XFF;}};}按键的抖动问题 软件实现解决-按键的抖动问题 通过延时解决 #include <REGX52.H>void Delay(unsigned int xms) {while(xms){unsigned cha…

计算机网络————网络层

文章目录 网络层设计思路IP地址IP地址分类IP地址与硬件地址 协议ARP和RARPIP划分子网和构造超网划分子网构造超网&#xff08;无分类编址CIDR&#xff09; ICMP 虚拟专用网VPN和网络地址转换NATVPNNAT 网络层设计思路 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数…

排序算法--冒泡排序(Java语言)

冒泡排序&#xff08;Bubble Sort&#xff09;是啥&#xff1f; 冒泡排序是一种简单的排序算法。它重复地走访过要排序的元素列&#xff0c;依次比较两个相邻的元素&#xff0c;如果他们的顺序&#xff08;如从大到小、首字母从A到Z&#xff09;错误就把他们交换过来。走访元素…

Idea新建springboot项目遇到的问题及解决

1.更换阿里云 方法&#xff1a; 找到文件路径&#xff1a;Settings > Build,Execution,Deployment > Build Tools > Maven 如下图&#xff1a; 找到相应的settings文件 如果没有就新建一个同名文件&#xff0c;内容如下&#xff1a; <settings xmlns"h…

案例赏析 | 新疆喀什:“大型充电宝”扎根戈壁,让新能源供电更稳定

在喀什&#xff0c;你可以置身秘境&#xff0c;一睹帕米尔高原、乔戈里峰、“冰山之父”慕士塔格峰的壮丽&#xff1b;可以走进喀什古城&#xff0c;在街头巷尾、一砖一瓦间感受丝路风情&#xff1b;可以探访塔克拉玛干沙漠&#xff0c;开始一场关于冒险者的游戏&#xff1b;也…

基于深度学习的高精度绵羊检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度绵羊检测识别系统可用于日常生活中或野外来检测与定位绵羊目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的绵羊目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

html实现好看的多种风格导航菜单(附源码)

文章目录 1.设计来源1.1 顶部导航菜单1.1.1 界面风格1-一二级连体导航菜单1.1.2 界面风格2-二级导航下拉框1.1.3 界面风格3-系统开始风格1.1.4 界面风格4-购物类导航菜单1.1.5 界面风格5 - 带搜索扩展的导航条1.1.6 界面风格6-火热效果多级导航条 1.2 悬浮按钮菜单1.2.1 界面风…

OpenResty shared dict

cosocket 是各种 lua-resty-* 非阻塞库的基础 cosocket coroutine socket 需要 Lua 协程特性的支持&#xff0c;也需要 Nginx 事件机制的支持&#xff0c;两者结合在一起实现非阻塞网络 I/O。 遇到网络 I/O 时会交出控制权&#xff0c;把网络事件注册到 Nginx 监听列表中&a…

王道《计算机网络》思维导图汇总

第一章 1.1.1 概念与功能 1.1.2 组成与分类 1.1.3 标准化工作及相关组织 1.1.4 性能指标 速率 带宽 吞吐量 时延 时延带宽积 往返时延RTT 利用率 1.2.1 分层结构、协议、接口、服务 1.2.2 OSI参考模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 1.2.4 TCP/IP 参…

vue中实现div可编辑,并插入指定元素,样式

前言&#xff1a; vue中实现一个既可以编辑内容&#xff0c;有可以动态编辑内容插入一个带有样式的内容&#xff0c;改变默认内容后&#xff0c;这个样式消失的效果&#xff0c;这里来整理下调研与解决实现问题之路。 实现最终效果&#xff1a;图2为默认内容 1、可以光标点击任…