-
Notifications
You must be signed in to change notification settings - Fork 102
Auto Tuning
Some plugin-implementations may elect to support auto-tuning to minimize the manual overhead of figuring out the read or write rate limit at which performance starts to fall below some configurable threshold.
In a nutshell, this technique involves (i) setting the initial read/write limit for your benchmark run to a low enough level that is guaranteed not to overload the data store you are benchmarking, and then (ii) using a benchmark driver plug-in that provides an implementation for the autoTune[Write/Read]RateLimit methods. These methods will first examine three things: (1) events which encode the results of read/write operations, (2) run time statistics, and (3) the currentRateLimit. After interpreting these three pieces of information these methods will return a new recommended rate limit (which may be higher or lower than currentRateLimit.) (As a user you don't have to write these methods, but you can only take advantage of auto-tuning if you use a plugin that has these methods implemented.)
The benchmark driver will attempt to raise a rate limit from its initial to its final value in a fixed number of steps, given by the formula: _autoTuneRampPeriodMillisecs / autoTuneIncrementIntervalMillisecs_
. At each step the new candidate limit should be determined by the previous value for the rate PLUS (final rate - initial rate) / number-of-steps, rounded down to the nearest integer.
This feature is experimental. The first plug-in which implements it (Elastic search REST client plug-in) only implements auto-tuning for write operations.
Plug-in authors wishing to support this extension should provide an implementation for the autoTuneReadRateLimit of @NdBenchAbstractClient