动态资源平衡:主流虚拟化 DRS 机制分析与 SmartX 超融合的实现优化

资源的动态调度是虚拟化软件(或超融合软件)中的一项重要功能,主要指在虚拟化集群中,通过动态改变虚拟机的分布,达到优化集群可用性的目标。这一功能以 VMware vSphere 发布的 Distributed Resource Scheduler(DRS)最为人们所熟知,它凭借简单易用的特点,在用户中迅速流行,甚至成为此类功能的代名词。

作为国内领先的专业超融合厂商,SmartX 在最新发布的超融合软件版本 SMTX OS 5.1(以下简称 SMTX OS)中,也新增了对 DRS 功能的支持。不同于 VMware 6.x 及其他市场常见的虚拟化平台 DRS 实现机制,SMTX OS 优化了 DRS 评价体系,可充分适应基于容器的“敏态”应用环境,有效提升业务运行与日常管理效率。

本文,我们将深入解读目前主流虚拟化平台 DRS 实现机制与 SmartX 虚拟化平台上 DRS 功能的优化与创新,通过对比分析,帮助读者进一步了解 DRS 及其不同实现机制对集群运行带来的影响。

主流虚拟化软件 DRS 机制:更适合“稳态”业务场景

目前用户较为熟悉的 DRS 机制是 VMware 6.x 引入的实现方式(7.0 后有新机制)。该功能的初衷即通过动态改变虚拟机的放置,实现主机资源负载平衡。同时,它还可与其他虚拟化特性进行结合,衍生出丰富的应用场景:

  • 通过资源平衡提升虚拟机 SLA。
  • 业务低谷时,通过集中放置,减少主机使用,降低能源消耗。
  • 创建业务负载时,自动进行资源评估并完成初始化放置。
  • 自动完成负载均衡,最大化发挥主机性能。
  • 当主机进行维护时,自动化完成迁移,降低运维复杂度。
  • 修正亲和性约束。

市场中其他主流的虚拟化平台的 DRS 机制大都与 VMware 6.x 类似,以主机资源负载平衡为调度目标。该功能的运作机制大致可分为两个部分:

  • 评价体系:周期性收集当前集群中的主机/虚拟机的资源使用情况,根据 DRS 的评价体系判断集群是否处于资源争抢或者分布不平衡的状态。
  • 虚拟机迁移:DRS 算法基于集群当前状态进一步生成迁移建议,并根据设定的策略自动或手动触发一系列虚拟机迁移操作,最终实现集群均衡的目标。

由于 DRS 的评价体系负责定义集群是否属于均衡状态并执行迁移操作,它的实现是整个功能的重中之重。在 VMware 6.x 中,DRS 的评价体系主要关注集群状态,检查主机是否需要重新平衡。因为集群中经常会出现某台主机的资源消耗过多,而另一台主机消耗的资源较少的情况,DRS 每隔一段时间会对集群执行一次检查,如果 DRS 评价体系认为集群当前的状态可以改善,那么它将执行虚拟机热迁移(将负载高的主机上的部分虚拟机迁移到负载低的主机上)来实现集群重新平衡。

这种 DRS 评价体系的核心是平衡主机之间的 CPU、内存利用率,目前常见的虚拟化软件大都是采用类似的评价体系 。该评价体系对于传统“稳态”业务是有效的。在“稳态”业务场景下,通常单个虚拟机里面只会部署单个应用,它对 CPU、内存的占用是相对稳定的,甚至对应的虚拟机数量也是相对固定的;由于每个虚拟机的资源消耗相对固定,通过调整虚拟机的位置去重新平衡主机的负载是比较有效的。

但随着基于容器的”敏态“业务越来越流行,工作负载的形态已经发生了变化:虚拟机上可能运行着多个业务容器,容器的数量也是随时变化的,对资源的占用自然也有较大的波动,而且这是该类型应用的一个常态。如果还是基于上述这种传统的 DRS 评价体系,那么就有可能出现这样的情况:某个时刻虚拟机启动更多数量的容器后,触发 DRS 平衡被迁移到其他主机,然而过了一段时间又由于资源占用下降再次触发迁移——虚拟机可能会不断地执行一些无用的迁移,并对应用运行带来较大的干扰。面对应用负载的变化,传统的 DRS 评价体系未必适用,用户或许需要一种更适应容器环境的新型评价体系。

SMTX OS 5.1 DRS 功能:新型评价体系更灵活高效 

SmartX 最近发布了新版本超融合软件 SMTX OS 5.1,新增了对 DRS 功能的支持。SmartX 研发团队在 DRS 功能设计之初就意识到,基于主机资源利用率的 DRS 评价体系无法完全满足新型应用负载的需求。为此,研发团队设计了一种新型评价体系,综合评估虚拟机的响应能力与主机资源利用率这两个因素。


