Enoki is a framework for rapid development of Linux kernel schedulers. It will be presented at Eurosys '24.
The main directories are bento
, enoki-schedulers
, and enoki-kernel
.
The enoki-kernel
repository holds the custom modified kernel for enoki. The kernel must be compiled and installed before the schedulers will build. The module linked under this directory can be found at https://gitlab.cs.washington.edu/sm237/enoki-kernel.
The bento
directory contains the framework for supporting safe access to kernel data structures. It builds upon the library used in the Bento work.
The enoki-schedulers
directory contains the code for the schedulers. The module linked under this directory can be found at https://gitlab.cs.washington.edu/sm237/enoki-schedulers.
Currently, documented benchmarks are included in the enoki-schedulers
directory.
Enoki uses a custom Linux kernel based on version 5.11. To install and run Enoki, this custom kernel must be installed on your device or in a QEMU based virtual machine.
To load the submodules, run: git submodule update --init --recursive
in the root directory.
To update, run git submodule update --recursive --remote
.
Then, build the code in the submodules following the instructions there.
Start with enoki-kernel
. Build and install the kernel following the instructions in this repository.
Then, move to the bento
repository. Run git submodule update --init --recursive
to ensure that the submodules are loaded. Run git checkout enoki-support
to switch to the correct branch. This directory does not need to be compiled because it is used as a library in the next step.
Move to the enoki-schedulers
directory. Compile and test the scheduler according to the instructions in that directory.