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.high和memory.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配额
自适应调整算法
- 渐进式提升:负载低于警戒水位且容器受压制时,单轮提升不超过节点总CPU配额的1%
- 安全回落:负载超过警戒水位且容器配额超标时,快速回落所有容器CPU配额
- 智能保护:容器最大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会:
- 实时采集在线业务Pod的
cache miss和llc miss指标 - 基于指标数据动态调整控制组的水位线
- 实现离线业务对在线业务干扰的最小化
配置方式
用户可以通过全局配置或手动注解两种方式管理缓存限制:
# 全局配置 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),仅供参考