-
Notifications
You must be signed in to change notification settings - Fork 103
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:
- 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,
- using a benchmark driver plug-in that provides an implementation for the
autoTune[Write/Read]RateLimit
methods.
These methods will first examine three things:
- events which encode the results of read/write operations,
- runtime statistics, and
- 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. More information about the configuration can be found in the Configuration section.