Performance of P2P implementations Răzvan Deaconescu, UPB razvan.deaconescu@cs.pub.ro 8th of September 2008 Aachen, P2P’08
Contents P2P performance testing framework Internals Use case Current setup Results
What? P2P performance testing framework comparison of BitTorrent clients Tribler, transmission, azureus, etc. measure speed, download time, connected peers fully automated logging facility -> results analysis
Why? Which one is the best? Is Tribler the best? If not, work on it How close is world domination? evaluate, learn, adapt, conquer focus on bittorrent core not on fancy interfaces
Goal best online video experience use the best BT algorithms fastest download times understand BT internals unchoking policies DHT impact neighbour set inclusion
How? fully automated scripted interface each client must have a CLI git repository for easy synchronization SSH command interface BT client/system mapping torrent file store logging and download info
How? (a.k.a. architecture) git repo btc btc comm SSH .... btc command interface client interface torrent files
Hasn’t this been done? not like this most papers focus on BT architecture and optimizations how’s this different? _real_ implementations find out which one’s better find out why that one is better can potentially be expanded to whole BT/P2P testing scenarios
How does it work? install clients on target systems install bt-prof testing framework git pull command clients through SSH analyze log and output files create fancy graphics to mesmerize the audience
Experimental setup setup similar test systems same OS same network run clients simultaneously competition fastest is the best
Experimental setup (2) focus on private tracker setting large swarms sots of seeders ratio enforcement -> upload incentive free-riding prevention
Config file not very pretty (shell script) #!/bin/bash declare -a CLIENT_ARRAY CLIENT_ARRAY=("hrktorrent" "tribler" "aria" "transmission" "azureus" "mainline") declare -a ADDRESS_ARRAY ADDRESS_ARRAY=("141.85.37.241" "141.85.37.242" "141.85.37.243" "141.85.37.244" "141.85.37.245" "141.85.37.246") USERNAME=p2p RUN_SCRIPT=/home/p2p/cs-tribler/perf/bt-prof/run.bash METADIR=/home/p2p/cs-tribler/perf/bt-prof/meta/ METAFILE=tropic_thunder.torrent
Client configuration common interface configure run $ ls clients/ aria azureus bittornado hrktorrent mainline transmission tribler $ ls -F clients/transmission/ config.bash dld/ log/ parse.bash res/ run.bash upload.bash common interface configure run parse log/output files upload results
How to add a new client? needs a CLI how to store download status information? (every second) how to store logging information? where are downloaded files stored? easily adapt client test framework
Current testing scenario 6 computers each runs a different BT client start torrent download simultaneously end/no_end download session option (continue seeding) measure download time store download status store logging information
Influence factors swarm size number of seeders/number of leechers time of day file size BT core implementation
TestSwarm 1 - results 908MB, 2900s, 2700l hrktorrent – 9m41s Tribler - 34m14s Azureus – 32m41s Transmission – 40m46s aria – 1h17m41s mainline - 4h53m24s
TestSwarm 2 - results 4.1GB, 761s, 117l hrktorrent – 15m13s Tribler - 21m16s Azureus – 38m33s Transmission – 52m59s Aria – 53m53s mainline – 1h00m39s Tribler and hrktorrent “cheated” -> use iptables
TestSwarm 3- results 1.09GB, 521s, 49l hrktorrent – 2m30s Transmission – 7m05s Aria – 8m08s mainline – 25m57s problems with Azureus issues with Tribler
TestSwarm 4 - results 1.09GB, 496s, 51l hrktorrent – 2m14s Tribler – 1h12m57s (same issues) Azureus – 7m08s Transmission – 5m03s Aria – 10m23s mainline – 14m14s sequential download/non-simultaneous
What do the graphics tell? which client performs better/best Hrktorrent (libtorrent-rasterbar) is the BT Usain Bolt no info _so far_ about _why_ a client is better have to dig in log files connections unchokes
Side effects submitted patches to transmission and hrktorrent minor modifications to Tribler and mainline to get output/logging found out that “if it doesn’t work, you can fix it” :-) e-mail/IRC conversations with BT clients developers
TODO list analyze log files browse the code learn and improve expandable framework advanced user interface extend framework to other testing scenarios documentation
Internet Content Provider Content Provider Automatic Deployment LivingLab User Automatic Deployment Test Stations LivingLab User UPB Living Lab Test Admin Data Collection Repository Information Analysis Tool +
Special thanks to Johan, for bulking me up with info and motivation
Further info http://www.tribler.org/DownloadPerformance needs desperate update git://anaconda.cs.pub.ro/home/projects/tribler/new-cs-tribler razvan.deaconescu@cs.pub.ro