项目简介

SchedCP 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在通过AI助手智能管理 Linux 内核调度器(基于 sched-ext 框架)。它提供 AI 驱动的调度器选择、工作负载分析、性能优化以及实时管理功能。

主要功能点

  • AI 调度器选择: 根据自然语言描述的工作负载特征,智能推荐和选择最优调度器。
  • 嵌入式调度器: 内置所有 sched-ext 调度器及其配置。
  • 工作负载画像: 创建和管理带有执行历史记录的工作负载画像,支持自然语言描述。
  • 实时管理: 动态启动、停止和监控 sched-ext 调度器。
  • 性能跟踪: 捕获和分析不同工作负载下的调度器性能指标。
  • 智能过滤: 按名称或生产就绪状态筛选调度器。
  • MCP 集成: 与 AI 助手无缝集成,实现自动化优化。

安装步骤

  1. 环境准备: 确保您的系统满足以下条件:
    • Linux 内核 6.12+ (支持 sched-ext)
    • Clang/LLVM >= 16 (推荐 17)
    • Rust 工具链 >= 1.82
    • libbpf >= 1.2.2
    • Meson 已安装
  2. 克隆仓库:
    git clone https://github.com/eunomia-bpf/schedcp --recursive
    cd schedcp
  3. 构建调度器:
    cd scheduler
    make
    cd ..
  4. 构建 MCP 服务器和 CLI 工具:
    cd mcp
    cargo build --release
    构建完成后,MCP 服务器的可执行文件位于 'mcp/target/release/schedcp'。

服务器配置

SchedCP 服务器是为支持 MCP 客户端而设计的。您需要将以下配置添加到您的 MCP 客户端(如 Claude Desktop)的配置文件中,以便客户端能够发现并连接到 SchedCP 服务器。

{
  "mcpServers": {
    "schedcp": {
      "command": "/path/to/schedcp/mcp/target/release/schedcp",
      "env": {
        "SCHEDCP_SUDO_PASSWORD": "您的sudo密码_如果需要"
      }
    }
  }
}
  • 'command': 指向 SchedCP 服务器可执行文件的完整路径。
  • 'env': 包含服务器运行所需的特定环境变量。
    • 'SCHEDCP_SUDO_PASSWORD': 如果您的系统需要 sudo 密码来管理调度器,请在此处提供。如果留空,服务器将尝试无密码 sudo。

基本使用方法

一旦 MCP 客户端配置并启动了 SchedCP 服务器,AI 助手就可以通过以下工具与服务器交互:

  • 列出调度器: 'list_schedulers' - 获取所有可用调度器的详细信息,可按名称或生产就绪状态过滤。
  • 运行调度器: 'run_scheduler' - 启动指定的调度器,并可传入自定义参数。
  • 停止调度器: 'stop_scheduler' - 停止当前运行的调度器。
  • 获取执行状态: 'get_execution_status' - 查看调度器执行的状态和输出。
  • 管理工作负载画像: 'workload' (一个复合工具,支持子命令如 'create', 'list', 'get_history', 'add_history') - 创建、列出、查看历史记录以及为工作负载画像添加性能结果。

AI 助手将利用这些工具根据您的指令智能地管理和优化 Linux 内核调度器。

信息

分类

AI与计算