#bittorrent #p2p #torrent

app aquatic_bencher

Automated benchmarking of aquatic and other BitTorrent trackers (Linux only)

1 unstable release

0.9.0 May 3, 2024

#2243 in Network programming

Download history 157/week @ 2024-04-28 17/week @ 2024-05-05 7/week @ 2024-05-19 1/week @ 2024-05-26

117 downloads per month


2.5K SLoC


Automated benchmarking of aquatic and other BitTorrent trackers.

Requires Linux 6.0 or later.

Currently, only UDP BitTorrent tracker support is implemented.


Name Commit
aquatic_udp (use same as bencher)
opentracker 110868e
chihaya 2f79440
torrust-tracker 47c2fe2

The commits listed are ones known to work. It might be a good idea to first test with the latest commits for each project, and if they don't seem to work, revert to the listed commits.

Chihaya is known to crash under high load.


Install dependencies. This is done differently for different Linux distributions. On Debian 12, run:

sudo apt-get update
sudo apt-get install -y curl cmake build-essential pkg-config git screen cvs zlib1g zlib1g-dev golang
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

Optionally install latest Linux kernel. On Debian 12, you can do so from backports:

sudo echo "deb http://deb.debian.org/debian bookworm-backports main contrib" >> /etc/apt/sources.list
sudo apt-get update && sudo apt-get install -y linux-image-amd64/bookworm-backports
# You will have to restart to boot into the new kernel

Compile aquatic_udp, aquatic_udp_load_test and aquatic_udp_bencher:

git clone https://github.com/greatest-ape/aquatic.git && cd aquatic
# Optionally enable certain native platform optimizations
. ./scripts/env-native-cpu-without-avx-512
cargo build --profile "release-debug" -p aquatic_udp --features "io-uring"
cargo build --profile "release-debug" -p aquatic_udp_load_test
cargo build --profile "release-debug" -p aquatic_bencher --features udp
cd ..

Compile and install opentracker:

cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co libowfat
cd libowfat
cd ..
git clone git://erdgeist.org/opentracker
cd opentracker
# Optionally enable native platform optimizations
sed -i "s/^OPTS_production=-O3/OPTS_production=-O3 -march=native -mtune=native/g" Makefile
sudo cp ./opentracker /usr/local/bin/
cd ..

Compile and install chihaya:

git clone https://github.com/chihaya/chihaya.git
cd chihaya
go build ./cmd/chihaya
sudo cp ./chihaya /usr/local/bin/

Compile and install torrust-tracker:

git clone git@github.com:torrust/torrust-tracker.git
cd torrust-tracker
cargo build --release 
cp ./target/release/torrust-tracker /usr/local/bin/

You might need to raise locked memory limits:

ulimit -l 65536

Run the bencher:

cd aquatic
./target/release-debug/aquatic_bencher udp
# or print info on command line arguments
./target/release-debug/aquatic_bencher udp --help

If you're running the load test on a virtual machine / virtual server, consider passing --min-priority medium --cpu-mode subsequent-one-per-pair for fairer results.


~278K SLoC