Skip to content

SchedCP - Automatically Optimize Linux Scheduler with MCP Server

WIP: We are building a benchmark for evaluating the optimizations for OS!

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: SchedCP: Towards Agentic OS

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.

Share on Share on