Skip to content

SchedCP: Automatically Optimize the Linux Scheduler with an MCP Server

The paper and reproducible artifact are public, while the project continues to evolve.

SchedCP is an experimental project that enables AI optimization of Linux kernel schedulers using the sched-ext framework. It provides e2e automatic scheduler selection/synthesis, workload profiling, and performance optimization without any human intervention or guidance.

Paper: Towards Agentic OS: An LLM Agent Framework for Linux Schedulers

Blog: Can an AI Agent Tune the Linux Scheduler? Inside SchedCP

The future is not just about letting AI write code for you; the AI agent should act as your system administrator, able to optimize anything for you automatically, without requiring any manual intervention!

GitHub Repository: https://github.com/eunomia-bpf/schedcp

It includes the following tools:

  • autotune - AI Agent-powered automatic OS optimization
  • schedcp - MCP server for scheduler management and generation

Demo

Start optimize any workload with AI by simply run:

autotune/target/release/autotune cc "<your workload command>"
# example for linux build
autotune/target/release/autotune cc "make -C workloads/linux-build-bench/linux clean -j && make -C workloads/linux-build-bench/linux -j" 
# example for schbench
autotune/target/release/autotune cc  workloads/basic/schbench/schbench

Allow LLM Agent to auto select and config the best scheduler:

document/schbench-optimize.gif

Allow LLM Agents to write new schedulers:

Features & design

  • Automatic workload profiling
  • Automatic scheduler selection based on workload characteristics
  • Performance tracking across different schedulers
  • Real-time scheduler management and generation

document/design.png

The current MCP tools include:

  • list_schedulers - Get detailed information about all available schedulers
  • run_scheduler - Start schedulers with custom configurations
  • stop_scheduler - Stop running scheduler instances
  • get_execution_status - Monitor scheduler performance and output
  • create_and_verify_scheduler - Create custom BPF schedulers from source code
  • system_monitor - Collect real-time CPU, memory, and scheduler metrics
  • workload - Manage workload profiles and execution history

Installation

Requirements

  • Linux kernel 6.12+ with sched-ext support
  • Rust toolchain

The major dependencies are the dependencies for the sched-ext framework. You can check the github.com/sched-ext/scx for more details.

You also need to install the deps for the workloads you want to optimize.

Build

# Clone with submodules
git clone https://github.com/eunomia-bpf/schedcp
cd schedcp
git submodule update --init --recursive scheduler/scx
 
# Build schedulers
cd scheduler && make && make install && cd ..
# Build autotune
cd autotune && cargo build --release && cd ..
# Build MCP server
cd mcp && cargo build --release && cd ..

Usage

You should run the claude-code on project root directory.

# Set sudo password
export SCHEDCP_SUDO_PASSWORD="your_password"
 
# Optimize any workload
./autotune/target/release/autotune cc "<your workload command>"

MCP Server

check the .mcp.json for more details. You can just open the claude-code on the

CLI Tool

export SCHEDCP_SUDO_PASSWORD="your_password"
 
# List schedulers
./mcp/target/release/schedcp-cli list
 
# Run a scheduler
./mcp/target/release/schedcp-cli run scx_rusty --sudo
 
# Check status
./mcp/target/release/schedcp-cli status

License

See LICENSE for details.