Scheduler: start-up working -- no need for pre-delay

Introducing a fixed pre-delay on each new Calc-Streem seemed like an obvious remedy,
yet on closer investigation it turned out that the start-up logic as such was contradictory,
which was only uncovered by some rather special schedule patterns.

After fixing the logic deficiencies, Scheduler starts up as intended
and the probabilistic capacity-control seems to work as designed.

Thus no need to introduce an artificial delay at begin, even while
this implies that typically the first round of job-planning will be
performed synchronous, in the invoking thread (which may be surprising,
but is completely within the limits of the architecture; we do not
employ specifically configured threads and planning should be done
in short chunks, thus the first chunk can well be done by the caller)
This commit is contained in:
Fischlurch 2023-12-07 21:02:39 +01:00
parent fa86228057
commit 5abab5390d
2 changed files with 185 additions and 82 deletions

View file

@ -142,7 +142,6 @@ namespace gear {
const auto IDLE_WAIT = 20ms; ///< sleep-recheck cycle for workers deemed _idle_
const size_t DISMISS_CYCLES = 100; ///< number of wait cycles before an idle worker terminates completely
Offset POLL_WAIT_DELAY{FSecs(1,1000)}; ///< delay until re-evaluating a condition previously found unsatisfied
Offset SEED_CALC_OFFSET{_uTicks(250us)}; ///< tiny delay to ensure the first job is actually enqueued to force ignite()
Offset DUTY_CYCLE_PERIOD{FSecs(1,20)}; ///< period of the regular scheduler »tick« for state maintenance.
Offset DUTY_CYCLE_TOLERANCE{FSecs(1,10)}; ///< maximum slip tolerated on duty-cycle start before triggering Scheduler-emergency
}
@ -332,7 +331,7 @@ namespace gear {
{
layer1_.activate (manID);
activityLang_.announceLoad (expectedAdditionalLoad);
continueMetaJob (RealClock::now()+SEED_CALC_OFFSET, planningJob, manID);
continueMetaJob (RealClock::now(), planningJob, manID);
}

View file

@ -82752,10 +82752,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1699568192950" ID="ID_46078853" MODIFIED="1699588823469" TEXT="weitere Parameter sind nur optional">
<icon BUILTIN="button_ok"/>
<node CREATED="1699568225289" ID="ID_1953407534" MODIFIED="1699568238756" TEXT="brauche daher zwei Varianten"/>
<node CREATED="1699568239935" ID="ID_1918919265" MODIFIED="1699568264056" TEXT="Start-Offset ist per default &#xbb;now&#xab;">
<node COLOR="#5b280f" CREATED="1701908537702" ID="ID_1540450354" MODIFIED="1701908654188" TEXT="das ist keine gute Idee">
<linktarget COLOR="#fe3a92" DESTINATION="ID_1540450354" ENDARROW="Default" ENDINCLINATION="-276;439;" ID="Arrow_ID_1046045680" SOURCE="ID_1609424678" STARTARROW="None" STARTINCLINATION="329;-15;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1699568239935" FOLDED="true" ID="ID_1918919265" MODIFIED="1701978625938" TEXT="Start-Offset ist per default &#xbb;now&#xab;">
<node COLOR="#5b280f" CREATED="1701908537702" ID="ID_1540450354" MODIFIED="1701974080015" TEXT="ist das eine gute Idee?">
<linktarget COLOR="#781f47" DESTINATION="ID_1540450354" ENDARROW="Default" ENDINCLINATION="-276;439;" ID="Arrow_ID_1046045680" SOURCE="ID_1609424678" STARTARROW="None" STARTINCLINATION="329;-15;"/>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#d50478" CREATED="1701908700571" ID="ID_135320855" MODIFIED="1701908736435" TEXT="dachte das ist clever">
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="smiley-oh"/>
@ -82797,9 +82797,24 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701923216062" ID="ID_245599280" MODIFIED="1701923238477" TEXT="zus&#xe4;tzlichen SEED_CALC_OFFSET eingef&#xfc;hrt">
<node COLOR="#338800" CREATED="1701923216062" ID="ID_245599280" MODIFIED="1701974246875" TEXT="zus&#xe4;tzlichen SEED_CALC_OFFSET eingef&#xfc;hrt">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1701974043756" ID="ID_740158966" MODIFIED="1701974062114" TEXT="auch keine gute Idee">
<icon BUILTIN="stop-sign"/>
<node CREATED="1701974096947" ID="ID_983136924" MODIFIED="1701974105035" TEXT="(a) es hilft nix">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701974201939" HGAP="38" ID="ID_308009018" MODIFIED="1701974236348" TEXT="die WorkForce baucht oft &gt; 1ms zum Hochfahren" VSHIFT="1">
<font NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1701974105840" ID="ID_297171725" MODIFIED="1701974124753" TEXT="(b) f&#xfc;hrt zus&#xe4;tzliche willk&#xfc;rliche Konstante ein"/>
<node CREATED="1701974125814" ID="ID_465915499" MODIFIED="1701974177852" TEXT="(c) repariert eine anderweitig kapputte Logik mit noch mehr Logik"/>
</node>
<node COLOR="#435e98" CREATED="1701974272618" ID="ID_463651470" MODIFIED="1701974305315" TEXT="kann so bleiben &#x2014; besser die kaputte Load-Regulierung reparieren">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1699568273591" ID="ID_138761713" MODIFIED="1699568281494" TEXT="aber die ManifestationID wird man meist angeben">
@ -85023,9 +85038,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="yes"/>
<node CREATED="1701918965842" ID="ID_1066608394" MODIFIED="1701919053878" TEXT="ich m&#xf6;chte unbedingt die automatische selbst-Z&#xfc;ndung">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
warum....? wei&#223; nicht, Bauchgef&#252;hl.
@ -85034,8 +85047,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Ich m&#246;chte nicht mit Einzelfall-Analysen belegen, wann der Scheduler gestartet werden soll. Der Ruhe-Zustand, wie auch der Neuanlauf sollten von au&#223;en praktisch nicht erkennbar sein (bis auf die Verz&#246;gerung)
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1701919064813" ID="ID_1765985481" MODIFIED="1701919080522" TEXT="das bedeutet aber Gefahr von Logik-Zyklen">
<icon BUILTIN="messagebox_warning"/>
@ -85069,7 +85081,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698372200013" FOLDED="true" ID="ID_1863445864" MODIFIED="1701905709724" TEXT="Scheduler start/stop">
<node COLOR="#338800" CREATED="1698372200013" FOLDED="true" ID="ID_1863445864" MODIFIED="1701925009616" TEXT="Scheduler start/stop">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698372207398" ID="ID_1110932778" MODIFIED="1698808364649" TEXT="braucht Integration mit LoadController">
<arrowlink COLOR="#5898af" DESTINATION="ID_210862409" ENDARROW="Default" ENDINCLINATION="-33;645;" ID="Arrow_ID_204955453" STARTARROW="None" STARTINCLINATION="250;17;"/>
@ -85088,7 +85100,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698522456723" FOLDED="true" ID="ID_1793836905" MODIFIED="1698808409669" TEXT="Zustands&#xfc;berg&#xe4;nge realisieren">
<node COLOR="#338800" CREATED="1698522456723" FOLDED="true" ID="ID_1793836905" MODIFIED="1701925009621" TEXT="Zustands&#xfc;berg&#xe4;nge realisieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698522466298" ID="ID_1846809868" MODIFIED="1698604976684" TEXT="ignite() &#x27f6; Tick etablieren">
<icon BUILTIN="button_ok"/>
@ -85118,12 +85130,12 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1698523751770" ID="ID_903457471" MODIFIED="1698523767446" TEXT="(WorkForce wird sich selbst nach 2sec herunterregeln)"/>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1701906701612" ID="ID_1389784071" MODIFIED="1701906776935" TEXT="funktioniert noch nicht zuverl&#xe4;ssig">
<node COLOR="#435e98" CREATED="1701906701612" FOLDED="true" ID="ID_1389784071" MODIFIED="1701978650644" TEXT="funktioniert noch nicht zuverl&#xe4;ssig">
<arrowlink COLOR="#a77e85" DESTINATION="ID_898143170" ENDARROW="Default" ENDINCLINATION="-831;-59;" ID="Arrow_ID_1502844092" STARTARROW="None" STARTINCLINATION="-1185;94;"/>
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e4c870" COLOR="#fa002a" CREATED="1701907642039" ID="ID_1619713976" MODIFIED="1701918862486" TEXT="&#x21af; Logik-Fehler: empty() &#x27f9; empty()">
<linktarget COLOR="#fd2b3a" DESTINATION="ID_1619713976" ENDARROW="Default" ENDINCLINATION="788;62;" ID="Arrow_ID_1213072769" SOURCE="ID_115665967" STARTARROW="None" STARTINCLINATION="-354;-19;"/>
<linktarget COLOR="#fe0d16" DESTINATION="ID_1619713976" ENDARROW="Default" ENDINCLINATION="29;-190;" ID="Arrow_ID_1571604163" SOURCE="ID_503202065" STARTARROW="Default" STARTINCLINATION="5;178;"/>
<linktarget COLOR="#fd2b3a" DESTINATION="ID_1619713976" ENDARROW="Default" ENDINCLINATION="788;62;" ID="Arrow_ID_1213072769" SOURCE="ID_115665967" STARTARROW="None" STARTINCLINATION="-354;-19;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1701913172757" ID="ID_194380430" MODIFIED="1701915406636" TEXT="das m&#xfc;ssen wir explizit durchbrechen">
<linktarget COLOR="#87495a" DESTINATION="ID_194380430" ENDARROW="Default" ENDINCLINATION="210;-326;" ID="Arrow_ID_511727500" SOURCE="ID_519973068" STARTARROW="None" STARTINCLINATION="-22;145;"/>
@ -85139,19 +85151,19 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1701908562203" ID="ID_1609424678" MODIFIED="1701923255116" TEXT="der erste Meta-Job l&#xe4;uft direkt im aktuellen Thread durch">
<arrowlink COLOR="#fe3a92" DESTINATION="ID_1540450354" ENDARROW="Default" ENDINCLINATION="-276;439;" ID="Arrow_ID_1046045680" STARTARROW="None" STARTINCLINATION="329;-15;"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701908562203" ID="ID_1609424678" MODIFIED="1701978559036" TEXT="Deadlock: Scheduler WorkForce startet &#xfc;berhaupt nicht">
<arrowlink COLOR="#781f47" DESTINATION="ID_1540450354" ENDARROW="Default" ENDINCLINATION="-276;439;" ID="Arrow_ID_1046045680" STARTARROW="None" STARTINCLINATION="329;-15;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#5b280f" CREATED="1701908562203" HGAP="25" ID="ID_543887713" MODIFIED="1701973990808" TEXT="der erste Meta-Job l&#xe4;uft direkt im aktuellen Thread durch" VSHIFT="12">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1701909401349" ID="ID_335260748" MODIFIED="1701909415663" TEXT="und das f&#xfc;hrt zu unn&#xf6;tigen Umwegen"/>
<node CREATED="1701909416532" ID="ID_832756142" MODIFIED="1701909424536" TEXT="und ggfs sogar zum Deadlock">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701909416532" ID="ID_832756142" MODIFIED="1701974003365" TEXT="Load-Regulierung f&#xe4;llt leer durch">
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1701923256179" ID="ID_1254835545" MODIFIED="1701923346545" TEXT="Ma&#xdf;nahmen">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1701923327018" ID="ID_1199123453" MODIFIED="1701923395602" TEXT="ersten Job mit SEED_CALC_OFFSET(250&#xb5;s) starten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701923262858" ID="ID_12809390" MODIFIED="1701923339094" TEXT="vorl&#xe4;ufige/einfache Load-Regulierung eingef&#xfc;hrt">
<icon BUILTIN="button_ok"/>
</node>
@ -85163,6 +85175,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701978652233" ID="ID_1168441343" MODIFIED="1701978661408" TEXT="(jetzt schon)"/>
</node>
<node COLOR="#338800" CREATED="1698522492081" ID="ID_1777263362" MODIFIED="1698604971384" TEXT="terminateProcessing &#xd83e;&#xdc32; Gewalt!">
<icon BUILTIN="button_ok"/>
@ -95850,8 +95863,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693238508625" ID="ID_1960804622" MODIFIED="1701918688685" TEXT="Ermitteln der Engine-Kapazit&#xe4;t und Last">
<linktarget COLOR="#965d71" DESTINATION="ID_1960804622" ENDARROW="Default" ENDINCLINATION="286;89;" ID="Arrow_ID_494620026" SOURCE="ID_1196672113" STARTARROW="None" STARTINCLINATION="2087;110;"/>
<linktarget COLOR="#5c3f90" DESTINATION="ID_1960804622" ENDARROW="Default" ENDINCLINATION="-741;-969;" ID="Arrow_ID_1272080167" SOURCE="ID_1603848355" STARTARROW="None" STARTINCLINATION="-301;37;"/>
<linktarget COLOR="#965d71" DESTINATION="ID_1960804622" ENDARROW="Default" ENDINCLINATION="286;89;" ID="Arrow_ID_494620026" SOURCE="ID_1196672113" STARTARROW="None" STARTINCLINATION="2087;110;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693238523855" ID="ID_1212740184" MODIFIED="1693238599374" TEXT="#1325 Chained Deadlines based on capacity">
<linktarget COLOR="#e7367a" DESTINATION="ID_1212740184" ENDARROW="Default" ENDINCLINATION="12;-24;" ID="Arrow_ID_1622880291" SOURCE="ID_917322834" STARTARROW="None" STARTINCLINATION="104;5;"/>
@ -95914,7 +95927,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1701906481921" ID="ID_898143170" MODIFIED="1701906776935" TEXT="ignite() / Hochfahren unzuverl&#xe4;ssig">
<node COLOR="#435e98" CREATED="1701906481921" ID="ID_898143170" MODIFIED="1701978733301" TEXT="ignite() / Hochfahren unzuverl&#xe4;ssig">
<linktarget COLOR="#a77e85" DESTINATION="ID_898143170" ENDARROW="Default" ENDINCLINATION="-831;-59;" ID="Arrow_ID_1502844092" SOURCE="ID_1389784071" STARTARROW="None" STARTINCLINATION="-1185;94;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1701906517189" ID="ID_977051135" MODIFIED="1701906665743" TEXT="Fall: zu Beginn nur wenige sofort f&#xe4;llige Jobs">
@ -95924,6 +95937,16 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1701907775997" ID="ID_1831372437" MODIFIED="1701907798583" TEXT="zirkul&#xe4;re Logik: ignite() setzt not empty() vorraus">
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#435e98" CREATED="1701978687204" ID="ID_162925329" MODIFIED="1701978729452" TEXT="Problem durch Nachsch&#xe4;rfen der Logik gel&#xf6;st">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...war nichts Grunds&#228;tzliches ... die Logik wollte nur zu viel mit zu geringen Mitteln; etwas auseinandergezogen und expliziter programmiert
</p>
</body>
</html></richcontent>
</node>
</node>
</node>
</node>
@ -100883,9 +100906,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_cancel"/>
<node COLOR="#9c3b76" CREATED="1701784703807" HGAP="45" ID="ID_227978995" MODIFIED="1701784860107" TEXT="b&#xe4;&#xe4;&#xe4;h ... reingefallen" VSHIFT="4">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Gut da&#223; wir dar&#252;ber geredet haben.
@ -100894,8 +100915,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Da <i>offensichtlich</i>&#160;die L&#228;nge des Test-Graphen keine <i>Eigenschaft</i>&#160; der Teststruktur ist, landen wir bei einer rein dynamischen Allokation. Trotzdem war es eine gute Idee, das mit der <i>uninitialised storage</i>&#160; endlich mal zu codifizierren...
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
@ -101272,16 +101292,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701838377111" HGAP="27" ID="ID_536020711" MODIFIED="1701838396668" TEXT="JobFunctor ist NonCopyable" VSHIFT="3">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...und das ist gut so
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1701814837569" ID="ID_1253997420" MODIFIED="1701838398366" TEXT="RandomChainPlanFunctor">
@ -101357,7 +101374,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1701843700258" ID="ID_1562297081" MODIFIED="1701843730631" TEXT="aber dennoch sollte dann der Lauf irgendwann starten (dann halt 64ms sp&#xe4;ter)">
<node COLOR="#435e98" CREATED="1701843700258" ID="ID_1562297081" MODIFIED="1701976295979" TEXT="aber dennoch sollte dann der Lauf irgendwann starten (dann halt 64ms sp&#xe4;ter)">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701906561917" ID="ID_759675868" MODIFIED="1701906661639" TEXT="Situation: nur wenige Jobs zu Beginn &#x2014; und die wedern sofort dispatched">
<linktarget COLOR="#5c468c" DESTINATION="ID_759675868" ENDARROW="Default" ENDINCLINATION="-72;-107;" ID="Arrow_ID_845853929" SOURCE="ID_977051135" STARTARROW="None" STARTINCLINATION="424;27;"/>
@ -101377,6 +101394,15 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701976237396" ID="ID_939879877" MODIFIED="1701976256995" TEXT="Hochfahren/Kapazit&#xe4;tssteuerung &#xfc;berarbeiten">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1701976258058" ID="ID_1031727982" MODIFIED="1701976277939" TEXT="...und dann verh&#xe4;lt sich&apos;s korrekt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1701976297860" ID="ID_1501714240" MODIFIED="1701976317566" TEXT="mit der &#xfc;berarbeiteten Hochfahr-Logik l&#xe4;uft das jetzt wie geschmiert...">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701900872050" ID="ID_693907147" MODIFIED="1701900908502" TEXT="Exception &quot;Promise already satisfied&quot;">
@ -101390,16 +101416,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1701901044876" ID="ID_620180367" MODIFIED="1701901051445" TEXT="zu dem Zeitpunkt sind wir bereits fertig"/>
<node CREATED="1701901159778" ID="ID_296648181" MODIFIED="1701901320988">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Nebeneinsicht: darf nur ein <i>wirklich leeres</i>&#160;Signal kaputt schie&#223;en
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<arrowlink COLOR="#da1d39" DESTINATION="ID_1301399592" ENDARROW="Default" ENDINCLINATION="774;34;" ID="Arrow_ID_1712682891" STARTARROW="None" STARTINCLINATION="422;19;"/>
</node>
</node>
@ -101410,16 +101433,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1701879543468" ID="ID_1818772058" MODIFIED="1701879550999" TEXT="Beobachtung Scheduler-Gesamtverhalten">
<node COLOR="#338800" CREATED="1701879552131" ID="ID_1345942591" MODIFIED="1701879620762" TEXT="gemeinsame Time-Basis im DUMP-Log herstellen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Hilfsfunktion, die beim ersten Aufruf den Bezugspunkt setzt. Daf&#252;r sorgen, da&#223; dieser erste Aufruf den Anker-Punkt anfragt. Hilfsfunktion gibt dann &#181;s nach Anker aus
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1701879626927" ID="ID_1631524816" MODIFIED="1701879689822" TEXT="Beobachtungen (nach 1.Bugfix)">
@ -101429,16 +101449,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1701879754394" ID="ID_48690000" MODIFIED="1701879766466" TEXT="Einzelbeobachtung deutet auch auf ~100&#xb5;s hin"/>
<node CREATED="1701879774593" ID="ID_1372474269" MODIFIED="1701881055424">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
&#10233; der pre-Roll ist <b>wesentlich</b>&#160;zu kurz
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<arrowlink COLOR="#df2e4b" DESTINATION="ID_1285649422" ENDARROW="Default" ENDINCLINATION="67;0;" ID="Arrow_ID_1426953607" STARTARROW="None" STARTINCLINATION="-2;38;"/>
</node>
</node>
@ -101454,16 +101471,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1701881117570" ID="ID_1560387406" MODIFIED="1701881164304" TEXT="alle Nodes, die im betroffenen Teilgraphen liegen, fehlen im Log">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Graph als DOT anschauen, ist ja reproduzierbar und enth&#228;lt die Node-IDs
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
@ -101485,9 +101499,56 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1701912890618" ID="ID_1069989280" MODIFIED="1701912903449" TEXT="weitere Beobachtungen">
<icon BUILTIN="list"/>
<node CREATED="1701912907770" ID="ID_1836573121" MODIFIED="1701912959333" TEXT="startup / ignite() immer noch nicht sauber">
<node COLOR="#435e98" CREATED="1701912907770" ID="ID_1836573121" MODIFIED="1701976328856" TEXT="startup / ignite() immer noch nicht sauber">
<arrowlink COLOR="#7a6eac" DESTINATION="ID_1847639785" ENDARROW="Default" ENDINCLINATION="-416;32;" ID="Arrow_ID_703514790" STARTARROW="None" STARTINCLINATION="472;-21;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1701976331272" ID="ID_820013502" LINK="#ID_1254835545" MODIFIED="1701976374698" TEXT="mu&#xdf;te wirklich die Steuer-Logik reparieren....">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1701976387256" ID="ID_1657524395" MODIFIED="1701976708995" TEXT="jetzt funktioniert es wunschgem&#xe4;&#xdf;">
<arrowlink COLOR="#6478c8" DESTINATION="ID_802885873" ENDARROW="Default" ENDINCLINATION="36;-60;" ID="Arrow_ID_676956631" STARTARROW="None" STARTINCLINATION="-30;44;"/>
<icon BUILTIN="list"/>
<node CREATED="1701976413221" ID="ID_119859495" MODIFIED="1701976419769" TEXT="ignite() passiert einmal"/>
<node CREATED="1701976420373" ID="ID_509957588" MODIFIED="1701976427998" TEXT="hochfahren der WorkForce braucht ca 1ms"/>
<node CREATED="1701976428793" ID="ID_1749225771" MODIFIED="1701976460125" TEXT="erste Worker tauchen ca ~ 1.8ms auf"/>
<node CREATED="1701976467478" ID="ID_199553642" MODIFIED="1701976488532" TEXT="Kapazit&#xe4;ts-Steuerung gem&#xe4;&#xdf; zu dem Zeitpunkt vorliegendem Plan">
<node CREATED="1701976492064" ID="ID_1836937935" MODIFIED="1701976508468" TEXT="im WORK_HORIZON &#x27f9; targeted wait"/>
<node CREATED="1701976509152" ID="ID_186240584" MODIFIED="1701976523802" TEXT="nur der Tick &gt; SLEEP_HORIZON &#x27f9; alle Worker gehen schlafen">
<node CREATED="1701976526311" ID="ID_1686182961" MODIFIED="1701976543389">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
das ist <i>incoming capacity</i>
</p>
</body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1701976544643" ID="ID_1385374554" MODIFIED="1701976561117" TEXT="alles &gt; WORK_HORIZON &#x27fc; Schlaf"/>
<node CREATED="1701976561873" ID="ID_469990433" MODIFIED="1701976596824" TEXT="&#x27f9; dann kommen &apos;se halt bist zu 15ms zu sp&#xe4;t"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1701976604683" ID="ID_18962140" MODIFIED="1701978187468" TEXT="gilt dann als &#xbb;ung&#xfc;nstige Umst&#xe4;nde&#xab;">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
dieser Fall ist in der Tat etwas &#8222;ausgefallen&#8220;: wenn die ersten planm&#228;&#223;igen Tasks jenseits des WORK_HORIZON liegen, mu&#223; man damit rechnen, da&#223; die ganze Kapazit&#228;t geb&#252;ndelt einmal kurz hinter dem SLEEP_HORIZON auftaucht und &#8222;nachschaut&#8220;...&#160;
</p>
<p>
...und solange keine Jobs im Nahfeld auftreten, kommt es auch erst mal nicht zu einer Umverteilung der Kapazit&#228;t. Das ist eine Konsequenz der Entscheidung, das l&#228;ngerfristige Schlafen zu priorisieren. Letztlich ist auch der SLEEP_HORIZON so zu w&#228;hlen, da&#223; er noch nicht gef&#228;hrlich lang ist im Verh&#228;ltnis zum zu erwartenden Takt (den ich auf ca 25fps sch&#228;tze)
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#6b768b" DESTINATION="ID_1672299096" ENDARROW="Default" ENDINCLINATION="1783;-96;" ID="Arrow_ID_397737048" STARTARROW="None" STARTINCLINATION="-625;41;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1701976654013" ID="ID_802885873" LINK="#ID_1311823420" MODIFIED="1701978114323" TEXT="soweit ich nun sehen kann: Scheduling + Kapazit&#xe4;ts-Steuerung funkioniert sauber">
<linktarget COLOR="#6478c8" DESTINATION="ID_802885873" ENDARROW="Default" ENDINCLINATION="36;-60;" ID="Arrow_ID_676956631" SOURCE="ID_1657524395" STARTARROW="None" STARTINCLINATION="-30;44;"/>
<icon BUILTIN="ksmiletris"/>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1701912974750" ID="ID_1155210741" MODIFIED="1701912984629" TEXT="Lauf endet zu fr&#xfc;h">
<icon BUILTIN="broken-line"/>
@ -101586,6 +101647,64 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1701977110903" HGAP="-128" ID="ID_1162072185" MODIFIED="1701977754047" TEXT="Beobachtungen" VSHIFT="21">
<edge COLOR="#588276" STYLE="linear"/>
<cloud COLOR="#a9e7e6"/>
<font NAME="SansSerif" SIZE="16"/>
<icon BUILTIN="forward"/>
<node COLOR="#16515f" CREATED="1701977248319" HGAP="22" ID="ID_719390947" MODIFIED="1701977983824" TEXT="Verhalten(allgemein)" VSHIFT="-12">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1701977412271" ID="ID_1960483955" MODIFIED="1701977429491" TEXT="erhebliche Start-up-Zeit">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1701977684434" ID="ID_1311823420" MODIFIED="1701977909680" TEXT="probabilistischer Fokus gem&#xe4;&#xdf; &#xbb;Horizon&#xab;">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
<i>works as designed </i>
</p>
<ul>
<li>
freut mich &#8212; das Monster ist zahm
</li>
<li>
Verhalten erscheint oft auf den ersten Blick sonderbar
</li>
<li>
man mu&#223; wirklich in diesen Zeit-Dimensionen denken
</li>
<li>
<i>ob das wirklich brauchbar ist &#8212; </i>mu&#223; sich erst noch zeigen
</li>
</ul>
</body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#16515f" CREATED="1701977257132" ID="ID_390005380" MODIFIED="1701977946918" TEXT="Kapazit&#xe4;tssteuerung">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1701977495476" ID="ID_1672299096" MODIFIED="1701978187469" TEXT="Genauigkeit f&#xfc;r die ersten Jobs ist limitiert">
<linktarget COLOR="#6b768b" DESTINATION="ID_1672299096" ENDARROW="Default" ENDINCLINATION="1783;-96;" ID="Arrow_ID_397737048" SOURCE="ID_18962140" STARTARROW="None" STARTINCLINATION="-625;41;"/>
<node CREATED="1701978229129" ID="ID_430095540" MODIFIED="1701978253938" TEXT="1.Fenster ~ 5ms (2-7ms)"/>
<node CREATED="1701978275403" ID="ID_743131147" MODIFIED="1701978364723" TEXT="weitere Fenster: N&#xb7;SLEEP_HORIZON + WORK_HORIZON"/>
<node CREATED="1701978370646" ID="ID_197187391" MODIFIED="1701978382001" TEXT="sonst: bis zu 15ms Vers&#xe4;umnis m&#xf6;glich"/>
</node>
</node>
<node COLOR="#16515f" CREATED="1701977266138" HGAP="45" ID="ID_1515003355" MODIFIED="1701977969002" TEXT="Laufzeitverhalten" VSHIFT="18">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1701977587127" ID="ID_359746928" MODIFIED="1701977609244" TEXT="Scheduler verf&#xfc;gbar nach 2ms"/>
<node CREATED="1701977515433" ID="ID_874906164" MODIFIED="1701977547419" TEXT="Faustformel: 1&#xb7;planen &#x2259; 100&#xb5;s"/>
</node>
<node COLOR="#16515f" CREATED="1701977287887" HGAP="52" ID="ID_860609942" MODIFIED="1701977997582" TEXT="Timings(release)" VSHIFT="55">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node BACKGROUND_COLOR="#8892ba" COLOR="#435e98" CREATED="1701978004448" HGAP="31" ID="ID_1521359529" MODIFIED="1701978094945" STYLE="bubble" TEXT="(wartet auf Release-Build)" VSHIFT="20">
<font NAME="SansSerif" SIZE="9"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698201289083" HGAP="-4" ID="ID_1232202622" MODIFIED="1698201475987" TEXT="Diskussion" VSHIFT="35">
@ -102669,16 +102788,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="help"/>
<node CREATED="1701882531875" ID="ID_581885737" MODIFIED="1701882807636">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Wie viel <b>dedizierte Logik</b>&#160;ist hierf&#252;r sinnvoll?
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node COLOR="#5b280f" CREATED="1701882558247" ID="ID_726523132" MODIFIED="1701882657393" TEXT="Prerequisite vers&#xe4;umt Deadline &#x27f9; eigentlich k&#xf6;nnten alle Dependencies weg">
<icon BUILTIN="button_cancel"/>
@ -108725,16 +108841,13 @@ class Something
<icon BUILTIN="back"/>
<node CREATED="1701901747422" ID="ID_1745055222" MODIFIED="1701901766298">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
es ist ein <b>einmal-Kommunikationskanal</b>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1701901788161" ID="ID_1901914108" MODIFIED="1701901826496" TEXT="verwendet einen &#xbb;schwebenden&#xab; shared-State (mit ref-counting)"/>
<node CREATED="1701901862970" ID="ID_961345981" MODIFIED="1701901891669" TEXT="daran k&#xf6;nnen Endpunkte angekoppelt sein">
@ -108745,27 +108858,21 @@ class Something
</node>
<node CREATED="1701902015130" ID="ID_382878284" MODIFIED="1701903437501">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Endpunkte werden normalerweise <b>vorher erstellt</b>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...will sagen, bevor die <i>&#187;concurrent operation&#171;</i>&#160;&#252;berhaupt beginnt; also beispielsweise bevor man einen Worker-Thread startet, ist zumindest der Promise (und damit der shared-state) schon erzeugt. Ein Future kann man dann sp&#228;ter davon ableiten (is clearly sequenced). Wenn man Endpunkte <i>&#252;ber Thread-Grenzen hinweg weitereichen m&#246;chte, ist das nicht durch den Future-Promise-Mechanismus gedeckt</i>&#160;und mu&#223; anderweitig konventionell synchronisiert werden.
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
</node>
@ -108781,16 +108888,13 @@ class Something
<node CREATED="1701903521725" ID="ID_1010633385" MODIFIED="1701903529807" TEXT="entweder es geht, oder es knallt"/>
<node CREATED="1701903549377" ID="ID_1896335001" MODIFIED="1701903580304" TEXT="nur feststellbar, ob &#xfc;berhaupt ein shared-State dran h&#xe4;ngt">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
also ein shared_ptr != null
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1701903583565" ID="ID_852832770" MODIFIED="1701903604149" TEXT="keine M&#xf6;glichkeit, das Blocken zu vermeiden">
<node CREATED="1701903606317" ID="ID_385860882" MODIFIED="1701903614600" TEXT="man kann mit Timeout=0 warten">