WAAS介绍
在容器超分场景下,部分容器的CPU需求可能在某些时刻超出预设最大值(例如响应周期性或者瞬时的高并发请求),即使此时计算节点上仍有空闲CPU资源,也无法调度给该容器使用,导致其性能受限。针对该场景,对该计算节点历史性能数据以及容器历史性能特征进行建模,在整机CPU资源富余的情况下,根据负载模型动态调整容器的CPU配额,提升业务性能。
虚拟化负载感知加速系统容器场景负载动态调度工具(Workload Aware Acceleration System Booster,简称WAAS Booster),主要功能是实时检测分析容器负载水平,及时响应突发高负载导致的容器CPU资源不足问题,并且通过负载感知和预测,实现全局的资源调度最优化配置。
应用于云计算场景,部署开源微服务,在单节点超分场景下(request < 2/3物理机core,limit > CPU物理机core)高并发时,典型业务场景性能实现CPU配额根据业务负载变化设置,实现容器的负载使用的CPU资源动态最优。
- 负载感知:通过滑动窗口和负载预测模型感知业务容器CPU负载压力。
- 动态调优:根据PID(Proportion Integration Differentiation)算法和全局资源管理进行实时CPU资源调整和平衡。
WAAS Booster项目全量目录层级介绍如下:
├─ build.sh # 构建脚本
├─ Dockerfile # 容器镜像构建文件(定义运行环境、依赖与启动方式)
├─ LICENSE # 开源许可证文本
├─ README.md # 中文/主 README
├─ README.en.md # 英文 README
├─ requirements.txt # Python 依赖清单(pip 安装用)
├─ waas_booster.spec # 打包脚本所依赖的规格文件
├─ deployment/ # 部署相关资源的目录(面向集群/平台的部署清单)
│ └─ waasbooster.yaml # 用于部署的 YAML文件
│
├─ docs/ # 文档目录(面向安装、快速开始、用户手册与发行说明)
│ ├─ installation_guide.md # 安装指南:依赖、安装步骤、环境要求
│ ├─ quick_start.md # 快速开始:最小可用步骤/示例
│ ├─ release_notes.md # 发行说明:版本变更记录、特性列表
│ └─ user_guide.md # 用户指南:配置说明、运行方式、常见问题等
│
├─ src/ # 源码目录
│ └─ waasbooster/ # 主 Python 包目录(核心业务实现)
│ ├─ boost_log.py # 日志封装/日志工具
│ ├─ cpu_monitor.py # CPU负载监控模块(采集 CPU 使用率/负载等基础指标)
│ ├─ data_collector.py # 数据采集模块
│ ├─ load_predictor.py # 负载预测模块(基于历史/当前指标估计未来负载或趋势)
│ ├─ numa_cpu_monitor.py # NUMA 维度 CPU 监控(按 NUMA Node 统计/采集 CPU 指标)
│ ├─ quota_calculator.py # quota资源计算模块(将负载/策略转成目标 quota/调节量)
│ ├─ quota_manager.py # quota资源全局管理模块
│ ├─ quota_updater.py # quota资源更新模块
│ ├─ util.py # 通用工具函数
│ ├─ waasbooster.service # systemd 服务单元文件
│ └─ waas_booster.py # 项目主入口/主流程(组装各模块,运行与调度)
│
└─ test/ # 测试目录
├─ cov.py # 用于运行所有测试脚本,计算总体测试覆盖率的脚本
└─ waasbooster/
├─ test_cpu_monitor.py # cpu_monitor.py 的单元测试
├─ test_data_collector.py # data_collector.py 的单元测试
├─ test_load_predictor.py # load_predictor.py 的单元测试
├─ test_numa_cpu_monitor.py # numa_cpu_monitor.py 的单元测试
├─ test_quota_calculator.py # quota_calculator.py 的单元测试
├─ test_quota_manager.py # quota_manager.py 的单元测试
├─ test_quota_updater.py # quota_updater.py 的单元测试
├─ test_util.py # util.py 的单元测试
└─ test_waas_booster.py # waas_booster.py 主流程部分的单元测试WAAS Booster的版本说明包含WAAS Booster的软件版本配套关系和软件包下载以及每个版本的特性变更说明,具体请参见版本说明书。
规格要求
WAAS Booster目前仅针对使用鲲鹏920系列处理器的服务器上的容器进行调优,不支持对其他场景进行调优。
对系统的影响
系统参数的设置仅对部署在容器中的在线应用服务生效,对其他应用的影响不在WAAS Booster的负责范围内,WAAS Booster调优任务停止后,容器相关参数将恢复到WAAS Booster调优前状态。
容器限制
WAAS Booster依赖容器cgroup底层cpu.cfs_quota_us等接口实现调整,需要确保被调优容器能够访问cgroup底层接口、被调优容器未单独指定CPU(允许绑定NUMA),并且cpu.cfs_quota_us数值非-1。
WAAS Booster是一个专为容器化环境设计的负载动态调度工具,根据不同的部署环境,WAAS Booster提供了两种主要的部署方式:RPM部署和K8s Pod部署。安装指南提供兼容性信息的内容,包括支持的模型清单、支持的框架等,具体请参见安装指南。
WAAS Booster的快速入门,包括快速安装、工具使用等,具体请参见快速入门。
WAAS Booster的用户指南,包括详细的工具使用教程等,具体请参见用户指南。
如果使用过程中有任何问题,或者需要反馈特性需求和bug报告,可以提交issue联系我们,具体贡献方法可参考这里。
致WAAS Booster使用者
本工具仅供调试和开发之用,使用者需自行承担使用风险,并理解以下内容:
- 数据处理及删除:用户在使用本工具过程中产生的数据属于用户责任范畴。建议用户在使用完毕后及时删除相关数据,以防信息泄露。
- 数据保密与传播:使用者了解并同意不得将通过本工具产生的数据随意外发或传播。对于由此产生的信息泄露、数据泄露或其他不良后果,本工具及其开发者概不负责。
- 用户输入安全性:用户需自行保证输入的命令行的安全性,并承担因输入不当而导致的任何安全风险或损失。对于输入命令行不当所导致的问题,本工具及其开发者概不负责。
免责声明范围:本免责声明适用于所有使用本工具的个人或实体。使用本工具即表示您同意并接受本声明的内容,并愿意承担因使用该功能而产生的风险和责任,如有异议请停止使用本工具。
在使用本工具之前,请谨慎阅读并理解以上免责声明的内容。对于使用本工具所产生的任何问题或疑问,请及时联系开发者。
致数据所有者
如果您不希望您的模型或数据集等信息在WAAS Booster中被提及,或希望更新WAAS Booster中有关的描述,请在GitCode提交issue,我们将根据您的issue要求删除或更新您相关描述。衷心感谢您对WAAS Booster的理解和贡献。
WAAS Booster采用Apache License 2.0许可证,具体开源协议请参见LICENSE。
本项目的文档适用于CC-BY 4.0许可证,具体请参见LICENSE。