补充多平台 OLTP 实验页的性能数字 在第 13 页标明比较条件、吞吐倍数和 p95 尾延迟降幅。 同步正式演示 PDF,保持图表与结果栏完整显示。 验证:54 页,仅第 13 页内容变化;交付文件检查通过。
补充多平台 OLTP 实验页的性能数字
在第 13 页标明比较条件、吞吐倍数和 p95 尾延迟降幅。 同步正式演示 PDF,保持图表与结果栏完整显示。
验证:54 页,仅第 13 页内容变化;交付文件检查通过。
KernAdapt 是面向混合负载的自适应内核资源管控 Agent。控制面是系统核心:根据应用吞吐、延迟、资源竞争和用户目标选择内核动作,检查约束后执行,再依据实际效果保留调整或恢复原配置。LockCausal 与 FlowCausal 分别提供面向锁竞争和工具工作流的专用调度机制。
**项目说明书**:完整介绍研究路线、系统架构、核心机制、实现和实验结果。
LockCausal 补充附录
控制面将运行状态、用户目标和资源约束转化为动作方案(ActionPlan)。方案描述调度策略、CPU 放置、时间片、抢占、配额与权重等设置;系统预测这些设置对吞吐、尾延迟和后台进度的影响,再决定是否执行。
运行时保存每一步的输入、决策和结果,限制任务执行时间,并支持恢复和重放。模型提出方案,执行模块检查权限并实施调整。
实验使用 32 个 AMD EPYC 9654 虚拟 CPU、Linux 7.0.0-29,覆盖 schbench、futex、MariaDB、RocksDB 和 CPU 推理负载。
regret 衡量所选动作与该组实验中观测到的最优动作之间的效用差,越低越好。两组实验的模型与策略在评测期间保持不变;总体效用的 95% 置信区间为 **[0.01094, 0.01694]**。
控制面论文 · 控制面源码 · 实验汇总 · 运行与测试
README.md src/ 控制平面、机制、分析及策略契约源码 agent/ analysis/ lockcausal/ flowcausal/ skills/ docs/ 四份必交 PDF、三篇论文及附录、构建说明 项目说明书.pdf LockCausal.pdf FlowCausal.pdf KernAdapt.pdf tests/ 实验记录、逐轮数据、结果核算和验证记录 demo/ 无需特权或 API 密钥的可运行控制面演示 presentation/ 决赛现场演示PPT.pdf 作品原创承诺书.pdf scripts/ 构建、测试和检查入口 results/ 本地运行输出(不纳入提交)
代码入口:控制平面、LockCausal、FlowCausal。
LockCausal 已在 openEuler 24.03-LTS ARM64 完成适配和性能实验。论文覆盖双路 Ampere Altra Max、Linux 6.17、MariaDB 10.6.27,并扩展到 x86、RISC-V 和 VMware。各平台配置与实验结果见 LockCausal 论文及测试材料。
普通 Linux 环境可执行控制面测试与演示。真实调度器加载需要兼容的 BTF/sched_ext 内核和管理权限。
基础验证需要 Python 3.10+、Make、C 编译器和 POSIX/Linux 环境,核心控制面使用 Python 标准库,无需 pip install 或模型密钥。
pip install
内核机制构建另外依赖完整的匹配 Linux 源码、Clang/LLVM、bpftool、libbpf、libelf 和 zlib;可选 LangGraph 和绘图依赖分开安装。详细步骤见构建与运行。
安装采用源码目录运行:取得本仓库后进入根目录,执行下列构建命令;Python 控制平面无需系统级安装。调度器二进制目录通过 KERNADAPT_SCX_BIN_DIR 配置。
KERNADAPT_SCX_BIN_DIR
make build
检查所有 Python 源文件语法,编译 build/bin/owner_progress_bench 与 build/bin/flowbench。该目标不加载内核调度器。真实调度器构建使用独立内核工作树:
build/bin/owner_progress_bench
build/bin/flowbench
KERNEL_SRC=/path/to/linux-6.17 ./scripts/build-kernel.sh export KERNADAPT_SCX_BIN_DIR=/path/to/linux-6.17/tools/sched_ext/build/bin
make demo python3 src/agent/run_kernadapt_online.py --help python3 src/agent/run_mariadb_comparison.py --help python3 src/flowcausal/src/controller/flowctl.py --help
make demo 用合成输入演示方案检查、执行权限和状态保存,并核算 openEuler 实验数据。结果写入 results/demo/,演示不调用模型或加载内核调度器。操作步骤见演示说明。
make demo
results/demo/
在兼容环境中加载 LockCausal 的方法、退出检查、数据库复现参数和可选在线控制器配置见构建与运行。
make test # 29 个控制平面检查脚本 make test-all # 再加入 FlowCausal 调度逻辑测试及实验数据核算 make verify-results # 核算 openEuler 实验记录:140 个样本、28 个工作点
测试记录在 tests/results/。实验环境、协议、失败案例和复现入口见 tests/README.md。
LockCausal 记录每把锁的等待者、已确认的持锁者和最近运行的 CPU。LockBoost 在解锁前给持锁者有限的额外运行时间,LockNest 在唤醒后依据同一把锁的 CPU 记录选择执行位置。实验分别测量 CPU 放置和时间片扩展的作用。
在 256 线程 MariaDB OLTP 实验中,相对 scx_simple,openEuler ARM64 节点 0 吞吐为 5.30 倍、p95 降低 **84.8%**;x86 全机不绑定为 4.14 倍、p95 降低 **82.2%**;RISC-V 为 2.15 倍、p95 降低 **56.6%**。各平台分别与同机同批次基线比较。
scx_simple
在 x86 CPU 干扰实验中,LockCausal 相对仅启用 LockNest 的吞吐增加 **9.6%–36.1%**,批处理完成工作量差异不超过 **0.53%**。ARM64 全机资源域锚定相对首次观测锚点的吞吐为 2.69 倍,轮间 CV 从 18.19% 降至 **4.41%**。实验还覆盖 PostgreSQL、SQLite、RocksDB,检验不同锁路径和共置压力下的适用性。
论文 · 补充附录 · 源码与图表
在线实现由 C 登记程序和 BPF 调度器组成。每个会话使用独立的控制组(cgroup),将同一工作流的进程归为一组;通过进程创建、实际阻塞、唤醒和退出维护工具返回依赖。外层按会话分配 CPU,内层对确认的返回依赖提供短片提前运行,并将服务计入所属会话。实现同时处理本地 futex 唤醒额度、临时权重服务记账和 yield 后重新分派。
在 4 个 CPU、8 个并发工作流的实验中,每种方案交错运行 3 轮。FlowCausal 的平均工作流完成时间由原生 Linux 的 25.986 s 降至 24.084 s,降低 **7.32%**;全部完成时间由 52.201 s 增至 53.584 s,增加 **2.65%**。
独立的跨命令依赖原型在 4 CPU、8 个后台进程的固定工作量消融中,将平均完成时间从 4.828 s 降至 4.065 s,降低 **15.79%**。该机制在上述八工作流回放中未带来额外收益,因此单独列为实验原型。
论文 · 源码与图表 · 逐轮汇总
根目录 MIT License 适用于相应原创控制平面和文档;带 GPL-2.0 等 SPDX 标识的文件遵循自身许可。依赖及其许可证见第三方依赖与许可证。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
KernAdapt
KernAdapt 是面向混合负载的自适应内核资源管控 Agent。控制面是系统核心:根据应用吞吐、延迟、资源竞争和用户目标选择内核动作,检查约束后执行,再依据实际效果保留调整或恢复原配置。LockCausal 与 FlowCausal 分别提供面向锁竞争和工具工作流的专用调度机制。
**项目说明书**:完整介绍研究路线、系统架构、核心机制、实现和实验结果。
研究论文
LockCausal 补充附录
KernAdapt 控制面
控制面将运行状态、用户目标和资源约束转化为动作方案(ActionPlan)。方案描述调度策略、CPU 放置、时间片、抢占、配额与权重等设置;系统预测这些设置对吞吐、尾延迟和后台进度的影响,再决定是否执行。
决策与执行
运行时保存每一步的输入、决策和结果,限制任务执行时间,并支持恢复和重放。模型提出方案,执行模块检查权限并实施调整。
如何选择资源配置
控制面实验
实验使用 32 个 AMD EPYC 9654 虚拟 CPU、Linux 7.0.0-29,覆盖 schbench、futex、MariaDB、RocksDB 和 CPU 推理负载。
regret 衡量所选动作与该组实验中观测到的最优动作之间的效用差,越低越好。两组实验的模型与策略在评测期间保持不变;总体效用的 95% 置信区间为 **[0.01094, 0.01694]**。
控制面论文 · 控制面源码 · 实验汇总 · 运行与测试
项目材料
应用场景与主要功能
代码入口:控制平面、LockCausal、FlowCausal。
系统环境
LockCausal 已在 openEuler 24.03-LTS ARM64 完成适配和性能实验。论文覆盖双路 Ampere Altra Max、Linux 6.17、MariaDB 10.6.27,并扩展到 x86、RISC-V 和 VMware。各平台配置与实验结果见 LockCausal 论文及测试材料。
普通 Linux 环境可执行控制面测试与演示。真实调度器加载需要兼容的 BTF/sched_ext 内核和管理权限。
依赖要求与安装
基础验证需要 Python 3.10+、Make、C 编译器和 POSIX/Linux 环境,核心控制面使用 Python 标准库,无需
pip install或模型密钥。内核机制构建另外依赖完整的匹配 Linux 源码、Clang/LLVM、bpftool、libbpf、libelf 和 zlib;可选 LangGraph 和绘图依赖分开安装。详细步骤见构建与运行。
安装采用源码目录运行:取得本仓库后进入根目录,执行下列构建命令;Python 控制平面无需系统级安装。调度器二进制目录通过
KERNADAPT_SCX_BIN_DIR配置。构建方法
检查所有 Python 源文件语法,编译
build/bin/owner_progress_bench与build/bin/flowbench。该目标不加载内核调度器。真实调度器构建使用独立内核工作树:运行方法
make demo用合成输入演示方案检查、执行权限和状态保存,并核算 openEuler 实验数据。结果写入results/demo/,演示不调用模型或加载内核调度器。操作步骤见演示说明。在兼容环境中加载 LockCausal 的方法、退出检查、数据库复现参数和可选在线控制器配置见构建与运行。
测试方法
测试记录在 tests/results/。实验环境、协议、失败案例和复现入口见 tests/README.md。
两类专用调度机制
LockCausal:锁交接前后的调度
LockCausal 记录每把锁的等待者、已确认的持锁者和最近运行的 CPU。LockBoost 在解锁前给持锁者有限的额外运行时间,LockNest 在唤醒后依据同一把锁的 CPU 记录选择执行位置。实验分别测量 CPU 放置和时间片扩展的作用。
在 256 线程 MariaDB OLTP 实验中,相对
scx_simple,openEuler ARM64 节点 0 吞吐为 5.30 倍、p95 降低 **84.8%**;x86 全机不绑定为 4.14 倍、p95 降低 **82.2%**;RISC-V 为 2.15 倍、p95 降低 **56.6%**。各平台分别与同机同批次基线比较。在 x86 CPU 干扰实验中,LockCausal 相对仅启用 LockNest 的吞吐增加 **9.6%–36.1%**,批处理完成工作量差异不超过 **0.53%**。ARM64 全机资源域锚定相对首次观测锚点的吞吐为 2.69 倍,轮间 CV 从 18.19% 降至 **4.41%**。实验还覆盖 PostgreSQL、SQLite、RocksDB,检验不同锁路径和共置压力下的适用性。
论文 · 补充附录 · 源码与图表
FlowCausal:工具返回关系与会话公平调度
在线实现由 C 登记程序和 BPF 调度器组成。每个会话使用独立的控制组(cgroup),将同一工作流的进程归为一组;通过进程创建、实际阻塞、唤醒和退出维护工具返回依赖。外层按会话分配 CPU,内层对确认的返回依赖提供短片提前运行,并将服务计入所属会话。实现同时处理本地 futex 唤醒额度、临时权重服务记账和 yield 后重新分派。
在 4 个 CPU、8 个并发工作流的实验中,每种方案交错运行 3 轮。FlowCausal 的平均工作流完成时间由原生 Linux 的 25.986 s 降至 24.084 s,降低 **7.32%**;全部完成时间由 52.201 s 增至 53.584 s,增加 **2.65%**。
独立的跨命令依赖原型在 4 CPU、8 个后台进程的固定工作量消融中,将平均完成时间从 4.828 s 降至 4.065 s,降低 **15.79%**。该机制在上述八工作流回放中未带来额外收益,因此单独列为实验原型。
论文 · 源码与图表 · 逐轮汇总
总体研究路线
已知限制
许可证
根目录 MIT License 适用于相应原创控制平面和文档;带 GPL-2.0 等 SPDX 标识的文件遵循自身许可。依赖及其许可证见第三方依赖与许可证。