Artifact Evaluation for "Xkernel: Rethinking Performance Tunability of Operating System Kernels" (OSDI '26)
In this paper, we make the following claims:
- Xkernel enables tuning consts for adapting to hardware devices and workload patterns. (i.e.,
BLK_MAX_REQUEST_COUNTin Figure 1) - Xkernel enables tuning consts for balancing cost-benefit tradeoffs. (i.e.,
MAX_SOFT_IRQ_RESTARTin Figure 9) - Xkernel enables tuning consts for controlling kernel internal behavior. (i.e.,
SHRINK_BATCHin Figure 10) - Xkernel enables tuning consts with kernel and hardware observability. (i.e.,
NR_MAX_BATCHED_MIGRATIONin Figure 11) - Xkernel enables collective tuning of interdependent consts. (i.e.,
HYSTART_DELAY_[MAX,MIN,factor]in Figure 12) - Xkernel introduces negligible overhead at runtime. (i.e., Figure 16)
- Xkernel has lower transition latency than Linux KLP. (i.e., Figure 18)
We also provide a dataset characterization of perf-consts in the Linux kernel (Figures 13-14) and ad-hoc design drill-down measurements for understanding the Xkernel deployment pipeline (Figure 17) and global convergence overhead (Figures 19-20).
This artifact evaluation package reproduces all figures from the paper. Each figure corresponds to a self-contained experiment with detailed instructions in its README.md (under ae/Figure*/). Figure1/9/10/11/12/16/18 needs to be reproduced by running the corresponding experiment, while Figure13-14/17/19-20 (which are dataset-related or ad-hoc design drill-down) are plot-only and can be generated from the provided raw data.
The artifact evaluation requires 5 CloudLab machines provisioned via 3 CloudLab profiles (under ae/cloudlab-profiles/).
| Profile | Nodes | Hardware | Cluster | Used By |
|---|---|---|---|---|
c220g5.xml |
1 | c220g5 | Wisconsin | Figure 1(a), 10, 11 |
c6620.xml |
2 | c6620 | Clemson | Figures 1(b), 16, 18 |
xl170.xml |
2 | xl170 | Utah | Figures 9, 12 |
Each experiment directory (ae/Figure*/) follows a common three-script structure:
install_*.sh— Installs environment dependencies (benchmarks, libraries, etc.).run.sh— Runs the experiment and saves raw data toresults/.plot/plot.py— Generates the corresponding figure from the paper.
Refer to the README.md inside each Figure*/ directory for detailed instructions.
Note:
run.shis designed to be idempotent (safe to re-run), though rare corner cases (e.g., unexpected interruption) may require manual cleanup before retrying.
-
Install Xkernel in parallel on three machines (Section 2.3) — ⏱ 20-30 min
-
Run experiments in parallel
Machine Figures Est. Time c220g51(a) → 10 → 11 ⏱ 5 min + 20 min + 20 min c66201(b) → 16 → 18 ⏱ 5 min + 10 min + 40min xl1709 → 12 ⏱ 20 min + 10 min Your laptop13-14, 17, 19-20 ⏱ 5 min
If you have any questions, feel free to contact us via email or HotCRP.
2. Setting up CloudLab Machines
If you are a first-time CloudLab user, please read CloudLab For Artifact Evaluation for an overview of the process.
If you do not already have a CloudLab account, please apply for one here and ask the OSDI AEC chair to add you to the AEC project. Please let us know if you have trouble accessing CloudLab — we can help set up experiments and give you access.
Machines may not always be available. To guarantee availability, click Experiments → Reserve Nodes from the CloudLab dashboard. Select the appropriate cluster and hardware type (see table above), specify the number of nodes and your desired time window, then submit the request. See Resource Reservation for details.
We provide three CloudLab profile XML files under ae/cloudlab-profiles/.
To use a profile:
- Go to Experiments → Create Experiment Profile.
- Click Upload and select the corresponding XML file (e.g.,
xl170.xml). - Give the profile a name and click Create.
- Click Instantiate on the profile page, then keep clicking Next / Finish.
- Wait for Status to become
Readyon the experiment page. - Access each node via
sshusing the hostname shown on the experiment page.
Please install Xkernel on three machines--c220g5, c6620 with IP 192.168.100.1, and xl170 with IP 192.168.6.1 before running the experiments.
Note: There is no need to install Xkernel on all c6620 and xl170 machines.
git clone https://github.com/zhongjiechen/Xkernel.git
cd Xkernel
./xkernel-tool setup # about 20-30minutes, depending on the machine.
export KERNEL_DIR=~/linux-6.8.0Most experiments in this artifact use the default Linux 6.8 environment:
export KERNEL_DIR=~/linux-6.8.0Figure 10 and Figure 11 are the only exceptions. They should be reproduced on Linux 6.14.8-061408-generic, with Xkernel's code generation pointed at the matching Linux 6.14.8 source tree:
export KERNEL_DIR=~/linux-6.14.8-061408-genericThis version switch is local to Figure 10 and Figure 11. We recommend running
the Linux 6.8 figures first, then rebooting the c220g5 machine into Linux
6.14.8-061408-generic and running Figure 10 and Figure 11. If you return to the
other experiments afterward, boot back into the Linux 6.8 environment and reset
KERNEL_DIR=~/linux-6.8.0.
The Figure 10 and Figure 11 README files include the exact commands for installing Linux 6.14.8-061408-generic and preparing the matching source tree.