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 | eaa86a7 |
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:[email protected]:/cvs -z9 co libowfat
cd libowfat
make
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
make
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 [email protected]: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.