NBBS
Non-Blocking Buddy System
Install / Use
/learn @HPDCS/NBBSREADME
NBBS: A Non-Blocking Buddy System
This repository contains NBBS, a lock-free back-end allocator that adheres to the buddy system specification.
It also keeps several benchmarks and modules to evaluate NBBS and the Linux Kernel Buddy System.
The code targets x86_64 architectures equipped with Linux.
Buddy Allocators
Here, you can find several buddy system allocators. In particular:
- 1lvl-nb: this is the classical NBBS implementation discussed in several papers [Cluster'18, CCGrid'19];
- 4lvl-nb: this is the memory optimized version of our NBBS allocator (16x compress ratio);
- the spin-locked version of the above-mentioned allocators (1lvl-sl and 4lvl-sl).
You can configure the allocator by setting the following macro at compile time:
- MIN_ALLOCABLE_BYTES
- MAX_ALLOCABLE_BYTES
- NUM_LEVELS
The Benchmark Suite
We provide several benchmarks to evaluate NBBS and other back-end allocators. The benchmarks are built to run also on kernel side, so you can even evaluate the Linux-Kernel buddy system.
Description
- Linux scalability: each thread makes a burst of allocations followed by a burst of memory release operations.
- Thread test: it operates like linux scalability, but the length of bursts is divided by the number of threads.
- Costant occupancy: each thread pre-allocates blocks of different order and makes a burst of allocations followed by a burst of memory release operations.
- Cached allocation: each thread repeatedly allocates and releases an individual memory buffer.
In order to run the benchmark to evaluate the Linux Buddy System (kernel-sl), you need to mount the kernel-bd-api module.
Instructions
- Compile just typing
make - In each benchmark folder you will find one executable for each allocator. Run them by typing
./TB_<bench_name>-<allocator> <num_of_threads> <mem_size>
Contacts
For further information about NBBS allocators, please send an email to:
marotta at diag dot uniroma1 dot it
Authors
Current:
- Romolo Marotta
- Mauro Ianni
- Alessandro Pellegrini
- Francesco Quaglia
Former:
- Andrea Scarselli
Related Skills
node-connect
341.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.6kCommit, push, and open a PR
