Scheduler-test: add node-weight statistics

...playing around with the graph for the Scheduler integration test
...single threaded run time seemed to behave irregular
...but in fact it is very close to what can be expected
   based on an ''averaged node weight''

Fortunately its very simple to add that into the existing node statistics
This commit is contained in:
Fischlurch 2023-12-12 20:51:31 +01:00
parent eef3525710
commit fcde92a476
3 changed files with 140 additions and 12 deletions

View file

@ -552,21 +552,27 @@ namespace test {
processSchedule()
{
MARK_TEST_FUN
TestChainLoad testLoad{64};
auto testLoad =
TestChainLoad{64}
.configureShape_short_segments3_interleaved()
.buildToplolgy();
// .configureShape_short_segments3_interleaved()
testLoad.expansionRule(testLoad.rule().probability(0.27).maxVal(4))
.reductionRule(testLoad.rule().probability(0.44).maxVal(6).minVal(2))
.weightRule (testLoad.rule().probability(0.66).maxVal(3))
.setSeed(55)
.buildToplolgy();
// while building calculation plan graph
// node hashes were computed, observing dependencies
size_t expectedHash = testLoad.getHash();
double referenceTime = testLoad.calcRuntimeReference();
SHOW_EXPR(referenceTime)
testLoad.performGraphSynchronously();
CHECK (testLoad.getHash() == expectedHash);
testLoad.printTopologyDOT()
.printTopologyStatistics()
;
double referenceTime = testLoad.calcRuntimeReference();
SHOW_EXPR(referenceTime)
BlockFlowAlloc bFlow;
EngineObserver watch;

View file

@ -862,8 +862,9 @@ namespace test {
const StatKey STAT_JOIN{5,"join"}; ///< joining node
const StatKey STAT_LINK{6,"link"}; ///< 1:1 linking node
const StatKey STAT_KNOT{7,"knot"}; ///< knot (joins and forks)
const StatKey STAT_WGHT{8,"wght"}; ///< node weight
const std::array KEYS = {STAT_NODE,STAT_SEED,STAT_EXIT,STAT_INNR,STAT_FORK,STAT_JOIN,STAT_LINK,STAT_KNOT};
const std::array KEYS = {STAT_NODE,STAT_SEED,STAT_EXIT,STAT_INNR,STAT_FORK,STAT_JOIN,STAT_LINK,STAT_KNOT,STAT_WGHT};
const uint CAT = KEYS.size();
const uint IDX_SEED = 1; // index of STAT_SEED
@ -881,6 +882,7 @@ namespace test {
, [](NOD& n){ return isJoin(n); }
, [](NOD& n){ return isLink(n); }
, [](NOD& n){ return isKnot(n); }
, [](NOD& n){ return n.weight; }
};
}
}

View file

@ -93372,6 +93372,79 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1702404592560" ID="ID_1463568935" MODIFIED="1702404676154" TEXT="verwende einen komplexen Abh&#xe4;ngigkeits-Graphen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1702409349688" ID="ID_1988735392" MODIFIED="1702409386175" TEXT="w&#xe4;hle das letzte Excempel aus &#xbb;stablePatterns&#xab;"/>
<node CREATED="1702409387715" ID="ID_238628585" MODIFIED="1702409412864" TEXT="also das Expand&#x27f7;Reduce-Gleichgewicht"/>
<node CREATED="1702409413423" ID="ID_173246700" MODIFIED="1702409417624" TEXT="spiele etwas mit dem Seed">
<node CREATED="1702409419934" ID="ID_1363362334" MODIFIED="1702409484821" TEXT="hoher Seed &#x27f9; sofort sehr massiv">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
wie im Beispiel im Test: seed=62 &#10233; sehr schnell ein Expand und dann mehrere massive Wellen die bis an den Anschlag gehen
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1702409486157" ID="ID_1757389118" MODIFIED="1702409515942" TEXT="niedriger Seed &#x27f9; l&#xe4;uft erst mal linear mit kurzen Expansionen"/>
<node CREATED="1702409518321" ID="ID_886437201" MODIFIED="1702409524299" TEXT="2 sieht da interessant aus"/>
<node CREATED="1702409529328" ID="ID_617599587" MODIFIED="1702409535666" TEXT="suche einen Mittelgrund"/>
<node CREATED="1702409536335" ID="ID_391318763" MODIFIED="1702409552739" TEXT="55 &#x27f9; ein l&#xe4;ngeres 2-Str&#xe4;ngiges St&#xfc;ck, dann Pause, dann Burst"/>
<node CREATED="1702409553708" ID="ID_1695406064" MODIFIED="1702409561368" TEXT="der gef&#xe4;llt mir!">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1702409571682" ID="ID_1489908040" MODIFIED="1702409577857" TEXT="Gewichts-Regel hinzuf&#xfc;gen">
<node CREATED="1702409579012" ID="ID_94587163" MODIFIED="1702409590481" TEXT="versuche 60% und Gewichte 1..3"/>
<node COLOR="#435e98" CREATED="1702409591751" ID="ID_1453590985" MODIFIED="1702410310674" TEXT="sync-Laufzeit nicht wie erwartet">
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1702409609661" ID="ID_1675157449" MODIFIED="1702410307239" TEXT="Problem-1 : der calibrate() passiert im Benchmark">
<node CREATED="1702409630298" ID="ID_1073213394" MODIFIED="1702409635845" TEXT="aber nur wennn...."/>
<node CREATED="1702409636451" ID="ID_915348913" MODIFIED="1702410224249" TEXT="...man diesen Testfall alleine laufen l&#xe4;&#xdf;t">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
...denn <i>normalerweise</i>&#160;ist ein calibrate() <i>ganz vertr&#228;umt </i>&#160; (und sicher nicht zuf&#228;llig) im ersten simpleUsage-Example versteckt
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1702409646091" ID="ID_483678836" MODIFIED="1702409654968" TEXT="Schei&#xdf; Seiteneffekte">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1702409658182" ID="ID_578883137" MODIFIED="1702410169708" TEXT="einen calibrate() in einem extra-Lauf &#x201e;verstecken&#x201c;">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
angeblich um zu demonstrieren, da&#223; der Hash gleich ist...
</p>
</body>
</html>
</richcontent>
<linktarget COLOR="#f42e6f" DESTINATION="ID_578883137" ENDARROW="Default" ENDINCLINATION="-517;28;" ID="Arrow_ID_34504322" SOURCE="ID_1297902680" STARTARROW="None" STARTINCLINATION="89;-97;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1702410247001" ID="ID_359588282" MODIFIED="1702410307240" TEXT="Problem-2 : durchschnittliches Node-Gewicht">
<node CREATED="1702410268501" ID="ID_1225756399" MODIFIED="1702410276983" TEXT="wer z&#xe4;hlen kann, ist klar im Vorteil"/>
<node COLOR="#338800" CREATED="1702410277739" ID="ID_1151926278" MODIFIED="1702410302791" TEXT="&#x27f9; Konsequenz: mu&#xdf; noch in die Statistiken"/>
</node>
<node COLOR="#338800" CREATED="1702410313860" ID="ID_65835780" MODIFIED="1702410325006" TEXT="kaum macht man&apos;s richtig, schon funktionierts">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1702410325750" ID="ID_737596272" MODIFIED="1702410335692" TEXT="wieder eine Stunde weg">
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1702404626940" ID="ID_1892483072" MODIFIED="1702404676154" TEXT="Parametrisierung f&#xfc;r zeitweilige &#xdc;berlastung des Schedulers">
<icon BUILTIN="flag-yellow"/>
@ -93450,8 +93523,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Workforce: configuration and initialisation of workers
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1702345675963" ID="ID_569519663" MODIFIED="1702346301584" TEXT="lt.Changeset: versehentliches Abrunden auf Gr&#xf6;&#xdf;e 0"/>
<node CREATED="1702346302288" ID="ID_1943758650" MODIFIED="1702346400530" TEXT="das erscheint mir nun etwas &#xfc;bervorsichtig">
@ -93464,8 +93536,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
es pa&#223;t nicht zum Stil im gesamten Kontext; wir sind hier in Implementierungs-Code, der grunds&#228;tzlich davon ausgeht, nur sinnvoll aufgerufen zu werden &#8212; es geht nicht darum, einen User &#8222;an die Hand zu nehmen&#8220;
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
<node CREATED="1702345822891" ID="ID_1283033928" MODIFIED="1702345841078" TEXT="Achtung: overprovisioning ist hier explizit erw&#xfc;nscht">
@ -93488,6 +93559,55 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1702409721278" ID="ID_1297902680" MODIFIED="1702410169708">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
ist das angemessen,
</p>
<p>
was ich hier mache?
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#f42e6f" DESTINATION="ID_578883137" ENDARROW="Default" ENDINCLINATION="-517;28;" ID="Arrow_ID_34504322" STARTARROW="None" STARTINCLINATION="89;-97;"/>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1702409903237" HGAP="31" ID="ID_575844529" MODIFIED="1702410082535" STYLE="bubble" TEXT="um was es geht...." VSHIFT="15">
<edge COLOR="#dd5464"/>
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1702409933988" ID="ID_31420496" MODIFIED="1702410129406">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
so manches an diesen Tests hier funktioniert nur<i>&#160;scheinbar &#8222;einfach&#8220;</i>
</p>
</body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1702409965549" ID="ID_847108855" MODIFIED="1702410094217" TEXT="...weil ich &#x201e;rein zuf&#xe4;llig&#x201c; hinter den Kulissen ein paar Arrangements gemacht habe"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1702409999072" ID="ID_1400473130" MODIFIED="1702410094217" TEXT="....die nur ein absoluter Kenner des ganzen Codes jemals wieder finden kann"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1702410016606" ID="ID_350609651" MODIFIED="1702410094216" TEXT="......also nicht mal ich-in-6-Monaten"/>
</node>
<node CREATED="1702409748784" ID="ID_1153673154" MODIFIED="1702409759924" TEXT="pro">
<node CREATED="1702409761008" ID="ID_536308869" MODIFIED="1702409765993" TEXT="level-of-abstraction"/>
<node CREATED="1702409766764" ID="ID_1736480846" MODIFIED="1702409785985" TEXT="Details verbergen, die nicht zum Thema geh&#xf6;ren"/>
</node>
<node CREATED="1702409788080" ID="ID_791788056" MODIFIED="1702409790177" TEXT="contra">
<node CREATED="1702409792284" ID="ID_1301015026" MODIFIED="1702409811973" TEXT="k&#xf6;nnte als ein versteckter/verborgener Bug gewertet werden"/>
<node CREATED="1702409825264" ID="ID_981214609" MODIFIED="1702409849856" TEXT="Code ist fragil und nur von einem &#xbb;Kenner&#xab; &#xe4;nderbar"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1702410034070" ID="ID_673576668" MODIFIED="1702410042836" TEXT="kann diese Frage nicht entscheiden">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697755558855" ID="ID_278365674" MODIFIED="1697741858009" TEXT="SchedulerStress_test">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688337200875" ID="ID_1251284763" MODIFIED="1697735887738" TEXT="Nonfunktionale Anforderungen">
@ -96982,8 +97102,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#338800" CREATED="1701838479658" ID="ID_120274201" MODIFIED="1702330737006" TEXT="usageExample">
<linktarget COLOR="#7718bb" DESTINATION="ID_120274201" ENDARROW="Default" ENDINCLINATION="-730;116;" ID="Arrow_ID_573558112" SOURCE="ID_111682569" STARTARROW="None" STARTINCLINATION="-428;0;"/>
<linktarget COLOR="#3ebe62" DESTINATION="ID_120274201" ENDARROW="Default" ENDINCLINATION="-819;-216;" ID="Arrow_ID_112900177" SOURCE="ID_1456276838" STARTARROW="None" STARTINCLINATION="495;25;"/>
<linktarget COLOR="#7718bb" DESTINATION="ID_120274201" ENDARROW="Default" ENDINCLINATION="-730;116;" ID="Arrow_ID_573558112" SOURCE="ID_111682569" STARTARROW="None" STARTINCLINATION="-428;0;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1701838487567" ID="ID_535031858" MODIFIED="1702330670355" TEXT="das ist zugleich ein einfacher Integrations-Test">
<icon BUILTIN="yes"/>