目录
目录README.md

基于AI的系统参数智能调优技术:AITUNE

LicensePlatformTech

🪪项目介绍

AITune 是一个基于 AI 的 Linux 系统参数自动调优系统,旨在解决传统调优依赖人工经验、效率低下、适应性差的问题。项目通过场景化抽象数据驱动动态自适应持续进化四大理念,构建了一套可在生产环境落地的智能化调优体系

本系统在国产操作系统 OpenKylin上进行开发与测试。与通用 Linux 内核相比,OpenKylin 暴露的可调参数数量更多(约 1200+ 项,相比 Ubuntu 多出 200 项),涵盖安全性、内存优化、I/O 调度等多个维度,为调优探索提供了更广阔的空间,也验证了系统在国产化平台上的可移植性与实用性。

在实验环节,AITune 分别对 RedisMySQL 的典型负载场景进行了测试:

  • 在 Redis 的 持久化场景 下,吞吐量提升 +47%,平均延迟下降 -58%;
  • 在 MySQL 的 写入压力场景 下,TPS 提升+29%,P95 延迟下降 -24%;
  • 高并发只读场景 中,最大延迟降低超过 60%,显著增强了系统稳定性。

同时,AITune 本身的开销极低(CPU 与内存占用均 <5%),证明其在复杂业务环境中既能带来性能优化,又能保证生产可落地性。

项目说明详细文档和项目介绍ppt均在该目录下。

📺项目展示

⚒项目架构

以下为本项目的架构图: AITune 系统采用 模块化分层架构,整体由 Collector、Tuner、Applier、Evaluator 核心模块组成,形成一个 采集—识别—调优—评估—沉淀 的闭环流程。

💡项目创新点

从多个维度对比传统方法与 AITune 系统,总结本项目的创新点与价值

对比维度 传统方法 AITune 系统
调优模式 人工经验 , 静态模板,参数固定 场景化抽象 + 数据驱动,参数随场景动态选择
指标采集 依赖 /proc 文件系统,粗粒度,高开销 加入eBPF 事件驱动,细粒度,低开销,非侵入
负载识别 基于人工设定阈值,易误判,缺乏通用性 XGBoost 在线训练,分钟级收敛,秒级分类,准确率高
参数优化 人工试错,效率低,不可重复 Optuna 智能搜索,目标导向,自动收敛
自适应能力 参数静态配置,无法应对秒级负载切换 秒级动态自适应,支持平滑过渡与自动回退
知识沉淀 调优过程独立,经验不可复用 场景–参数–效果知识库,支持经验沉淀与复用,持续进化
工程可落地性 需重启 /,修改内核,风险高 sysctl -w 动态注入,独立 cgroup 控制,开销 <5%,稳定可靠

🗲项目难点

难点维度 挑战说明
内核机制复杂性 Linux内核参数数量庞大且耦合度高,需要深入理解 CPU 调度、内存回收、I/O、网络协议栈等机制。
参数与业务映射 不同应用对资源依赖差异大,需将内核参数调整与性能指标建立有效关联。
eBPF 数据采集 挂载点选择与程序优化困难,需在实时性、低侵入性和指标采集深度之间平衡。
机器学习适配 系统指标高频波动,模型需快速收敛并避免误判,XGBoost 在线训练存在工程挑战。
搜索空间庞大 参数范围广,多维组合易陷入维度灾难,需要高效的智能搜索算法。
业务场景抽象 各个应用负载特征差异大,需提炼典型场景并映射参数集合。

⏩️项目完成程度

赛题要求 指标描述 完成情况 达标情况
基于开源操作系统研发及运行 OpenKylin 环境下实现系统参数调优框架 针对OpenKylin系统参数定制 完成
动态监控与分析 实时采集核心指标,识别负载类型 完成系统指标的采集,能准确区分CPU和IO密集型任务 完成
智能参数优化 基于 AI 模型,结合历史与实时数据动态生成最优参数组合 基于主要负载识别与多维度联动调参,提升系统性能 超额完成
性能优化 优化后多项性能提升≥10%,多类工作负载有效 CPU 型 TPS提升15%;IO型TPS提升 29%,P95 延迟降低 24% 超额完成
用户友好界面 提供可视化界面,支持一键优化、参数对比 实现性能指标可视化界面用户交互字符界面 完成
扩展性 便于新增参数策略 模块化设计,支持新增参数扩展 完成

