Source code for our DIMES'23 paper: https://dl.acm.org/doi/10.1145/3609308.3625265
The source code of our efficient PM copy routines is in module/
. To build
it, you need a Linux 5.15 kernel with linux-5.15.diff
applied.
We provide a patched kernel that includes NOVA support at https://github.com/KIT-OSGroup/linux/tree/ep-base
Build, install and boot into that kernel as usual.
Then, build our eff_pmem
module and patched NOVA as follows:
make -C module
make -C nova
Insert eff_pmem.ko
with appropriate parameters.
insmod module/eff_pmem.ko ep_max_memcpy_sem=2 worker_cpus=0,1 ep_dma_nchans=2 ep_mode=3
ep_max_memcpy_sem
: Number of parallel writers the semaphore allowsworker_cpus
: Set of CPUs for the workqueue worker threadsep_dma_nchans
: Number of I/OAT DMA channelsep_mode
: Which variant to use. SeeEP_MODE_*
constants inmodule/eff_pmem.c
. 3: normal copy, 4: Semaphore, 2: Workqueue, 1: DMA
You can also change ep_mode
later by writing to /sys/module/eff_pmem/parameters/ep_mode
.
Finally, load and use NOVA as usual (insmod nova/nova.ko
).