DRS 评价体系

SMTX OS 5.1 DRS 的运作逻辑是:

  • 周期性为虚拟机和主机分别进行评分。
  • 根据虚拟机状态进行评分,虚拟机因为资源争抢导致响应能力受损的程度越高,虚拟机的评分就越低,反之评分越高。
  • 根据主机的资源利用率进行评分,主机空闲度越高,评分越高;主机越繁忙则评分越低。
  • 评分最低的虚拟机会优先迁移到评分最高的主机(同时考虑迁移收益),依次类推直到主机之间达到平衡状态。

虚拟机评分

虚拟机的评分会针对虚拟机的 CPU、内存和存储 3 种资源的使用情况进行评分,其中 CPU 和内存的评分占比 80%,而存储评分占 20%。当前 DRS 版本暂不支持虚拟机网络相关评分。 

  • 虚拟机 CPU 评分:系统通过监控虚拟机 CPU 的 Steal Time,以相应的公式计算出虚拟机 CPU 分数。虚拟机 CPU 资源争抢越严重,虚拟机 CPU 分数就越低。
  • 虚拟机内存评分:当内存没有超分的时候,虚拟机内存评分应为 100%,因为内存资源没有争抢的现象发生。在内存超分的场景下,系统会监控虚拟机使用共享内存的程度,使用比例越高,证明资源争抢越严重,得分越低。
  • 虚拟机存储评分:SMTX OS 拥有 I/O 本地化功能,虚拟机读取数据时会优先访问本地宿主机的副本以缩短 I/O 延时,提升性能。系统会根据虚拟机所在节点拥有虚拟机的副本数据块比例进行评分,如虚拟机运行的宿主机拥有它的一个完整副本的所有数据块,那么它的存储评分就是 100%;如果只拥有部分副本,意味着虚拟机访问数据的时候需要跨网络读取,那么虚拟机的存储评分就会降低。

主机评分

主机评分与虚拟机评分类似,同样会考察 CPU、内存和存储三者的情况,进行综合评价。

  • 主机 CPU 评分:系统会收集主机的 CPU 空闲时间,空闲时间越多,得分也就越高。反之,主机 CPU 越繁忙得分越低。
  • 主机内存评分:系统收集主机可用内存占比,并根据主机是否存在内存超分进行评分,在没有超分的情况下,可用内存越多,评分越高。
  • 主机存储评分:由于 SMTX OS 内置的存储引擎可支持存储容量的自动均衡,因此主机存储评分并不是以主机本地存储容量使用率进行评价的。主机存储评分主要关注主机拥有虚拟机副本的数据块比例,拥有比例越高,得分越高。

收益评价

对于虚拟机的动态调整,单纯参考虚拟机和主机的评分仍然是不够的,因为不是所有情况都需要虚拟机迁移到分数更高的主机上,还需要考虑到迁移的成本——只有当迁移带来的收益大于成本,DRS 才建议或执行迁移动作。例如,某个虚拟机的内存比较大,迁移时需要传输比较多的数据,虽然迁移后会使得负载更为平衡(但差距不大),这个时候收益可能小于成本,那么 DRS 便不会建议虚拟机进行迁移。


DRS 建议与迁移

DRS 建议敏感度

SMTX OS 的 DRS 功能为用户提供了 3 种敏感度设置,便于用户根据业务情况选择合适的虚拟机迁移建议生成条件。

DRS机制01.png

DRS 自动化级别

同时,SMTX OS 的 DRS 功能支持手动迁移和自动迁移两种虚拟机迁移方式。

  • 手动迁移:DRS 只会给出迁移建议,但不会自动执行迁移。该模式采取保守的调度策略,可以让用户充分评估 DRS 考察范围之外的因素(如:某个业务十分重要,不希望在非预期的时间执行迁移),再决定是否执行迁移。与此同时,用户需要定期关注迁移建议,并决定执行建议或放弃建议。
  • 自动迁移:DRS 会根据生成的迁移建议自动执行虚拟机迁移操作,直到符合预设 DRS 阈值。该模式采取自动化调度策略,用户不需要人工接入迁移,后台会自动完成平衡,对于大规模虚拟机集群,可以大幅降低运维的压力。

DRS机制02.png


SMTX OS DRS 优势与价值

得益于新型的评价体系和运维友好的操作设置,SMTX OS DRS 功能可以充分满足云环境下的资源调度需求,帮助用户在优化集群性能的同时提升运维管理效率。相比主流传统 DRS 功能,SMTX OS DRS 能为用户带来以下具体收益:

  • 更丰富的应用场景:采用以虚拟机响应能力为核心的 DRS 评价体系,使得 DRS 适用范围更广。
  • 更智能的调度机制:评价体系更加全面,充分结合超融合架构特点,将存储性能因素纳入评价体系,同时引入收益评价,减少不必要的迁移动作,进一步优化决策、降低开销。
  • 更简单的运维管理:敏感度与自动化设置在降低运维难度的同时,给予了运维人员更大的使用灵活性。

