[tor-dev] Twisted-based Tor client performance measurement tool

Karsten Loesing karsten at torproject.org
Mon Jan 21 20:06:38 UTC 2013

Hi everyone,

you probably heard of Torperf [0], the tool that produces our Tor client
performance graphs [1].  Torperf is mostly a bunch of scripts and
lengthy HOWTOs, so setting it up and keeping it happy is not exactly
trivial.  The same applies to extending it, e.g., to make downloads
using Selenium/Firefox rather than using its own C SOCKS client.

I'm pondering a rewrite of Torperf in Twisted.  The idea is to have a
single Twisted application that is trivial to install and that does the
following things:

1) set up local Tor clients, configure them, and register for events;
2) run a local web server to download files from or upload files to;
3) periodically run one or more tests which can be:
3.1) an HTTP GET request over Tor to its own web server,
3.2) an HTTP POST request to measure upload speed,
3.3) a GET or POST request to a locally running hidden service,
3.4) a series of fetches of top 50 Alexa domains using Selenium/Firefox;
3.5) a series of requests to track stream/circ allocations for #5830;
4) store request timestamps and Tor controller events to SQLite;
5) provide results via a RESTful API over its web server.

That's a lot, and to make things even more fun, there's a sponsor
deadline to have more realistic Torperf measurements by February 28.
So, I want to start with 3.4 and minimal versions of 4 and 5.  But I
want to make sure that the remaining parts can be added later without
redesigning everything again.

My questions:
- Is Twisted the right framework for this?  What are the alternatives?
- Is there existing code that I should look at before writing new code?
- Does anybody want to help out? :)


[0] https://gitweb.torproject.org/torperf.git

[1] https://metrics.torproject.org/performance.html

More information about the tor-dev mailing list