Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
Support for non-deterministic distribution of operations #251
There are use cases where it would be desirable to vary the request rate over time, e.g. when replaying user sessions and/or varying load to simulate daily patterns in long running benchmarks. It would be great to have support for this in Rally as it would add a lot of flexibility.
I have spent the last few days thinking about ways to do this, and one reasonably simple way could be to allow a custom parameter source to return the duration until it expects to run the next request and have Rally use this to override the fixed interval used when in rate limiting mode.
It is a simple way to give control to the parameter source, which allows scripting this, but maybe not the ultimate solution.
As you describe, the current request throttling strategy is based on a deterministic distribution. It is implemented in driver.py.
I was also thinking about allowing other distributions (like Poisson processes) at some point and I think we should keep request throttling based on any statistical distributions within Rally but let users choose via
However, you mention simulating more complex traffic patterns and this might even warrant introducing a new concept in addition to parameter sources and runners.
When simulating traffic based e.g. on data from a file, it would be convenient to control this from the parameter source. I however don't see why allowing this would preclude us from also offer another method that might e.g. be more suited to altering patterns around large bulk requests.