OnionPerf is a utility to track Tor and onion service performance.

OnionPerf uses multiple processes and threads to download random data through Tor while tracking the performance of those downloads. The data is served and fetched on localhost using two TGen (traffic generator) processes, and is transferred through Tor using Tor client processes and an ephemeral Tor Onion Service. Tor control information and TGen performance statistics are logged to disk, analyzed once per day to produce a json stats database and files that can feed into Torperf, and can later be used to visualize changes in Tor client performance over time.

For more information, see

We are running three onionperf instance at the moment:

op-us in DC: (Greenhost)

op-nd in AMS: (Greenhost)

op-hk in Hong Kong: (Greenhost)

op-ab in Aberdeen, Scotland: (University of Aberdeen)

OnionPerf setup is rather simple, a standard test container (in docker) for OnionPerf can be found here:

The Greenhost hosted instances are on Greenhost VPS. Greenhost support can be contacted through this web form.

Contact irl for the University of Aberdeen instance for now.

Onionperf's Ticket Query

Ticket Status Summary Owner Reporter
#34257 new Analyze unusual distribution of time to extend to first hop in circuit metrics-team karsten
#34231 new Document and maybe improve how we're mapping TGen transfers to Tor streams/circuits metrics-team karsten
#34218 new Split PROXY errors into whatever reasons are given in TorCtl logs metrics-team karsten
#34213 new Replace TorCtlParser with OnionTrace's control log parser metrics-team karsten
#33974 accepted Update OnionPerf to TGen 1.0.0 acute karsten
#33438 new OnionPerf: Scalability, Performance, Establishing Baseline Metrics metrics-team gaba
#33432 assigned Multiple downloads for oneshot mode phw acute
#33421 accepted Track which Guard is used for experimental measurements karsten acute
#33420 assigned Add CBT events to Onionperf result files metrics-team acute
#33399 accepted Measure static guard nodes with OnionPerf karsten acute
#33392 new Add new metadata fields to json output metrics-team acute
#33391 needs_review Add new metadata fields and definitions metrics-team acute
#33328 new O3.2 Include additional OnionPerf filters. metrics-team gaba
#33327 new O3.1 Develop developer-facing tooling to quickly graph baseline performance metrics. metrics-team gaba
#33326 new Objective 3: Make improvements to the way we analyze performance metrics. metrics-team gaba
#33325 new O2.3 Implement static guard node support for OnionPerf. metrics-team gaba
#33324 new O2.2 Develop at least one new OnionPerf model: An OnionPerf model defines the pattern of traffic that is generated by the instances for conducting a measurement. metrics-team gaba
#33323 new O2.1 Add instance metadata: We need a way to distinguish our current four long-term OnionPerf measurements that are automatically published to the Metrics portal from short-term experimental measurements. metrics-team gaba
#33322 new Objective 2: Expand the kinds of measurements OnionPerf can take by making improvements to its codebase. metrics-team gaba
#33321 new O1.3 Make OnionPerf more accessible to researchers and developers metrics-team gaba
#33320 new Objective 1: Make operational improvements to existing OnionPerf deployments and make it easier to deploy new OnionPerf instances metrics-team gaba
#33319 new O1.2 Improve ease of deployment and maintenance: We will produce Ansible tasks for deploying and managing deployments of OnionPerf instances, which also allow for performing upgrades and custom configuration changes. metrics-team gaba
#33318 new O1.1 Improve monitoring: We will produce a Nagios plugin for monitoring OnionPerf instances to ensure that they are operating correctly. metrics-team gaba
#33260 new Add option to filter graphed OnionPerf results by relay fingerprint metrics-team karsten
#33259 new Store measurements in a local database to reduce plotting time metrics-team karsten
#33257 needs_review Add CDF-DL graph karsten karsten
#30798 reopened Develop and deploy tgen model resembling ping metrics-team karsten
#30362 assigned OnionPerf TGen parser needs reworking metrics-team acute
#28271 assigned Check OnionPerf instances from Nagios metrics-team irl

Last modified 22 months ago Last modified on Jan 10, 2019, 12:11:58 PM