This repository contains a Linux 6.1 with integrated LLFree and HyperAlloc.
HyperAlloc: Efficient VM Memory De/Inflation via Hypervisor-Shared Page-Frame Allocators Lars Wrenger, Kenny Albes, Marco Wurps, Christian Dietrich, Daniel Lohmann In: Proceedings of the 20th European Conference on Computer Systems (EuroSys 2025); ACM
Download the llfree submodule.
git submodule update --init
Either use one of the provided configs under build-*/.config
or enable the CONFIG_LLFREE
option for LLFree CONFIG_VIRTIO_LLFREE_BALLOON
for HyperAlloc (make LLVM=1 menuconfig
).
make O=build-llfree-vm LLVM=1 #...
The paper uses the following configs:
build-buddy-vm
: Minimal VM config without LLFree and HyperAllocbuild-buddy-huge
: Minimal VM config with modified virtio-balloon to use huge pagesbuild-llfree-vm
: Minimal VM config with LLFree and HyperAlloc
The llfree module can be found in mm/llfree. It contains the llfree allocator, which is used in page_alloc.c.
The HyperAlloc driver is in virtio_llfree_balloon.h and virtio_llfree_balloon.c. The hypercalls for installing memory are issues in page_alloc.c.
An additional kernel module is available in drivers/test/automatic-llfree-balloon. It can be used to measure and test (multi-threaded) guest triggered auto-deflate.