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:
parent
fa86228057
commit
5abab5390d
2 changed files with 185 additions and 82 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -82752,10 +82752,10 @@ Date:   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 »now«">
|
||||
<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 »now«">
|
||||
<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:   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ätzlichen SEED_CALC_OFFSET eingeführt">
|
||||
<node COLOR="#338800" CREATED="1701923216062" ID="ID_245599280" MODIFIED="1701974246875" TEXT="zusätzlichen SEED_CALC_OFFSET eingefü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 > 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ührt zusätzliche willkü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 — 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:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1701918965842" ID="ID_1066608394" MODIFIED="1701919053878" TEXT="ich möchte unbedingt die automatische selbst-Zündung">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
warum....? weiß nicht, Bauchgefühl.
|
||||
|
|
@ -85034,8 +85047,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
Ich möchte nicht mit Einzelfall-Analysen belegen, wann der Scheduler gestartet werden soll. Der Ruhe-Zustand, wie auch der Neuanlauf sollten von außen praktisch nicht erkennbar sein (bis auf die Verzö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:   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:   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übergänge realisieren">
|
||||
<node COLOR="#338800" CREATED="1698522456723" FOLDED="true" ID="ID_1793836905" MODIFIED="1701925009621" TEXT="Zustandsübergänge realisieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1698522466298" ID="ID_1846809868" MODIFIED="1698604976684" TEXT="ignite() ⟶ Tick etablieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -85118,12 +85130,12 @@ Date:   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ässig">
|
||||
<node COLOR="#435e98" CREATED="1701906701612" FOLDED="true" ID="ID_1389784071" MODIFIED="1701978650644" TEXT="funktioniert noch nicht zuverlä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="↯ Logik-Fehler: empty() ⟹ 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ü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:   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ä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 ü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ä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ührt zu unnö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ällt leer durch">
|
||||
<icon BUILTIN="clanbomber"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1701923256179" ID="ID_1254835545" MODIFIED="1701923346545" TEXT="Maßnahmen">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node COLOR="#338800" CREATED="1701923327018" ID="ID_1199123453" MODIFIED="1701923395602" TEXT="ersten Job mit SEED_CALC_OFFSET(250µs) starten">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1701923262858" ID="ID_12809390" MODIFIED="1701923339094" TEXT="vorläufige/einfache Load-Regulierung eingeführt">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
|
|
@ -85163,6 +85175,7 @@ Date:   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 �� Gewalt!">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -95850,8 +95863,8 @@ Date:   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ä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:   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ässig">
|
||||
<node COLOR="#435e98" CREATED="1701906481921" ID="ID_898143170" MODIFIED="1701978733301" TEXT="ignite() / Hochfahren unzuverlä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ällige Jobs">
|
||||
|
|
@ -95924,6 +95937,16 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1701907775997" ID="ID_1831372437" MODIFIED="1701907798583" TEXT="zirkulä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ärfen der Logik gelöst">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...war nichts Grundsä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:   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äääh ... reingefallen" VSHIFT="4">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Gut daß wir darüber geredet haben.
|
||||
|
|
@ -100894,8 +100915,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
Da <i>offensichtlich</i> die Länge des Test-Graphen keine <i>Eigenschaft</i>  der Teststruktur ist, landen wir bei einer rein dynamischen Allokation. Trotzdem war es eine gute Idee, das mit der <i>uninitialised storage</i>  endlich mal zu codifizierren...
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<font NAME="SansSerif" SIZE="11"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -101272,16 +101292,13 @@ Date:   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:   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äter)">
|
||||
<node COLOR="#435e98" CREATED="1701843700258" ID="ID_1562297081" MODIFIED="1701976295979" TEXT="aber dennoch sollte dann der Lauf irgendwann starten (dann halt 64ms später)">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1701906561917" ID="ID_759675868" MODIFIED="1701906661639" TEXT="Situation: nur wenige Jobs zu Beginn — 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:   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ätssteuerung überarbeiten">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1701976258058" ID="ID_1031727982" MODIFIED="1701976277939" TEXT="...und dann verhält sich's korrekt">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1701976297860" ID="ID_1501714240" MODIFIED="1701976317566" TEXT="mit der überarbeiteten Hochfahr-Logik lä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 "Promise already satisfied"">
|
||||
|
|
@ -101390,16 +101416,13 @@ Date:   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> Signal kaputt schieß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:   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ür sorgen, daß dieser erste Aufruf den Anker-Punkt anfragt. Hilfsfunktion gibt dann µ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:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1701879754394" ID="ID_48690000" MODIFIED="1701879766466" TEXT="Einzelbeobachtung deutet auch auf ~100µs hin"/>
|
||||
<node CREATED="1701879774593" ID="ID_1372474269" MODIFIED="1701881055424">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
⟹ der pre-Roll ist <b>wesentlich</b> 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:   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ält die Node-IDs
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -101485,9 +101499,56 @@ Date:   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ß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äß">
|
||||
<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äts-Steuerung gemäß zu dem Zeitpunkt vorliegendem Plan">
|
||||
<node CREATED="1701976492064" ID="ID_1836937935" MODIFIED="1701976508468" TEXT="im WORK_HORIZON ⟹ targeted wait"/>
|
||||
<node CREATED="1701976509152" ID="ID_186240584" MODIFIED="1701976523802" TEXT="nur der Tick > SLEEP_HORIZON ⟹ 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 > WORK_HORIZON ⟼ Schlaf"/>
|
||||
<node CREATED="1701976561873" ID="ID_469990433" MODIFIED="1701976596824" TEXT="⟹ dann kommen 'se halt bist zu 15ms zu spät"/>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1701976604683" ID="ID_18962140" MODIFIED="1701978187468" TEXT="gilt dann als »ungünstige Umstände«">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
dieser Fall ist in der Tat etwas „ausgefallen“: wenn die ersten planmäßigen Tasks jenseits des WORK_HORIZON liegen, muß man damit rechnen, daß die ganze Kapazität gebündelt einmal kurz hinter dem SLEEP_HORIZON auftaucht und „nachschaut“... 
|
||||
</p>
|
||||
<p>
|
||||
...und solange keine Jobs im Nahfeld auftreten, kommt es auch erst mal nicht zu einer Umverteilung der Kapazität. Das ist eine Konsequenz der Entscheidung, das längerfristige Schlafen zu priorisieren. Letztlich ist auch der SLEEP_HORIZON so zu wählen, daß er noch nicht gefährlich lang ist im Verhältnis zum zu erwartenden Takt (den ich auf ca 25fps schä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ä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üh">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
|
|
@ -101586,6 +101647,64 @@ Date:   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äß »Horizon«">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
<i>works as designed </i>
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
freut mich — das Monster ist zahm
|
||||
</li>
|
||||
<li>
|
||||
Verhalten erscheint oft auf den ersten Blick sonderbar
|
||||
</li>
|
||||
<li>
|
||||
man muß wirklich in diesen Zeit-Dimensionen denken
|
||||
</li>
|
||||
<li>
|
||||
<i>ob das wirklich brauchbar ist — </i>muß 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ätssteuerung">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<node CREATED="1701977495476" ID="ID_1672299096" MODIFIED="1701978187469" TEXT="Genauigkeit fü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·SLEEP_HORIZON + WORK_HORIZON"/>
|
||||
<node CREATED="1701978370646" ID="ID_197187391" MODIFIED="1701978382001" TEXT="sonst: bis zu 15ms Versäumnis mö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ügbar nach 2ms"/>
|
||||
<node CREATED="1701977515433" ID="ID_874906164" MODIFIED="1701977547419" TEXT="Faustformel: 1·planen ≙ 100µ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:   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> ist hierfür sinnvoll?
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node COLOR="#5b280f" CREATED="1701882558247" ID="ID_726523132" MODIFIED="1701882657393" TEXT="Prerequisite versäumt Deadline ⟹ eigentlich kö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 »schwebenden« shared-State (mit ref-counting)"/>
|
||||
<node CREATED="1701901862970" ID="ID_961345981" MODIFIED="1701901891669" TEXT="daran kö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>»concurrent operation«</i> ü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äter davon ableiten (is clearly sequenced). Wenn man Endpunkte <i>über Thread-Grenzen hinweg weitereichen möchte, ist das nicht durch den Future-Promise-Mechanismus gedeckt</i> und muß 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 überhaupt ein shared-State dran hä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öglichkeit, das Blocken zu vermeiden">
|
||||
<node CREATED="1701903606317" ID="ID_385860882" MODIFIED="1701903614600" TEXT="man kann mit Timeout=0 warten">
|
||||
|
|
|
|||
Loading…
Reference in a new issue