Scheduler-test: optionally allow to propagate immediately
This is just another (obvious) degree of freedom, which could be interesting to explore in stress testing, while probably not of much relevance in practice (if a job is expected to become runable earlier, in can as well be just scheduled earlier). Some experimentation shows that the timing measurements exhibit more fluctuations, but also slightly better times when pressure is low, which is pretty much what I'd expect. When raising pressure, the average times converge towards the same time range as observed with time bound propagation. Note that enabling this variation requires to wire a boolean switch over various layers of abstraction; arguably this is an unnecessary complexity and could be retracted once the »experimentation phase« is over. This completes the preparation of a Scheduler Stress-Test setup.
This commit is contained in:
parent
0065dabed1
commit
3fb4baefd5
6 changed files with 108 additions and 62 deletions
|
|
@ -171,12 +171,13 @@ namespace gear {
|
|||
* Term — the prerequisite — by invoking #appendNotificationTo(targetTerm).
|
||||
*/
|
||||
Term&
|
||||
expectNotification (Activity& notificationSrc)
|
||||
expectNotification (Activity& notificationSrc, bool unlimitedTime =false)
|
||||
{
|
||||
REQUIRE (notificationSrc.is (Activity::NOTIFY));
|
||||
setupGate();
|
||||
gate_->incDependencies();
|
||||
notificationSrc.setNotificationTarget (gate_, Time{post_->data_.timeWindow.life});
|
||||
Time triggerTimeStart{unlimitedTime? Time::ANYTIME : post_->data_.timeWindow.life};
|
||||
notificationSrc.setNotificationTarget (gate_, triggerTimeStart);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
@ -187,11 +188,11 @@ namespace gear {
|
|||
* been activated and processed up to emitting the inserted `NOTIFY`.
|
||||
*/
|
||||
Term&
|
||||
appendNotificationTo (Term& targetTerm)
|
||||
appendNotificationTo (Term& targetTerm, bool unlimitedTime =false)
|
||||
{
|
||||
Activity& success = alloc_.create (Activity::NOTIFY);
|
||||
insert (findTail (callback_? callback_ : invoke_), &success);
|
||||
targetTerm.expectNotification (success);
|
||||
targetTerm.expectNotification (success, unlimitedTime);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -205,8 +205,8 @@ namespace gear {
|
|||
/** build Activity chain and hand-over to the Scheduler. */
|
||||
ScheduleSpec post();
|
||||
|
||||
ScheduleSpec linkToSuccessor (ScheduleSpec&);
|
||||
ScheduleSpec linkToPredecessor(ScheduleSpec&);
|
||||
ScheduleSpec linkToSuccessor (ScheduleSpec&, bool unlimitedTime =false);
|
||||
ScheduleSpec linkToPredecessor(ScheduleSpec&, bool unlimitedTime =false);
|
||||
private:
|
||||
void maybeBuildTerm();
|
||||
};
|
||||
|
|
@ -569,20 +569,20 @@ namespace gear {
|
|||
}
|
||||
|
||||
inline ScheduleSpec
|
||||
ScheduleSpec::linkToSuccessor (ScheduleSpec& succSpec)
|
||||
ScheduleSpec::linkToSuccessor (ScheduleSpec& succSpec, bool unlimitedTime)
|
||||
{
|
||||
this->maybeBuildTerm();
|
||||
succSpec.maybeBuildTerm();
|
||||
term_->appendNotificationTo (*succSpec.term_);
|
||||
term_->appendNotificationTo (*succSpec.term_, unlimitedTime);
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
inline ScheduleSpec
|
||||
ScheduleSpec::linkToPredecessor (ScheduleSpec& predSpec)
|
||||
ScheduleSpec::linkToPredecessor (ScheduleSpec& predSpec, bool unlimitedTime)
|
||||
{
|
||||
predSpec.maybeBuildTerm();
|
||||
this->maybeBuildTerm();
|
||||
predSpec.term_->appendNotificationTo (*term_);
|
||||
predSpec.term_->appendNotificationTo (*term_, unlimitedTime);
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ namespace test {
|
|||
* @see SchedulerActivity_test
|
||||
* @see SchedulerInvocation_test
|
||||
* @see SchedulerCommutator_test
|
||||
* @see stress-test-rig.hpp
|
||||
*/
|
||||
class SchedulerStress_test : public Test
|
||||
{
|
||||
|
|
@ -145,8 +146,11 @@ namespace test {
|
|||
|
||||
|
||||
|
||||
/** @test TODO build a scheme to adapt the schedule to expected runtime.
|
||||
* @todo WIP 12/23 🔁 define ⟶ implement
|
||||
/** @test build a scheme to adapt the schedule to expected runtime.
|
||||
* - as in many other tests, use the massively forking load pattern
|
||||
* - demonstrate how TestChainLoad computes an idealised level expense
|
||||
* - verify how schedule times are derived from this expense sequence
|
||||
* @todo WIP 12/23 ✔ define ⟶ ✔ implement
|
||||
*/
|
||||
void
|
||||
setup_systematicSchedule()
|
||||
|
|
@ -164,7 +168,6 @@ namespace test {
|
|||
cpuLoad.calibrate();
|
||||
|
||||
double micros = cpuLoad.invoke();
|
||||
SHOW_EXPR(micros);
|
||||
CHECK (micros < 550);
|
||||
CHECK (micros > 450);
|
||||
|
||||
|
|
@ -285,7 +288,17 @@ SHOW_EXPR(micros);
|
|||
|
||||
|
||||
/** @test TODO determine the breaking point towards scheduler overload
|
||||
* @todo WIP 1/24 🔁 define ⟶ implement
|
||||
* - use the integrated StressRig
|
||||
* - demonstrate how parameters can be tweaked
|
||||
* - perform a run, leading to a binary search for the breaking point
|
||||
* @note on my machine, I observe stress factors close below 0.5, due to the fact
|
||||
* that the ComputationalLoad typically takes 2 times as long in concurrent
|
||||
* usage compared to its calibration, which is done in a tight loop. This
|
||||
* is strange and may well be due to some peculiarity of my system. Which
|
||||
* also implies that this test's behaviour might be difficult to verify,
|
||||
* other than by qualitative interpretation of the log output on STDOUT.
|
||||
* @see stress-test-rig.hpp
|
||||
* @todo WIP 1/24 ✔ define ⟶ ✔ implement
|
||||
*/
|
||||
void
|
||||
search_breaking_point()
|
||||
|
|
@ -303,10 +316,6 @@ SHOW_EXPR(micros);
|
|||
};
|
||||
|
||||
auto [stress,delta,time] = StressRig::with<Setup>().searchBreakingPoint();
|
||||
|
||||
SHOW_EXPR(stress)
|
||||
SHOW_EXPR(delta)
|
||||
SHOW_EXPR(time)
|
||||
CHECK (delta > 2.0);
|
||||
CHECK (0.55 > stress and stress > 0.4);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -161,6 +161,7 @@ namespace test {
|
|||
{
|
||||
testSetup.withLoadTimeBase(CONF::LOAD_BASE)
|
||||
.withBaseExpense (CONF::BASE_EXPENSE)
|
||||
.withSchedNotify (CONF::SCHED_NOTIFY)
|
||||
.withSchedDepends(CONF::SCHED_DEPENDS)
|
||||
.withAdaptedSchedule(stressFac, CONF::CONCURRENCY);
|
||||
}
|
||||
|
|
@ -181,11 +182,11 @@ namespace test {
|
|||
avgT += runTime[i];
|
||||
}
|
||||
avgT /= CONF::REPETITIONS;
|
||||
avgD = fabs (avgT-expT);
|
||||
avgD = (avgT-expT); // can be < 0
|
||||
for (uint i=0; i<CONF::REPETITIONS; ++i)
|
||||
{
|
||||
sdev += sqr (runTime[i] - avgT);
|
||||
double delta = fabs (runTime[i] - expT);
|
||||
double delta = (runTime[i] - expT);
|
||||
bool fail = (delta > CONF::FAIL_LIMIT);
|
||||
if (fail)
|
||||
++ pf;
|
||||
|
|
@ -331,6 +332,7 @@ namespace test {
|
|||
|
||||
usec LOAD_BASE = 500us;
|
||||
usec BASE_EXPENSE = 0us;
|
||||
bool SCHED_NOTIFY = true;
|
||||
bool SCHED_DEPENDS = false;
|
||||
uint CONCURRENCY = work::Config::getDefaultComputationCapacity();
|
||||
double EPSILON = 0.01; ///< error bound to abort binary search
|
||||
|
|
|
|||
|
|
@ -1673,7 +1673,7 @@ namespace test {
|
|||
FrameRate levelSpeed_{1, SCHEDULE_LEVEL_STEP};
|
||||
FrameRate planSpeed_{1, SCHEDULE_PLAN_STEP};
|
||||
TimeVar nodeExpense_{SCHEDULE_NODE_STEP};
|
||||
double schedNotify_{SCHED_NOTIFY? 1.0:0.0};
|
||||
bool schedNotify_{SCHED_NOTIFY};
|
||||
bool schedDepends_{SCHED_DEPENDS};
|
||||
uint blockLoadFactor_{2};
|
||||
size_t chunkSize_{DEFAULT_CHUNKSIZE};
|
||||
|
|
@ -1713,7 +1713,8 @@ namespace test {
|
|||
{
|
||||
size_t predIdx = chainLoad_.nodeID (pred);
|
||||
size_t succIdx = chainLoad_.nodeID (succ);
|
||||
schedule_[predIdx].linkToSuccessor (schedule_[succIdx]);
|
||||
bool unlimitedTime = not schedNotify_;
|
||||
schedule_[predIdx].linkToSuccessor (schedule_[succIdx], unlimitedTime);
|
||||
}
|
||||
|
||||
/** continue planning: schedule follow-up planning job */
|
||||
|
|
@ -1733,7 +1734,7 @@ namespace test {
|
|||
.startTime(jobStartTime (levelDone+1))
|
||||
.lifeWindow(SAFETY_TIMEOUT)
|
||||
.post()
|
||||
.linkToPredecessor (schedule_[lastNodeIDX])
|
||||
.linkToPredecessor (schedule_[lastNodeIDX], not schedNotify_)
|
||||
; // Setup wait-dependency on last computation
|
||||
}
|
||||
|
||||
|
|
@ -1859,9 +1860,9 @@ namespace test {
|
|||
}
|
||||
|
||||
ScheduleCtx&&
|
||||
withSchedNotify (double degree)
|
||||
withSchedNotify (bool doSetTime =true)
|
||||
{
|
||||
schedNotify_ = degree;
|
||||
schedNotify_ = doSetTime;
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -107645,8 +107645,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1702945662283" ID="ID_557005311" MODIFIED="1704134638849" TEXT="Möglichkeit für hierauf abstellendes genaues Scheduling">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1702945662283" FOLDED="true" ID="ID_557005311" MODIFIED="1704762745930" TEXT="Möglichkeit für hierauf abstellendes genaues Scheduling">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1702945698917" ID="ID_617955437" MODIFIED="1704144780465" TEXT="ScheduleCtx stellt dieses Feature bereit">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1703797401009" ID="ID_1091284884" MODIFIED="1703797408236" TEXT="implementiert durch eine LUT"/>
|
||||
|
|
@ -107733,8 +107733,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704130400942" ID="ID_1446554344" MODIFIED="1704130409312" TEXT="Test-Parametrisierung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1704130400942" ID="ID_1446554344" MODIFIED="1704762721194" TEXT="Test-Parametrisierung">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1702945731584" ID="ID_572123244" MODIFIED="1704151052631" TEXT="stress-Faktor relativ zu diesem Schema">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
|
|
@ -107751,13 +107751,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704130413244" ID="ID_899448993" MODIFIED="1704130422596" TEXT="zusätziches Einzel-Stepping">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1704130413244" ID="ID_899448993" MODIFIED="1704762719893" TEXT="zusätziches Einzel-Stepping">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1702946185508" ID="ID_857882482" MODIFIED="1704216915880" TEXT="darauf aufbauend: Streßtest-Mechanismus entwicklen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1702946185508" FOLDED="true" ID="ID_857882482" MODIFIED="1704762747719" TEXT="darauf aufbauend: Streßtest-Mechanismus entwicklen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1702946236869" ID="ID_1475819731" MODIFIED="1704130799415">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
|
|
@ -107824,7 +107824,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#338800" CREATED="1704243593362" ID="ID_1513298833" MODIFIED="1704316330671" TEXT="Statistik-Berechnung integrieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1704243607600" ID="ID_1968188887" MODIFIED="1704331913127" TEXT="Lib-Implementierung: binäre Suche">
|
||||
<node COLOR="#338800" CREATED="1704243607600" FOLDED="true" ID="ID_1968188887" MODIFIED="1704331913127" TEXT="Lib-Implementierung: binäre Suche">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1704316333600" ID="ID_198671243" MODIFIED="1704322903614" TEXT="Basis-Algo">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -107889,35 +107889,26 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704495633669" ID="ID_640045443" MODIFIED="1704495650611" TEXT="Ergänzungen Steuerung des Test-Setup">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1704495633669" FOLDED="true" ID="ID_640045443" MODIFIED="1704762759068" TEXT="Ergänzungen Steuerung des Test-Setup">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1704495651940" ID="ID_1057017478" MODIFIED="1704495667220" TEXT="Bestimmung">
|
||||
<node CREATED="1704495668109" ID="ID_1596167188" MODIFIED="1704495695017" TEXT="Möglichkeiten ergeben sich aus der konkreten Konstruktion"/>
|
||||
<node CREATED="1704495695581" ID="ID_1523037500" MODIFIED="1704495717221" TEXT="sie ermöglichen Variabilität zum »Ausleuchten« der Eigenschaften"/>
|
||||
</node>
|
||||
<node CREATED="1704495722857" ID="ID_768184682" MODIFIED="1704495725508" TEXT="Freiheitsgrade">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704495728704" ID="ID_1784002890" MODIFIED="1704496452721" TEXT="einen Basis-Aufwand pro Node(Job) vorsehen">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1704495722857" ID="ID_768184682" MODIFIED="1704762756438" TEXT="Freiheitsgrade">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node COLOR="#435e98" CREATED="1704495728704" ID="ID_1784002890" MODIFIED="1704762689293" TEXT="einen Basis-Aufwand pro Node(Job) vorsehen">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704495783513" ID="ID_1373430396" MODIFIED="1704496452722" TEXT="Folge-Jobs nicht explizit sondern nur per Dependency planen">
|
||||
<node COLOR="#435e98" CREATED="1704495783513" ID="ID_1373430396" MODIFIED="1704762689293" TEXT="Folge-Jobs nicht explizit sondern nur per Dependency planen">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704495961945" ID="ID_1860447724" MODIFIED="1704496452722" TEXT="Zeitpunkt für Folge-Jobs nicht|teilweise|explizit beschränken">
|
||||
<node COLOR="#435e98" CREATED="1704495961945" ID="ID_1860447724" MODIFIED="1704762689293" TEXT="Zeitpunkt für NOTIFY-dispatch nicht oder explizit beschränken">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1704496070203" HGAP="27" ID="ID_1489336677" MODIFIED="1704496414528" TEXT="zur Untersuchung als graduellen Parameter auslegen" VSHIFT="6">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
eigentlich wäre das eine Ja/Nein-Entscheidung, aber da sie über einen Zeit-Parameter gesteuert wird, kann man hier alles zwischen Time::ANYTIME und dem nominellen Zeitpunkt des Folge-Jobs explizit setzen; dieser Parameter hat sich <i>akzidentell aus der Implementierung</i>  ergeben und wird im NOTIFY-Verb gespeichert; das vorliegen dieses Parameters ist es auch, wodurch der eigentliche explizite Trigger für den Folge-Job wegfallen kann. Setzt man hier die nominelle Zeit ein, so wird das NOTIFY tatsächlich erst zu dieser Zeit zugestellt, und das bedeutet, daß auch Dependency-Ketten nach dem nominellen Schedule „getaktet“ sind. Im anderen Extremfall gibt es keine Limitierung und das NOTIFY wird vom Scheduler zur nächstmöglichen Gelegenheit zugestellt. Sofern allerdings die Berechnung ohnehin im Verzug ist, spielt diese Unterscheidung keine Rolle mehr (dann wird nämlich immer sofort getriggert); es könnte aber für zusätzlichen Flexibilitäts-Puffer sorgen, wenn ein Schedule zeitweilig zu dünn besetzt ist, denn erst dadurch könnte der Scheduler sogar vorzeitig fertig werden.
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1704496443809" ID="ID_1582406331" MODIFIED="1704500310355" TEXT="Implementierung">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1704496443809" FOLDED="true" ID="ID_1582406331" MODIFIED="1704762707029" TEXT="Implementierung">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1704496455415" ID="ID_259562973" MODIFIED="1704496558458" TEXT="das macht leider der ScheduleCtx und Planugs-Job ziemlich komplex...">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
|
|
@ -107956,8 +107947,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704496625440" ID="ID_1513875198" MODIFIED="1704496631952" TEXT="Dependency-Planung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1704496625440" ID="ID_1513875198" MODIFIED="1704761010340" TEXT="Dependency-Planung">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1704496633181" ID="ID_621580292" MODIFIED="1704496661738" TEXT="flexibiliisiert den Zeitpunkt an dem der Job tatsächlich abgegeben wird">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
|
|
@ -108006,8 +107997,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1704496923552" ID="ID_612925354" MODIFIED="1704505942752" TEXT="Anpassungen im ScheduleSpec (SchedulerAPI) notwendig">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1704496923552" ID="ID_612925354" MODIFIED="1704761008200" TEXT="Anpassungen im ScheduleSpec (SchedulerAPI) notwendig">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1704496939542" ID="ID_1389691721" MODIFIED="1704505937560" TEXT="Activity-Term nun »on-demand« erzeugen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
|
|
@ -108019,8 +108010,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</html></richcontent>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704506746469" ID="ID_1135578831" MODIFIED="1704506762835" TEXT="Zeitlimit explizit via API kontrollierbar machen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1704506746469" ID="ID_1135578831" MODIFIED="1704760081517" TEXT="Zeitlimit explizit via API kontrollierbar machen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1704506817515" ID="ID_170171194" MODIFIED="1704506848881" TEXT="geht das sinnvollerweise?">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
|
|
@ -108030,13 +108021,40 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<node CREATED="1704759460547" ID="ID_956724202" MODIFIED="1704759465584" TEXT="es geht..."/>
|
||||
<node CREATED="1704759466186" ID="ID_1351220656" MODIFIED="1704759530239" TEXT="ist aber nicht sonderlich sinnvoll">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...es ist nämlich redundant: wenn man keinen constraint setzen möchte, dann definiert man eben die Start-Zeit des Nachfolgers entsprechend früher.
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704497136967" ID="ID_273051296" MODIFIED="1704497151404" TEXT="Zeitlimit im NOTIFY auf korrekte Handhabung prüfen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1704759540184" ID="ID_525230501" MODIFIED="1704759580421" TEXT="es wird jetzt vorläufig nur zum Testen eingebaut — und zwar rein binär(boolean)">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1704497136967" ID="ID_273051296" MODIFIED="1704760100528" TEXT="Zeitlimit im NOTIFY auf korrekte Handhabung prüfen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1704760101285" ID="ID_1607732235" MODIFIED="1704760119654" TEXT="wenn nicht limitiert ⟹ Time::ANYTIME setzten"/>
|
||||
<node CREATED="1704760121476" ID="ID_80745632" MODIFIED="1704760151516" TEXT="wird im λ-post dann auf die Startzeit des root-Ctx limitiert"/>
|
||||
<node CREATED="1704760152158" ID="ID_1916671334" MODIFIED="1704760165337" TEXT="und die liegt zu dem Zeitpunkt effektiv in der Vergangenheit"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1704497499531" ID="ID_1985146635" MODIFIED="1704761004489" TEXT="Möglichkeit für negatives Delta im StressTestRig prüfen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1704760473965" ID="ID_1733318996" MODIFIED="1704760585626" TEXT="Delta geht unmittebar in Abbruchkriterium ein"/>
|
||||
<node COLOR="#5b280f" CREATED="1704760428369" ID="ID_680315961" MODIFIED="1704760660071" TEXT="aber Delta bei Einzelmessung absolut genommen ↯">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1704760625809" ID="ID_1719328298" MODIFIED="1704760669441" TEXT="Korrektur: Absolutbetrag entfernt ⟹ Delta nun vorzeichenbehaftet">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node CREATED="1704760436944" ID="ID_332383182" MODIFIED="1704760667502" TEXT="Orientierung von Delta überträgt sich auf alle Mittelwerte">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704497499531" ID="ID_1985146635" MODIFIED="1704497535951" TEXT="Möglichkeit für negatives Delta im StressTestRig prüfen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -110721,6 +110739,21 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1704677712357" ID="ID_730665682" MODIFIED="1704677732239" TEXT="und wir die hälfte der gescheduleten Jobs einsparen"/>
|
||||
<node CREATED="1704677733514" ID="ID_568047047" MODIFIED="1704677752491" TEXT="könnte vielleicht daran liegen, daß wir dadurch auch Kapazität in den Schlaf schicken"/>
|
||||
</node>
|
||||
<node CREATED="1704762771841" ID="ID_1429238560" MODIFIED="1704762903507">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
ohne Limitierung der NOTIFY-Zeit ist die Performance<i> minimal besser</i>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1704762822683" ID="ID_1843142292" MODIFIED="1704762832589" TEXT="aber gleichzeitig ist die Streuung stets größer"/>
|
||||
<node CREATED="1704762833207" ID="ID_992388303" MODIFIED="1704762847043" TEXT="die Trigger-Schwellen funktionieren aber dennoch genauso zuverlässig"/>
|
||||
<node CREATED="1704762847751" ID="ID_1623829309" MODIFIED="1704762876991" TEXT="wie erwartet: bei geringerem Stress-Level läuft der Test ein paar Millisekunden schneller"/>
|
||||
<node CREATED="1704762877627" ID="ID_1249026724" MODIFIED="1704762897373" TEXT="aber am »Breaking-Point« kommt praktisch der gleiche Wert raus wie vorher"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue