Scheduler-test: investigate behaviour of a load for stress testing

The goal is to devise a load more akin to the expected real-world processing patterns,
and then to increase the density to establish a breaking point.

Preliminary investigations focus on establishing the properties of this load
and to ensure the actual computation load behaves as expected.

Using the third Graph pattern prepared thus far, which produces
short chains of length=2, yet immediately spread out to maximum concurrency.
This leads to 5.8 Nodes / Level on average.
This commit is contained in:
Fischlurch 2024-01-23 18:29:09 +01:00
parent 6a08c97543
commit 0aa1edf07c
3 changed files with 22 additions and 20 deletions

View file

@ -334,24 +334,24 @@ namespace test {
.pruningRule(testLoad.rule().probability(0.44))
.setSeed(55)
.buildTopology()
.printTopologyDOT()
.printTopologyStatistics()
// .printTopologyDOT()
// .printTopologyStatistics()
;
// ////////////////////////////////////////////////////////WIP : Run test directly for investigation of SEGFAULT....
// BlockFlowAlloc bFlow;
// EngineObserver watch;
// Scheduler scheduler{bFlow, watch};
// auto LOAD_BASE = 500us;
auto LOAD_BASE = 500us;
// auto stressFac = 1.0;
// auto concurrency = 8;
//
// ComputationalLoad cpuLoad;
// cpuLoad.timeBase = LOAD_BASE;
// cpuLoad.calibrate();
ComputationalLoad cpuLoad;
cpuLoad.timeBase = LOAD_BASE;
cpuLoad.calibrate();
//
// double loadMicros = cpuLoad.invoke();
double loadMicros = cpuLoad.invoke();
// double refTime = testLoad.calcRuntimeReference(LOAD_BASE);
//SHOW_EXPR(loadMicros)
SHOW_EXPR(loadMicros)
//
// auto testSetup =
// testLoad.setupSchedule(scheduler)
@ -368,6 +368,8 @@ namespace test {
struct Setup : StressRig
{
usec LOAD_BASE = 500us;
usec BASE_EXPENSE = 200us;
double UPPER_STRESS = 8;
// uint CONCURRENCY = 4;
// bool SCHED_DEPENDS = true;
bool showRuns = true;

View file

@ -2057,7 +2057,7 @@ namespace test {
return chainLoad_.allExitNodes()
.transform([&](Node& n){ return chainLoad_.nodeID(n); })
.filter([=](size_t idx){ return idx >= lastChunkStartIDX; });
} // index of all Exit-Nodes within last planning-chunk...
} // index of all Exit-Nodes within last planning-chunk...
Time
calcPlanScheduleTime (size_t lastNodeIDX)

View file

@ -110784,13 +110784,12 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
die ganzen Test zur Integration und zum Aufbau der Testanordnung haben die &#187;chained load bursts&#171; verwendet, ein hochgradig unregelm&#228;&#223;iges und abschnittsweise stark verkn&#252;pftes Pattern. Damit konnte ich in etwa die erwartete Parallelisierung beobachten, aber die Computational Load ist typischerweise doppelt so lang gelaufen wie kalibriert, w&#228;hrend gleichzeitig permanent Koordinations-Aufwand zu leisten war. Deshalb w&#228;hle ich nun einen anderen Blickwinkel: Wie gut k&#246;nnen wir die theoretisch vorhandene &#187;Rechenkapazit&#228;t&#171; zum Einsatz bringen? Daf&#252;r braucht es ein m&#246;glichst einfaches Pattern, das aber hinreichend breit sein mu&#223;, um alle Kerne auszulasten. Ziel ist es, einen gleichm&#228;&#223;igen &#187;Flow&#171; von l&#228;nger laufenden Rechen-Jobs zu generieren
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1704766425859" ID="ID_819162648" MODIFIED="1704766437260" TEXT="geeignetes Last-Pattern aufbauen">
<node COLOR="#435e98" CREATED="1704766438235" FOLDED="true" ID="ID_49179977" MODIFIED="1704915284991" TEXT="Idee: &#xfc;bers&#xe4;ttigte Seeds + Breiten-Limitierung">
<icon BUILTIN="idea"/>
<node CREATED="1704849761430" ID="ID_973472982" MODIFIED="1704849788023" TEXT="massiv-vernetzt">
<node CREATED="1704849761430" ID="ID_973472982" MODIFIED="1705011573250" TEXT="Graph-1: massiv-vernetzt">
<node CREATED="1704849789603" ID="ID_1248796850" MODIFIED="1704850126462" STYLE="bubble">
<richcontent TYPE="NODE"><html>
<head/>
@ -110814,14 +110813,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<font size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;; </font>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1704849847892" ID="ID_477248717" MODIFIED="1704849856158" TEXT="3 Zusammenhangskomponenten"/>
<node CREATED="1704849857735" ID="ID_1587579504" MODIFIED="1704849867765" TEXT="jeweils eine Join-Kette bis zum Exit"/>
<node CREATED="1704849868616" ID="ID_1515141001" MODIFIED="1704849883546" TEXT="&#x2205;pL = 5.8"/>
</node>
<node CREATED="1704849928488" ID="ID_1928191255" MODIFIED="1704850743844" TEXT="4-parallel-interleaved">
<node CREATED="1704849928488" ID="ID_1928191255" MODIFIED="1705011540615" TEXT="Graph-2: 4-parallel-interleaved">
<node CREATED="1704850003870" ID="ID_703412136" MODIFIED="1704850140684" STYLE="bubble">
<richcontent TYPE="NODE"><html>
<head/>
@ -110845,14 +110843,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<font size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;; </font>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1704850040097" ID="ID_980343562" MODIFIED="1704850051875" TEXT="unverkn&#xfc;pfte Ketten der L&#xe4;nge 4"/>
<node CREATED="1704850052463" ID="ID_75067439" MODIFIED="1704850064145" TEXT="auf jedem Level ein Seed und ein Exit"/>
<node CREATED="1704850066089" ID="ID_422217163" MODIFIED="1704850092368" TEXT="&#x27f9; &#x2205;pL = 4"/>
</node>
<node CREATED="1704850522511" ID="ID_1699065000" MODIFIED="1704850544528" TEXT="massiv-parallel">
<node CREATED="1704850522511" ID="ID_1699065000" MODIFIED="1705011547410" TEXT="Graph-3: massiv-parallel">
<node CREATED="1704850545733" ID="ID_1888388122" MODIFIED="1704850628464" STYLE="bubble">
<richcontent TYPE="NODE"><html>
<head/>
@ -110876,8 +110873,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<font size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;; </font>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1704850637464" ID="ID_1080884397" MODIFIED="1704850648934" TEXT="kurze Ketten der L&#xe4;nge 2"/>
<node CREATED="1704850649695" ID="ID_204505064" MODIFIED="1704850663456" TEXT="sofort bis zum Anschlag parallel"/>
@ -110897,6 +110893,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1704915326966" ID="ID_117301056" MODIFIED="1704915346470" TEXT="8 Kerne gleichm&#xe4;&#xdf;ige Last 500&#xb5;s">
<icon BUILTIN="pencil"/>
<node CREATED="1705011582353" ID="ID_166772872" MODIFIED="1705011589953" TEXT="verwende erst mal Graph-3"/>
<node COLOR="#435e98" CREATED="1704940787856" FOLDED="true" ID="ID_548135052" MODIFIED="1705010869404" TEXT="SEGFAULT">
<icon BUILTIN="broken-line"/>
<node CREATED="1704990398092" ID="ID_80295046" MODIFIED="1704990404404" TEXT="Beobachtungen">
@ -110998,6 +110995,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<linktarget COLOR="#3a84b6" DESTINATION="ID_1350365350" ENDARROW="Default" ENDINCLINATION="-192;14;" ID="Arrow_ID_980960219" SOURCE="ID_909211409" STARTARROW="None" STARTINCLINATION="118;-27;"/>
</node>
</node>
<node CREATED="1705011154754" ID="ID_791359995" MODIFIED="1705011274983" TEXT="ohne Last : &#x2205;&#x394;= 1.5&#xb1;0.84ms">
<node CREATED="1705011415631" ID="ID_1195549031" MODIFIED="1705179740014" TEXT="das w&#xe4;ren &#x2205; &#x2248; 200&#xb5;s /Node/Core"/>
</node>
</node>
</node>
</node>