Scheduler-test: investigate logic problem related to the »Tick« deadline
In the end, I decided that it ''is to early to decide anything'' in this respect... The actual situation encountered is a **Catch-22**: * in its current form, the »Tick« handler detects compulsory jobs beyond deadline * since such a Job ''must not be touched anymore,'' there is no way scheduling can proceed * so this would constitute a ''Scheduler Emergency'' All fine — just the »Tick« handler ''itself is a compulsory job'' — and being a job, it can well be driven beyond its deadline. In fact this situation was encountered as part of stress testing. Several mitigations or real solutions are conceivable, but in the end, too little is known yet regarding the integration of the scheduler within the Engine Thus I'll marked the problematic location and opened #1362
This commit is contained in:
parent
1316ee2c7f
commit
5b62438eb4
3 changed files with 130 additions and 17 deletions
|
|
@ -198,9 +198,13 @@ namespace gear {
|
|||
layer1.feedPrioritisation();
|
||||
while (layer1.isOutdated (now) and not layer1.isOutOfTime(now))
|
||||
layer1.pullHead();
|
||||
if (layer1.isDue (now) and not layer1.isOutOfTime(now))
|
||||
return layer1.pullHead();
|
||||
}
|
||||
if (layer1.isDue (now))
|
||||
{
|
||||
if (layer1.isOutOfTime(now))
|
||||
UNIMPLEMENTED ("how to trigger a Scheduler-Emergency from here"); ///////////////////////TICKET #1362 : not clear where Scheduler-Emergency is to be handled and how it can be triggered. See Scheduler::triggerEmergency()
|
||||
else
|
||||
return layer1.pullHead();
|
||||
} }
|
||||
return ActivationEvent();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -704,6 +704,12 @@ namespace gear {
|
|||
|
||||
/**
|
||||
* Trip the emergency brake and unwind processing while retaining all state.
|
||||
* @todo as of 4/2024 it is not clear what Scheduler-Emergency actually entails;
|
||||
* thus it can not be determined at which level of the component the handler
|
||||
* must reside, and how it can be reached. Notably there exists a situation
|
||||
* in `SchedulerCommutatior::findWork()`, where emergency can happen, yet
|
||||
* in its current configuration, the Layer-2 has no access to the top-level
|
||||
* Scheduler component. /////////////////////////////////////////////////TICKET #1362 : where to handle Scheduler-Emergency
|
||||
*/
|
||||
inline void
|
||||
Scheduler::triggerEmergency()
|
||||
|
|
|
|||
|
|
@ -83779,7 +83779,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1693172095351" ID="ID_605062962" MODIFIED="1699498232763" TEXT="Scheduler">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1693172098402" FOLDED="true" ID="ID_671792975" MODIFIED="1703014267260" TEXT="Dependency-Injection">
|
||||
<node COLOR="#435e98" CREATED="1693172098402" FOLDED="true" ID="ID_671792975" MODIFIED="1712766484749" TEXT="Dependency-Injection">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1698019216343" ID="ID_1018117763" MODIFIED="1698019225152" TEXT="BlockFlow wird eine externe Komponente"/>
|
||||
<node CREATED="1698019231611" ID="ID_1147870240" MODIFIED="1698019236491" TEXT="EngineObserver ebenso"/>
|
||||
|
|
@ -83802,15 +83802,20 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
einmal ist es der Scheduler selber, dessen Funktionalität abstrahiert als ExecutionCtx bereitzustellen ist
|
||||
</li>
|
||||
<li>
|
||||
die WorkForce hingegen ist konzeptionell selbständig, wird aber vom Scheduler übernommen und gezielt parametrisiert, einschließlich der Abstraktion <font face="Monospaced" color="#8a3ae2">doWork()</font>, welche dann doch vom Scheduler selbst zustammengestellt wird
|
||||
die WorkForce hingegen ist konzeptionell selbständig, wird aber vom Scheduler übernommen und gezielt parametrisiert, einschließlich der Abstraktion <font color="#8a3ae2" face="Monospaced">doWork()</font>, welche dann doch vom Scheduler selbst zustammengestellt wird
|
||||
</li>
|
||||
<li>
|
||||
nochmal anders ist die Situation beim LoadController, der so etwas wie die Steuerzentrale darstellt: <i>konzeptionell</i> ist er total vom Scheduler abhängig, aber seine Implementierung ist <i>entkoppelt,</i>  wiewohl in beide Richtungen verdrahtet mit wechselseitiger Abhängigkeit. In diesem Fall muß also ein <b>Abhängigkeitszyklus durchbrochen </b>werden
|
||||
nochmal anders ist die Situation beim LoadController, der so etwas wie die Steuerzentrale darstellt: <i>konzeptionell</i> ist er total vom Scheduler abhängig, aber seine Implementierung ist <i>entkoppelt,</i> wiewohl in beide Richtungen verdrahtet mit wechselseitiger Abhängigkeit. In diesem Fall muß also ein <b>Abhängigkeitszyklus durchbrochen </b>werden
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1712766283032" ID="ID_1983682769" MODIFIED="1712766463369" TEXT="die strikte Layer- und Komponenten-Ordnung läßt sich nicht in allen Details aufrecht erhalten">
|
||||
<linktarget COLOR="#ef2a5d" DESTINATION="ID_1983682769" ENDARROW="Default" ENDINCLINATION="103;86;" ID="Arrow_ID_768141599" SOURCE="ID_1737621678" STARTARROW="None" STARTINCLINATION="96;-6;"/>
|
||||
<linktarget COLOR="#fe152a" DESTINATION="ID_1983682769" ENDARROW="Default" ENDINCLINATION="714;22;" ID="Arrow_ID_976291150" SOURCE="ID_1354795316" STARTARROW="None" STARTINCLINATION="422;18;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1693841227130" ID="ID_1537960830" MODIFIED="1697818566052" TEXT="WorkForce einbinden">
|
||||
|
|
@ -84269,6 +84274,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#6920c0" CREATED="1697808219247" ID="ID_1041283707" MODIFIED="1697808253529" TEXT="ungeklärt: HALT an einzelne Worker?">
|
||||
<icon BUILTIN="bell"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1712766328341" ID="ID_1737621678" MODIFIED="1712766471248" TEXT="wer und wie die Scheduler-Emergency koordinieren?">
|
||||
<arrowlink COLOR="#ef2a5d" DESTINATION="ID_1983682769" ENDARROW="Default" ENDINCLINATION="103;86;" ID="Arrow_ID_768141599" STARTARROW="None" STARTINCLINATION="96;-6;"/>
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1697675135117" FOLDED="true" ID="ID_880133050" MODIFIED="1703014277456" TEXT="ActivityLang + BlockFlow">
|
||||
|
|
@ -98574,6 +98583,11 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="hourglass"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1712767596984" ID="ID_459235865" MODIFIED="1712767794731" TEXT="sollte auch Scheduler-Emergency signalisieren">
|
||||
<linktarget COLOR="#6e3e89" DESTINATION="ID_459235865" ENDARROW="Default" ENDINCLINATION="506;31;" ID="Arrow_ID_321080977" SOURCE="ID_1642624688" STARTARROW="None" STARTINCLINATION="-736;-24;"/>
|
||||
<linktarget COLOR="#8a3494" DESTINATION="ID_459235865" ENDARROW="Default" ENDINCLINATION="506;31;" ID="Arrow_ID_42313313" SOURCE="ID_376748016" STARTARROW="None" STARTINCLINATION="-1413;-61;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1699403193710" ID="ID_1522099049" MODIFIED="1699403198814" TEXT="Design-Skizze">
|
||||
<node CREATED="1699403199826" ID="ID_1873444035" MODIFIED="1699403208767" TEXT="asyncrhones Messaging"/>
|
||||
|
|
@ -115406,6 +115420,7 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1704915305240" ID="ID_466567694" MODIFIED="1704915313937" TEXT="Untersuchung im Stress-Test-Rig">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1712595168957" ID="ID_1322573597" MODIFIED="1712595178892" TEXT="Last-Pattern">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1712595181747" ID="ID_1751068516" MODIFIED="1712595247094" TEXT="spezielle »kleine Graphen«">
|
||||
<arrowlink COLOR="#4c5ab8" DESTINATION="ID_49179977" ENDARROW="Default" ENDINCLINATION="-515;1146;" ID="Arrow_ID_640223049" STARTARROW="None" STARTINCLINATION="-64;-3;"/>
|
||||
<node CREATED="1712595253643" ID="ID_1495672824" MODIFIED="1712595270237" TEXT="diese enthalten einige wenige Dependencies"/>
|
||||
|
|
@ -115736,7 +115751,8 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#338800" CREATED="1712623814519" ID="ID_282786901" MODIFIED="1712674092234" TEXT="3.Test">
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
<node CREATED="1712623319005" ID="ID_217903920" MODIFIED="1712623335142" TEXT="Aufbau für ParamRange / isolierte Einzeljobs"/>
|
||||
<node CREATED="1712623839453" ID="ID_1404492684" MODIFIED="1712623844207" TEXT="4 Kerne gleichmäßige Last 2ms">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1712623839453" ID="ID_1404492684" MODIFIED="1712771596051" TEXT="4 Kerne gleichmäßige Last 2ms">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1712623847258" ID="ID_696226492" MODIFIED="1712623855923" TEXT="concurrency nähert sich 4 an"/>
|
||||
<node CREATED="1712623856617" ID="ID_1415463769" MODIFIED="1712623864077" TEXT="typische Werte: ~ 3.7"/>
|
||||
<node CREATED="1712623877399" ID="ID_666034121" MODIFIED="1712623884298" TEXT="Jobzeiten ~ 2.3ms"/>
|
||||
|
|
@ -115758,7 +115774,7 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node CREATED="1712624161156" ID="ID_1405217053" MODIFIED="1712624178880" TEXT="währenddessen arbeitet eine freie Core die wake-up-Dependencies ab"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1712624407733" ID="ID_1770640914" MODIFIED="1712625077270" TEXT="Zeitrechnung geht komplett auf">
|
||||
<node CREATED="1712624407733" FOLDED="true" ID="ID_1770640914" MODIFIED="1712625077270" TEXT="Zeitrechnung geht komplett auf">
|
||||
<node CREATED="1712624420243" ID="ID_1573897287" MODIFIED="1712624440100" TEXT="50*2.3ms / 3.7 = 31ms"/>
|
||||
<node CREATED="1712624442044" ID="ID_1861791549" MODIFIED="1712624481216" TEXT="Beachte: Concurrency und Jobzeiten sind explizite Meßwerte">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -115912,7 +115928,7 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node COLOR="#338800" CREATED="1712698751005" ID="ID_1003770326" MODIFIED="1712704713746" TEXT="4.Test">
|
||||
<icon BUILTIN="smiley-neutral"/>
|
||||
<node CREATED="1712698757922" ID="ID_125540685" LINK="#ID_217903920" MODIFIED="1712698800389" TEXT="analog aber 8 Kerne, Last 2ms"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1712698802885" ID="ID_201705801" MODIFIED="1712698833976" TEXT="stelle fest: selbst bei 200 Jobs bleibt ∅conc ~ 7">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1712698802885" ID="ID_201705801" MODIFIED="1712771546960" TEXT="stelle fest: selbst bei 200 Jobs bleibt ∅conc ~ 7">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1712698908815" ID="ID_656303246" MODIFIED="1712698919553" TEXT="Modell: 0.26·p + 10"/>
|
||||
<node CREATED="1712698920525" ID="ID_1447324007" MODIFIED="1712698936423" TEXT="also der Expense-Faktor paßt sehr gut"/>
|
||||
|
|
@ -115934,7 +115950,7 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1712698852926" ID="ID_968074250" MODIFIED="1712698859964" TEXT="Einzelbeobachtung">
|
||||
<node COLOR="#435e98" CREATED="1712698852926" ID="ID_968074250" MODIFIED="1712771540299" TEXT="Einzelbeobachtung">
|
||||
<icon BUILTIN="list"/>
|
||||
<node CREATED="1712699753065" ID="ID_1445371638" MODIFIED="1712699755061" TEXT="Dump-11"/>
|
||||
<node CREATED="1712699755673" ID="ID_210589716" MODIFIED="1712699782331" TEXT="Planungsphase überfährt den ersten geplanten »Tick« - Job"/>
|
||||
|
|
@ -115950,7 +115966,7 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1712699912963" ID="ID_252158235" MODIFIED="1712699932277" TEXT="weitere Verarbeitung sieht — oberflächlich betrachtet — sauber aus"/>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1712699932985" ID="ID_1648223947" MODIFIED="1712699958382" TEXT="ABER: einzelne Contention-Events schicken Worker gleich mehrere ms lang weg">
|
||||
<node BACKGROUND_COLOR="#d0aa5b" COLOR="#fa002a" CREATED="1712699932985" FOLDED="true" ID="ID_1648223947" MODIFIED="1712771573520" TEXT="ABER: einzelne Contention-Events schicken Worker gleich mehrere ms lang weg">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1712700929019" ID="ID_1548815337" MODIFIED="1712701199664" TEXT="das liegt an der »stickyness«">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -115990,6 +116006,9 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
</html></richcontent>
|
||||
<arrowlink COLOR="#4666c4" DESTINATION="ID_1763982757" ENDARROW="Default" ENDINCLINATION="185;10;" ID="Arrow_ID_892274680" STARTARROW="None" STARTINCLINATION="-108;8;"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1712771480379" ID="ID_51774107" MODIFIED="1712771494902" TEXT="Problem besteht aus ungeklärten Gründen weiterhin">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1712701995339" ID="ID_1763982757" MODIFIED="1712704509547" TEXT="Anpassung der Steuerlogik: schneller zurückfahren">
|
||||
|
|
@ -116014,8 +116033,9 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node CREATED="1712704657102" ID="ID_642785886" MODIFIED="1712704668448" TEXT="abgesehen davon: Ausführung ohne ersichtilche Fehlfunktion"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1712707225417" ID="ID_483926503" MODIFIED="1712707234332" TEXT="5.Test">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1712707225417" ID="ID_483926503" MODIFIED="1712771451916" TEXT="5.Test">
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1712707236795" ID="ID_1193438894" MODIFIED="1712707253972" TEXT="8 Kerne, Last 8ms"/>
|
||||
<node COLOR="#435e98" CREATED="1712707259464" ID="ID_1079397067" MODIFIED="1712707277190" TEXT="bleibt hängen">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
|
|
@ -116033,13 +116053,14 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1712707425495" ID="ID_923192890" MODIFIED="1712707436497" STYLE="fork" TEXT="bleibt beim 2.Lauf hängen">
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1712707425495" ID="ID_923192890" MODIFIED="1712771421668" STYLE="fork" TEXT="bleibt beim 2.Lauf hängen">
|
||||
<font NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1712707454214" ID="ID_614749757" MODIFIED="1712707464397" TEXT="izt werd's interessant...">
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1712707465445" ID="ID_1436192915" MODIFIED="1712707496042" TEXT="Deadline für den Tick wurde überfahren">
|
||||
<node BACKGROUND_COLOR="#fed799" COLOR="#fa002a" CREATED="1712707465445" FOLDED="true" ID="ID_1436192915" MODIFIED="1712771415761" TEXT="Deadline für den Tick wurde überfahren">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1712707500045" ID="ID_154552576" MODIFIED="1712707511038">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
|
|
@ -116095,8 +116116,7 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
und zwar <font face="Monospaced" color="#d70330">if layer1.isOutOfTime(now)</font>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node COLOR="#ad006c" CREATED="1712709996385" ID="ID_851225832" MODIFIED="1712710021393" TEXT="genau das ist hier der Fall">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
|
|
@ -116111,6 +116131,63 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1712710547319" ID="ID_1932392128" MODIFIED="1712710556804" TEXT="Catch-22">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1712766598972" FOLDED="true" HGAP="35" ID="ID_441812703" MODIFIED="1712767856916" TEXT="mögliche Lösungen" VSHIFT="19">
|
||||
<linktarget COLOR="#7159db" DESTINATION="ID_441812703" ENDARROW="Default" ENDINCLINATION="-220;27;" ID="Arrow_ID_1982927238" SOURCE="ID_1402977969" STARTARROW="None" STARTINCLINATION="-15;-77;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1712766702693" ID="ID_459937240" MODIFIED="1712766715279" TEXT="Emergency auch in der work-Pull-Funktion erkennen">
|
||||
<node CREATED="1712766860367" ID="ID_731751015" MODIFIED="1712766955228" TEXT="das ist aktuell ein Defekt">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
der betreffende Fall in der Logik fällt leer durch und wird dann zwei Ebenen darüber als Contention-Kick gedeutet (was in 99% der Fälle auch korrekt ist)
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1712766984495" ID="ID_697052410" MODIFIED="1712766991490" TEXT="aber unklar wie dann signalisiert werden kann"/>
|
||||
</node>
|
||||
<node CREATED="1712766735297" ID="ID_1909566269" MODIFIED="1712766752721" TEXT="Queue-Clean-up + Emergency-Erkennung in Layer-2 verlagern">
|
||||
<node CREATED="1712767000253" ID="ID_921990888" MODIFIED="1712767010192" TEXT="das wäre die offensichtliche Code-Vereinfachung"/>
|
||||
<node CREATED="1712767010819" ID="ID_1785032368" MODIFIED="1712767031884" TEXT="und würde bzg. der Erkennung sauber top ⟶ down arbeiten"/>
|
||||
<node CREATED="1712767033160" ID="ID_1069761407" MODIFIED="1712767053312" TEXT="dann ist aber unklar wie die externe Reaktion getriggert wird"/>
|
||||
</node>
|
||||
<node CREATED="1712766759846" ID="ID_483185917" MODIFIED="1712766801924" TEXT="bei Emergency-Erkennung im work-Pull eine Exception werfen">
|
||||
<node CREATED="1712767072187" ID="ID_1670222323" MODIFIED="1712767105314" TEXT="ganz ein fieser Trick — würde aber im aktuellen Stand die Probleme lösen"/>
|
||||
<node CREATED="1712767106798" ID="ID_892290982" MODIFIED="1712767126351" TEXT="und zwar bricht dann nämlich der Worker als »defekt« zusammen"/>
|
||||
<node CREATED="1712767127108" ID="ID_1719803207" MODIFIED="1712767138006" TEXT="infolgedessen wird der Worker-Exit-Hook aufgerufen"/>
|
||||
<node CREATED="1712767138789" ID="ID_686988137" MODIFIED="1712767144767" TEXT="und dieser triggert die Emergency"/>
|
||||
</node>
|
||||
<node CREATED="1712766812065" ID="ID_273763464" MODIFIED="1712766839574" TEXT="Emergency-Trigger als Funktor in Layer-2 verdrahten">
|
||||
<node CREATED="1712767159375" ID="ID_1627406710" MODIFIED="1712767172097" TEXT="dann wäre die Emergency-Behandlung auf Scheduler-Komponenten-Level"/>
|
||||
<node CREATED="1712767172805" ID="ID_860911717" MODIFIED="1712767202045" TEXT="aber getriggert würde er i.d.R bei der Queue-Behandlung in Layer-2"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1712767219839" ID="ID_1642624688" MODIFIED="1712767714974" TEXT="Vertagt — Entscheidungs-Faktor ist das Signalisierungs-System">
|
||||
<arrowlink COLOR="#6e3e89" DESTINATION="ID_459235865" ENDARROW="Default" ENDINCLINATION="506;31;" ID="Arrow_ID_321080977" STARTARROW="None" STARTINCLINATION="-736;-24;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1712765099717" ID="ID_1318334438" MODIFIED="1712765138135" TEXT="Tick und Emergency hängen nicht direkt zusammen">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1712765178691" ID="ID_1861162290" MODIFIED="1712765187102" TEXT="Emergency kann eigentlich von überall ausgelöst werden"/>
|
||||
<node CREATED="1712765357307" ID="ID_1806543197" MODIFIED="1712765371414" TEXT="der Tick räumt ledigich die Queue auf...."/>
|
||||
<node CREATED="1712765372025" ID="ID_891055140" MODIFIED="1712765395572" TEXT="und muß u.U Emergency feststellen"/>
|
||||
</node>
|
||||
<node CREATED="1712765397846" ID="ID_666350186" MODIFIED="1712766103372" TEXT="Bedeutung der Emergency">
|
||||
<linktarget COLOR="#c90133" DESTINATION="ID_666350186" ENDARROW="Default" ENDINCLINATION="-4;379;" ID="Arrow_ID_839026330" SOURCE="ID_213873811" STARTARROW="None" STARTINCLINATION="571;38;"/>
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1712765187690" ID="ID_1917680793" MODIFIED="1712765196013" TEXT="Emergency muß selber ein aktives Clean-up machen">
|
||||
<node CREATED="1712765197240" ID="ID_314016975" MODIFIED="1712765218282" TEXT="layer1_.discardSchedule()"/>
|
||||
<node CREATED="1712765232333" ID="ID_273864281" MODIFIED="1712765233505" TEXT="activityLang_.discardBefore (now)"/>
|
||||
</node>
|
||||
<node CREATED="1712765240507" ID="ID_739665216" MODIFIED="1712765267759" TEXT="außerdem muß sie extern einen Alarm-Zustand signalisieren"/>
|
||||
<node CREATED="1712765437201" ID="ID_698432397" MODIFIED="1712765448700" TEXT="und die WorkForce in einen sicheren Zustand bringen"/>
|
||||
<node CREATED="1712765273223" ID="ID_561733090" MODIFIED="1712765342082" TEXT="danach ist der Scheduler erst mal inaktiv"/>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1712766624720" ID="ID_1402977969" MODIFIED="1712766663358" TEXT="Steuerung unklar">
|
||||
<arrowlink COLOR="#7159db" DESTINATION="ID_441812703" ENDARROW="Default" ENDINCLINATION="-220;27;" ID="Arrow_ID_1982927238" STARTARROW="None" STARTINCLINATION="-15;-77;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -118189,6 +118266,32 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node CREATED="1698531875525" ID="ID_1843097564" MODIFIED="1698531879431" TEXT="Tick nicht erneuern"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1712765690998" ID="ID_756475615" MODIFIED="1712765702446" TEXT="Organsation und Verdrahtung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1712765721161" ID="ID_213873811" MODIFIED="1712766104403" TEXT="Inkonsistenz bzgl. Emergency-Trigger">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Es kann auftreten, daß eine Lastspitze den nächsten Tick über seine Deadline befördert ⟹ dann bleibt das Scheduling stecken. Aber Layer-2 hat bisher keine Möglichkeit, die Emergency auszulösen (denn das würde gegen die Layer-Ordnung verstoßen)
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<arrowlink COLOR="#c90133" DESTINATION="ID_666350186" ENDARROW="Default" ENDINCLINATION="-4;379;" ID="Arrow_ID_839026330" STARTARROW="None" STARTINCLINATION="571;38;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
</node>
|
||||
<node CREATED="1712765889448" ID="ID_1440932099" MODIFIED="1712765910079" TEXT="noch unklar wo die Emergency überall eingreift"/>
|
||||
<node CREATED="1712765914397" ID="ID_644716172" MODIFIED="1712765946010" TEXT="tendentiell gehört sie auf die Ebene der Scheduler-Komponente"/>
|
||||
<node CREATED="1712765946952" ID="ID_49950215" MODIFIED="1712765966270" TEXT="ausgelöst wird sie aber von einer Clean-Up-Aktion (die in Layer-2 gehört)"/>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1712766123707" ID="ID_1354795316" MODIFIED="1712766439760" TEXT="Scheduler Dependency-Wiring ist noch nicht fertig ausgearbeitet">
|
||||
<arrowlink COLOR="#fe152a" DESTINATION="ID_1983682769" ENDARROW="Default" ENDINCLINATION="714;22;" ID="Arrow_ID_976291150" STARTARROW="None" STARTINCLINATION="422;18;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2b7af" COLOR="#5c4d6e" CREATED="1712767219839" ID="ID_376748016" MODIFIED="1712767825639" TEXT="Verbindung EngineObserver ⟵ Scheduler-Emergency">
|
||||
<arrowlink COLOR="#8a3494" DESTINATION="ID_459235865" ENDARROW="Default" ENDINCLINATION="506;31;" ID="Arrow_ID_42313313" STARTARROW="None" STARTINCLINATION="-1413;-61;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698531826447" ID="ID_1031213188" MODIFIED="1698531840094" TEXT="Mechanismus zum Wiederanlauf schaffen">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1698532052993" ID="ID_503858341" MODIFIED="1698532312084" TEXT="Problem: Berechnunsstand feststellen">
|
||||
|
|
|
|||
Loading…
Reference in a new issue