Arrange an experiment on the test network where we dump create cells on a relay and time the responses
In legacy/trac#25347 (moved) I asked: "Do we have any reason to believe that the calculation in have_room_for_onionskin() is at all accurate? That is, are we sometimes sending this response when there are only 0.25 seconds worth of create cells in our queue? Or are we sometimes not sending them even though there are 5 seconds of cells queued?"
We have a test network, with real relays on it.
We should arrange an experiment where we fill a relay with various levels of create cell load, and keep track of response times and response codes. For one, that will help us tune the calculation that have_room_for_onionskin() makes. For two, it will help us with a new level of testing that we don't get from our unit tests.
Ideally we should arrange the experiment so it is easy to repeat, and then we can run it periodically (as a regression test) without too much additional effort. And e.g. run it with the relay using various values of NumCPUs.
In particular, I am interested to discover if we waste a lot of time in the "glue" stages of the cpuworker where we could be more efficient about queueing work items well but we're not. And, as we get better with modularization, we should be able to see an improvement here.
See legacy/trac#7291 (moved) for where this timing estimation thing first came in.