除了对 DRS 机制的优化,SMTX OS 5.1 版本中还新增了 GPU 直通与 vGPU、USB 跨节点访问、大页内存分配等创新性虚拟化与存储能力。搭配新发布的容器管理与服务软件 SMTX Kubernetes 服务 1.0 和跨虚拟化与容器平台的软件定义负载均衡、可观测平台等产品组件,SmartX HCI 5.1 全面提升虚拟化、分布式存储、分布式防火墙、系统运维、灾备、迁移等基础设施能力,助力客户以一套架构平稳实现基础架构云化、国产化替代和容器化转型目标。欲深入了解 SmartX HCI 5.1 新增功能与产品组件,请阅读:

  • GPU 直通 & vGPU:超融合为 GPU 应用场景提供高性能支持
  • SmartX HCI 5.1 发布:是超融合,更是虚拟化与容器生产级统一架构
  • 照亮虚拟网络流量“盲区”:超融合网络流量可视化功能解读
  • SmartX 发布 SKS 1.0 ,一站式构建生产级 K8s 集群
  • 从物理机/云平台迁移至超融合?SMTX CloudMove 帮你实现

您还可扫描下方二维码,或点击链接获取《SmartX 超融合技术原理与特性解析合集(含 VMware 对比详情)》,了解 SMTX OS 更多技术特性和测试数据。

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

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

相关文章

day62:ARMday9,I2c总线通信

作业&#xff1a;按键中断实现LED1、蜂鸣器、风扇 key_in.c: #include "key_in.h"void gpio_init() {//RCC使能//GPIOERCC->MP_AHB4ENSETR | (0x1<<4);//GPIOBRCC->MP_AHB4ENSETR | (0x1<<1);//PE10、PB6、PE9输出模式GPIOE->MODER & ~(0…

AutoGPT:让 AI 帮你完成任务事情 | 开源日报 No.54

Significant-Gravitas/AutoGPT Stars: 150.4k License: MIT AutoGPT 是开源 AI 代理生态系统的核心工具包。它采用模块化和可扩展的框架&#xff0c;使您能够专注于以下方面&#xff1a; 构建 - 为惊人之作打下基础。测试 - 将您的代理调整到完美状态。查看 - 观察进展成果呈…

基于SpringBoot的网上订餐系统

基于SpringBoot的网上订餐系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;用户、管理员管理员&#xff1a;登录、个人中心、会员管理、…

《DevOps 精要:业务视角》- 读书笔记(六)

DevOps 精要:业务视角&#xff08;六&#xff09; 第6章 结语 第6章 结语 DevOps有自己的起源以及存在的前提。到2010年&#xff0c;随着条件成熟&#xff0c;形成了对信息科技中开发与运维进行管理的需求以及可能性。这引发了DevOps运动的兴起。 正如众多布道师经常提及的&a…

大数据分析实践 | 过滤和抽样

文章目录 &#x1f4da;相关函数&#x1f407;数据读取和写入&#xff1a;read_csv和to_csv&#x1f407;数据过滤&#xff1a;pandas.DataFrame.loc&#x1f407;抽样&#xff1a;pandas.DataFrame.sample&#x1f407;删除缺失数据&#xff1a;dropha&#x1f407;添加元素&a…

TensorFlow入门(十二、分布式训练)

1、按照并行方式来分 ①模型并行 假设我们有n张GPU,不同的GPU被输入相同的数据,运行同一个模型的不同部分。 在实际训练过程中,如果遇到模型非常庞大,一张GPU不够存储的情况,可以使用模型并行的分布式训练,把模型的不同部分交给不同的GPU负责。这种方式存在一定的弊端:①这种方…

sklearn处理离散变量的问题——以决策树为例

最近做项目遇到的数据集中&#xff0c;有许多高维类别特征。catboost是可以直接指定categorical_columns的【直接进行ordered TS编码】&#xff0c;但是XGboost和随机森林甚至决策树都没有这个接口。但是在学习决策树的时候&#xff08;无论是ID3、C4.5还是CART&#xff09;&am…

嵌入式养成计划-40----C++菱形继承--虚继承--多态--模板--异常

九十四、菱形继承 94.1 概念 菱形继承又称为钻石继承&#xff0c;是由公共基类派生出多个中间子类&#xff0c;又由中间子类共同派生出汇聚子类&#xff0c;汇聚子类会得到多份中间子类从公共基类继承下来的数据成员&#xff0c;会造成空间浪费&#xff0c;没有必要。 所以存…