🏗︎项目仓库结构

.
├── applier
│   └── applier.py                # 参数注入模块,将的 sysctl 参数应用到系统
├── benchmark
│   ├── bench_runner.py           # 基准测试调度脚本,运行 Redis/MySQL 压测
│   ├── cpu_bound.py              # 模拟 CPU 密集型负载
│   └── io_bound.py               # 模拟 IO 密集型负载
├── collector
│   ├── collector_nolabel.sh      # 采集系统指标(无标签模式,用于应用阶段)
│   ├── collector.sh              # 通用指标采集脚本
│   ├── collector_with_label.sh   # 带任务标签的指标采集(用于训练阶段)
│   └── ebpf
│       ├── Makefile              # eBPF 程序编译脚本
│       ├── page_fault.bpf.c      # eBPF 脚本,采集缺页信息
│       ├── page_fault.c          # 用户态程序,加载 page_fault eBPF
│       ├── page_fault.h          # page_fault eBPF 头文件
│       ├── sar.bpf.c             # eBPF 脚本,采集系统调用/软中断统计
│       ├── sar.c                 # 用户态程序,加载 sar eBPF
│       ├── sar.h                 # sar eBPF 头文件
│       ├── src                   # eBPF 依赖三方库、vmlinux
│       └── tcp_retrain.bpf.c     # eBPF 脚本,采集 TCP 重传事件
├── config
│   └── workload.conf             # 各负载类型的 sysctl 参数搜索空间配置
├── docs                          # 测试文档及调研文档
├── evaluator
│   ├── bench.py                  # 对压力测试任务的性能进行读取并评分
│   └── evaluator.py              # 对系统性能进行读取并评分
├── output
│   ├── baseline_score.txt        # 基准分数
│   ├── benchmark.log             # 压力任务运行日志
│   ├── best_params.json.cpu_bound# CPU 负载下的最优参数记录
│   ├── best_params.json.io_bound # IO 负载下的最优参数记录
│   ├── classifier.pkl            # 训练好的 XGBoost 分类器
│   ├── label_encoder.pkl         # 分类标签编码器
│   ├── metrics.jsonl             # 训练所用指标文件
│   ├── metrics_live.jsonl        # 实时指标文件
│   ├── predict.log               # 预测日志,记录分类结果
│   └── score.log                 # 性能得分日志
├── README.md                     
├── requirements.txt              
├── run.sh                        # 主运行脚本(采集/训练/应用入口)
├── test
│   └── results_mysql
│       ├── baseline              # MySQL 基线性能结果
│       └── tuned                 # MySQL 调优后性能结果
├── tuner
│   ├── train.py                  # 使用采集数据训练分类模型
│   └── tuner.py                  # 调优器,调用模型预测并生成参数推荐
└── Visualization
    ├── aitune_grafana_dashboard.json  # Grafana 面板配置文件
    └── node_exporter.py               # 指标导出脚本,写入 .prom 文件供 Prometheus 拉取

🔛项目快速开始

安装命令

sudo apt update
sudo apt install -y sysstat net-tools iproute2 jq stress fio libelf-dev pkg-config clang llvm libclang-dev
pip install -r requirements.txt  # 安装依赖

训练

bash run.sh -r
bash run.sh -r -t 180   # 可以自行指定用来训练的数据的多少

预测+参数选择+调优

bash run.sh -a    # 开始调优

🔛项目展望

未来,AITune 可逐步扩展到 更多可调场景,比如大数据处理、AI 推理、流媒体服务,并引入 容器与硬件层的协同优化,实现端到端性能提升。同时,系统将探索 分布式与联邦调优,在多节点环境中共享优化经验,提升全局效率。随着知识库的不断积累,AITune 将具备更强的 自学习与自进化能力,真正成为智能化的系统优化平台。

🤍致谢

  • 感谢Openkylin提供的优秀操作系统基础
  • 感谢队友(马宜萱,张新谊)不抛弃不放弃,不偷不抢。
  • 感谢舒新峰老师不辞劳苦对本项目的指导
关于
184.3 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号