This repository is the home of isol-bench, a tool to evaluate storage performance isolation desiderata in GNU/Linux. Currently it has builtin support to evaluate I/O schedulers and cgroups, with knobs for io.max, io.cost, io.latency, io.prio.class and io.bfq.weight. isol-bench was used in the IISWC'25 publication "Does Linux Provide Performance Isolation for NVMe SSDs? Configuring cgroups for I/O Control in the NVMe Era". Below we detail the installation procedures and dependencies, and tne current isolation benchmarks.
First check OS compatability. Linux 6.9+ is required and BLK_CGROUP_IOLATENCY needs to be enabled. For reproducibility we have linked our kernel config and commit in the kernel-setup
directory along with an installation script.
First install fio:
apt-get update
apt-get install -y wget git build-essential zlib1g-dev libnuma-dev libaio-dev
git submodule init
git submodule update --recursive
pushd isol-bench/dependencies/fio
./configure
make -j
popd
Check Python version, we only tested on one version:
python3 --version
## Python 3.10.12
Install plotting libs
pip3 install matplotlib
All benchmarks are found in the isol-bench dir. For every test there is a subdir with a readme.
1-overhead: test overhead of a knob in latency, bandwidth, CPU, memory
2-fairness: test fairness capabilities of a knob
3-prio-versus-util: give the pareto front capabilities of a knob in latency/bandwidth prio and SSD bandwidth utilization
4-bursts: evaluate the response time of prioritization (continuation of benchmark 3)