OpenEuler Rubik最新特性解读:2023年不容错过的5大功能升级

📅 2026/7/16 16:17:40 👁️ 阅读次数 📝 资讯
OpenEuler Rubik最新特性解读:2023年不容错过的5大功能升级

OpenEuler Rubik最新特性解读:2023年不容错过的5大功能升级

【免费下载链接】rubikrubik is a QoS manager agent for online/offline workload colocation项目地址: https://gitcode.com/openeuler/rubik

前往项目官网免费下载:https://ar.openeuler.org/ar/

在混合部署场景下,如何提升集群资源利用率的同时保障在线业务服务质量(QoS)一直是云原生领域的核心挑战。作为openEuler社区推出的QoS管理代理,Rubik容器调度解决方案在2023年迎来了重大版本更新,带来了多项突破性功能升级。本文将深入解读Rubik v2.0.0/v2.0.1版本的5大核心特性,帮助您全面了解这一开源项目的最新进展。

1. 异步内存分级回收(FSSR策略)🎯

Rubik v2.0.0版本引入了创新的异步内存分级回收功能,通过FSSR(Fast Slow Split Reclaim)策略在内存资源竞争中实现智能调度。该功能专门针对在离线业务混合部署场景设计,有效解决了内存资源竞争导致的在线业务性能下降问题。

核心机制

FSSR策略基于Linux内核的memory.highmemory.high_async_ratio接口,实现动态内存水位线管理。Rubik会实时监控节点内存使用情况,根据预设算法自动调整离线业务的内存使用上限。

技术亮点

  • 智能水位调整:当空闲内存低于预留内存时,逐步降低离线业务内存上限
  • 弹性恢复机制:连续1分钟空闲内存超过2倍预留内存时,逐步提升内存上限
  • 安全边界保障:离线业务内存上限范围控制在总内存的30%-80%之间

配置示例

在Rubik配置文件config.json中添加以下配置即可启用FSSR策略:

"dynMemory": { "policy": "fssr" }

2. 基于PSI指标的干扰检测系统🔍

压力停滞信息(Pressure Stall Information,PSI)是Linux内核提供的资源压力监控机制。Rubik v2.0.0版本集成了PSI指标监测功能,实现了基于系统资源压力的智能干扰检测。

工作原理

Rubik通过监控CPU、内存和I/O三大资源的PSI指标(some avg10),当任一资源的阻塞时间占比超过阈值(默认5%)时,系统会自动触发离线业务驱逐机制。

智能驱逐策略

  • CPU压力高:驱逐CPU占用最多的离线业务
  • 内存压力高:驱逐内存占用最多的离线业务
  • I/O压力高:驱逐CPU占用最多的离线业务(当前版本策略)

配置灵活性

用户可以根据实际需求灵活配置监测参数:

"psi": { "resource": ["cpu", "memory", "io"], "interval": 10, "avg10Threshold": 5.0 }

3. 弹性CPU限流用户态解决方案(QuotaTurbo)⚡

针对传统CPU限流机制导致的业务性能下降问题,Rubik v2.0.0版本推出了QuotaTurbo功能,为用户提供了更灵活的CPU资源管理方案。

双水位机制

QuotaTurbo采用创新的双水位控制策略:

  • 警戒水位:当整机CPU负载低于警戒水位时,允许受压制容器逐步提升CPU配额
  • 高水位:当负载超过高水位时,系统会回调容器的CPU配额

自适应调整算法

  1. 渐进式提升:负载低于警戒水位且容器受压制时,单轮提升不超过节点总CPU配额的1%
  2. 安全回落:负载超过警戒水位且容器配额超标时,快速回落所有容器CPU配额
  3. 智能保护:容器最大CPU配额不超过用户配置值的2倍,最小不低于配置值

使用方式

只需在Pod注解中添加volcano.sh/quota-turbo="true"即可启用该功能,Rubik会自动为限额Pod(配置了CPULimit的Pod)提供弹性CPU支持。

4. 内存带宽与LLC动态限制(dynCache优化)🚀

Rubik v2.0.0版本对dynCache功能进行了全面优化,支持更精细的内存带宽和最后一级缓存(LLC)控制。

分级控制组

系统将业务划分为5个控制组:

  • rubik_max:默认最大值控制组
  • rubik_high:高优先级控制组
  • rubik_middle:中优先级控制组
  • rubik_low:低优先级控制组
  • rubik_dynamic:动态调整控制组

动态调控机制

当Pod被分配到rubik_dynamic控制组时,Rubik会:

  1. 实时采集在线业务Pod的cache missllc miss指标
  2. 基于指标数据动态调整控制组的水位线
  3. 实现离线业务对在线业务干扰的最小化

配置方式

用户可以通过全局配置或手动注解两种方式管理缓存限制:

# 全局配置 defaultLimitMode: "dynamic" # 手动指定 annotations: volcano.sh/cache-limit: "low"

5. 架构重构与性能优化🏗️

Rubik v2.0.0版本进行了全面的架构重构,引入了informer-podmanager-services机制,显著提升了系统性能和可维护性。

架构改进

  • 模块解耦:将原有紧耦合架构拆分为独立的信息收集、Pod管理、服务执行三大模块
  • 性能提升:采用list-watch机制替代HTTP接口,减少网络开销
  • 扩展性增强:插件化设计支持新功能快速集成

接口标准化

新版Rubik统一了配置接口,简化了部署和管理流程。所有特性配置都通过统一的config.json文件进行管理,提高了配置的一致性和可维护性。

兼容性保障

尽管进行了架构重构,Rubik v2.0.0版本保持了良好的向后兼容性,现有用户的配置和部署方式基本无需修改即可平滑升级。

总结与展望📈

OpenEuler Rubik v2.0.0/v2.0.1版本的5大功能升级,标志着该项目在混合部署资源管理领域迈出了重要一步。从内存管理的FSSR策略到CPU资源的QuotaTurbo弹性限流,从PSI指标的智能监测到架构层面的全面优化,Rubik正在构建一个更加完善、智能的QoS保障体系。

这些新特性不仅提升了资源利用率,更重要的是在保障在线业务服务质量的前提下,为离线业务提供了更灵活的资源使用空间。对于正在寻求提升数据中心资源利用率的用户来说,Rubik v2.0.0版本无疑是一个值得关注和尝试的解决方案。

随着云原生技术的不断发展,我们期待Rubik在未来版本中带来更多创新功能,为混合部署场景下的资源管理提供更加智能、高效的解决方案。无论是对于大规模数据中心还是中小型Kubernetes集群,Rubik都将成为保障业务服务质量的重要工具。

【免费下载链接】rubikrubik is a QoS manager agent for online/offline workload colocation项目地址: https://gitcode.com/openeuler/rubik

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考