This document provides instructions on how to set up the eBPF library evaluation project, run the experiments, and process the results.
The project has been tested on a Linux server with Ubuntu 24.04 OS and kernel version 6.8.0-58-generic.
The following dependencies are required to run the experiments.
-
eBPF libraries:
-
Additional dependencies:
- FIO (v3.36)
- bpftool (v7.4.0)
- pcp-dstat (v6.2.0)
- Intel RAPL
For parsing the collected information, the following dependencies are required:
- Python (3.x)
- Python libraries listed in
parser/requirements.txt
Install the Python dependencies with:
pip install -r parser/requirements.txtThe scripts provided in the scripts/ and gnu_plots_parser/ directories allow you to:
- Run the tools with various configurations
- Generate output results into
results/ - Visualize experiment metrics
To execute the experiments, use the run_multiple_tests.sh script located in the scripts/ directory as shown below:
./scripts/run_multiple_tests.sh <tool_type> <ebpf_library> <nr_iterations> <output_path><tool_type>: The type of tool to execute (e.g.,syscount,rw-tracer,rw-tracer-all).<ebpf_library>: The file extension for the eBPF librarypyfor BCCbtfor bpftraceexefor libbpf and ebpf-gorsfor Aya
<nr_iterations>: The number of iterations to run the experiment (e.g., 3 runs).<output_path>: The directory where the results will be saved.
To process the results (i.e., tool and benchmark outputs), run the parser/main.py script as follows:
python parser/main.py --vanilla <folder_to_vanilla_traces> --test <folder_to_test_workload_traces><folder_to_vanilla_traces>: Path to the vanilla trace results directory. This folder should contain subdirectories named after the machine IDs (e.g., 111, 112, 113...), each with workload-specific trace data.<folder_to_test_workload_traces>: Path to the workload trace results directory. This folder should contain subdirectories named using the format<workload>#<tracer>, each containing runs of the test workload with the specified tracing tool.
To reproduce the figures (e.g., Figures 1, 2 and 3 in the paper), run the following command in the gnu_plots_parser/ directory:
./gen_ebpf_plots.sh <experiment><experiment>: The name of the experiment to generate plots for (e.g.,fio-read,fio-write,fio-mixed).- The script will generate three plots (performance, fidelity, and resource usage) for the specified experiment and save them in the
pdf/andpng/directories.