Lumiera
0.pre.03
»edit your freedom«
|
#include "/Werk/devel/lumi/tests/vault/gear/stress-test-rig.hpp"
Specific stress test scheme to determine the »breaking point« where the Scheduler starts to slip.
Definition at line 276 of file stress-test-rig.hpp.
Public Member Functions | |
auto | perform () |
Launch a measurement sequence to determine the »breaking point« for the configured test load and parametrisation of the Scheduler. More... | |
Classes | |
struct | Res |
Private Types | |
using | TestLoad = typename CONF::TestLoad |
using | TestSetup = typename TestLoad::ScheduleCtx |
Private Member Functions | |
template<class FUN > | |
Res | conductBinarySearch (FUN &&runTestCase, vector< Res > const &results) |
invoke a binary search to produce a sequence of test series with the goal to narrow down the stressFact where the Schedule slips away. | |
void | configureTest (TestSetup &testSetup, double stressFac) |
prepare the ScheduleCtx for a specifically parametrised test series | |
bool | decideBreakPoint (Res &res) |
criterion to decide if this test series constitutes a slipped schedule | |
void | maybeAdaptScaleEmpirically (TestSetup &testSetup, double stressFac) |
Attempt to factor out some observable properties, which are considered circumstantial and not a direct result of scheduling overheads. More... | |
Res | runProbes (TestSetup &testSetup, double stressFac) |
perform a repetition of test runs and compute statistics | |
void | showRef (TestSetup &testSetup) |
void | showRes (Res &res) |
void | showRun (uint i, double delta, double t, bool over, bool fail) |
void | showStep (Res &res) |
Private Attributes | |
double | adjustmentFac {1.0} |
adaptive scale correction based on observed behaviour | |
_Fmt | fmtResSDv_ {"%9s= %5.2f ±%4.2f%s"} |
_Fmt | fmtResVal_ {"%9s: %5.2f%s"} |
_Fmt | fmtRun_ {"....·%-2d: Δ=%4.1f t=%4.1f %s %s"} |
_Fmt | fmtStep_ { "%4.2f| : ∅Δ=%4.1f±%-4.2f ∅t=%4.1f %s %%%-3.0f -- expect:%4.1fms"} |
size_t | gaugeProbes = 3 * CONF::REPETITIONS |
struct vault::gear::test::bench::BreakingPoint::Res |
|
inlineprivate |
Attempt to factor out some observable properties, which are considered circumstantial and not a direct result of scheduling overheads.
The artificial computational load is known to drift towards larger values than calibrated; moreover the actual concurrency achieved can deviate from the heuristic assumptions built into the testing schedule. The latter is problematic to some degree however, since the Scheduler is bound to scale down capacity when idle. To strike a reasonable balance, this adjustment of the measurement scale is done only initially, and when the stress factor is high and some degree of pressure on the scheduler can thus be assumed.
Definition at line 393 of file stress-test-rig.hpp.
References StressTestRig< maxFan >::showRef, StressTestRig< maxFan >::showRes, StressTestRig< maxFan >::showStep, and StressTestRig< maxFan >::testSetup().
|
inline |
Launch a measurement sequence to determine the »breaking point« for the configured test load and parametrisation of the Scheduler.
[stress-factor, ∅delta, ∅run-time]
Definition at line 459 of file stress-test-rig.hpp.
References Config::COMPUTATION_CAPACITY, StressTestRig< maxFan >::showRef, StressTestRig< maxFan >::showRes, StressTestRig< maxFan >::testLoad(), and TRANSIENTLY.