This repository contains the source code for
kSTEP: Characterization and Controlled Testing of Linux CPU Scheduler Bugs (OSDI '26)
The instructions will reproduce the key results in Figure 4-12, and Table 1. The entire process can take around 10 minutes.
We reserved three servers (c220g5 in Cloudlab with Ubuntu 24.04), one for each reviewer. Please add your SSH public key to the spreadsheet next to the IP address of the server you will use.
Inside each server, you can access the bug study repo with
cd ~/project/studyBefore running any analyses or generating figures, ensure the following steps are completed:
-
Install the required Python dependencies with
uv:curl -LsSf https://astral.sh/uv/install.sh | sh # Skip if uv has been installed source $HOME/.local/bin/env uv sync source .venv/bin/activate
-
Set up the necessary directories for Linux paths:
python util/set_linux_dirs.py
-
Create the
resultdirectory to store generated outputs:mkdir result
Execute the following commands to reproduce the figures and tables presented in the paper. Please run each script from the project’s root directory.
-
Figure 4
python overview/complexity.py --mode count python overview/complexity.py --mode plot
-
Table 1
python overview/component_count.py
-
Figure 5
python overview/lifetime.py
-
Figure 6
python overview/backport.py
-
Figure 7
python consequence/observability.py
-
Figure 8
python consequence/consequence.py
-
Figures 9 and 10
python testMethod/manifest_prevention.py
-
Figure 11
python rootcause/root_cause.py
-
Figure 12
python trigger/trigger_condition.py
The results are saved at ~/project/study/result/. You can download the plots to review them. Run the following command on your own PC:
scp -r 'Tingjia@{ServerIP}:~/project/study/result/' /LOCAL/DIR