工程师必须记住的电路元件符号及英语翻译

很多电子小白第一次接触印刷电路板&#xff08;PCB&#xff09;时&#xff0c;总会头痛那些密密麻麻的元件字母符号&#xff0c;这些电路元件符号基本上都是采用英语缩写&#xff0c;下面我们来看看这些电路元件的英语符号有哪些&#xff1f; 电阻器&#xff08;Resistor&#…

C++入门指南:类和对象总结友元类笔记(下)

C入门指南:类和对象总结友元类笔记&#xff08;下&#xff09; 一、深度剖析构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字 二、static成员2.1 概念2.2 特性 三、友元3.1 友元函数3.2 友元类 四、 内部类4.1 概念4.2 特征 五、拷贝对象时的一些编译器优化六、深…

Linux进阶-加深进程印象

目录 进程 进程状态转换 进程状态 启动新进程 system()函数 system.c文件 Makefile文件 执行过程 fork()函数 函数原型 fork.c文件 Makefile文件 执行过程 exec系列函数 函数原型 execl.c文件 Makrfile文件 执行过程 终止进程 exit()函数和_exit()函数 头…

机器人制作开源方案 | 杠杆式6轮爬楼机器人

1. 功能描述 本文示例将实现R281b样机杠杆式6轮爬楼机器人爬楼梯的功能&#xff08;注意&#xff1a;演示视频中为了增加轮胎的抓地力&#xff0c;在轮胎上贴了双面胶&#xff0c;请大家留意&#xff09;。 2. 结构说明 杠杆式6轮爬楼机器人是一种专门用于爬升楼梯或不平坦地面…

【elasticsearch】elasticsearch8.0.1使用rpm包安装并启用TLS

背景 公司的业务需要在加密的情况下使用&#xff0c;为此&#xff0c;研究测试了一下es8是如何启用TLS的。以下是测试使用过程。 x-pack了解 在 Elasticsearch 7.11.0 版本及更高版本中&#xff0c;X-Pack 功能在默认情况下已经整合到 Elastic Stack 的各个组件中&#xff0…

Element-UI的使用——表格el-table组件去除边框、滚动条设置、隔行变色、去除鼠标悬停变色效果(基于less)

// Element-ui table表格去掉所有边框,如下&#xff1a; // 备注&#xff1a;若去掉所有边框&#xff0c;可自行将头部边框注释掉即可 // 该样式写在style scoped外面在el-table 中添加class"customer-table"类名 //去掉每行的下边框/deep/ .el-table td.el-table__c…

LCR 161.连续天数最高销售额

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;LCR 161. 连续天数的最高销售额 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 动态规划。对于第 i 个元素 sales[i]&#xff0c;若以第 i-1 个元素 sales[i-1] 为结尾的最大连续和 f(n-2)…

使用js怎么设置视频背景

要使用JavaScript设置网页的视频背景&#xff0c;你需要将视频元素添加到你的HTML文档中&#xff0c;然后使用JavaScript来控制它 首先&#xff0c;在你的HTML文件中添加一个 <video> 元素 <video id"video-background" autoplay muted loop><sourc…

勒索病毒最新变种.Malloxx勒索病毒来袭,如何恢复受感染的数据?

导言&#xff1a; 勒索病毒已经成为网络威胁的一个突出问题。其中&#xff0c;.Malloxx勒索病毒是一个危险的勒索软件&#xff0c;它能够加密你的数据文件&#xff0c;使其无法访问。本文91数据恢复将向您介绍.Malloxx勒索病毒的特点&#xff0c;以及如何恢复被其加密的数据文…

【MySQL】表的内连和外连

文章目录 一. 内连接二. 外连接1. 左外连接2. 右外连接 一. 内连接 利用where子句对两种表形成的笛卡尔积进行筛选&#xff0c;其实就是内连接的一种方式 另一种方式是inner join select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件现在有如下表 mysql> desc…

M2芯片的Mac上安装Linux虚拟机——提前帮你踩坑

M2芯片的Mac上安装Linux虚拟机——提前帮你踩坑 1. 前言1.1 系统说明1.2 Linux系统选择——提前避坑1.3 下载vmware_fusion1.3.1 官网下载1.3.2 注册 CAPTCHA验证码问题1.3.3 产品说明 1.4 下载操作系统镜像1.4.1 下载centos&#xff08;如果版本合适的&#xff09;1.4.2 下载…

c 几种父进程主动终止子进程的方法

1.如子进程是循环状态 子进程循环等待键盘的输入&#xff0c;如父进程模拟键盘输入一个字符&#xff0c;子进程收到就跳出scanf&#xff08;&#xff09;。同理&#xff0c;如是socket 的accept&#xff08;&#xff09;等待&#xff0c;也可以发送一字符&#xff0c;让子进程…