Scheduler-test: investigate and fix problem with the new Guard

...turns out to be a secondary problem (but must be fixed non the less).
Since the planning-job no longer drops the token now, the workers
have to wait; since they are waiting actively and contending on the token,
a significant slowdown can happen.

Sometimes the planning job gets behind its own scheduler and thus
enters dispatch, in which case it drops the GoomingToken, causing
an Assertion failure on return.

The **actual problem** however is the slowdown due to active spinning
This commit is contained in:
Fischlurch 2023-12-20 02:50:47 +01:00
parent b497980522
commit 84b92c2ee3
2 changed files with 863 additions and 22 deletions

View file

@ -315,7 +315,8 @@ namespace gear {
~ScopedGroomingGuard()
{
if (handledActively_)
if (handledActively_ and
commutator_.holdsGroomingToken(thisThread()))
commutator_.dropGroomingToken();
}
};

View file

@ -105226,8 +105226,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
dieses Prinzip <i>k&#246;nnte man aufweichen </i>&#8212; ich halte das aber f&#252;r eine schlechte Idee, denn der Scheduler ist auch so schon schwer genug zu verstehen, auch die Activity-Language beginnt schon zu &#187;br&#246;seln&#171; ... gef&#228;hrliche Tendenz. Meine Einsch&#228;tzung ist, wir planen ehr so 10 Jobs pro Metajob-Lauf, d.h. das w&#228;ren dann Gr&#246;&#223;enordnung 500-1000&#181;s Zeit, in der jedwede andere Management-T&#228;tigkeit geblockt ist (renderjobs laufen trotzdem weiter). Sofern diese Annahme <i>nicht zutrifft, </i>m&#246;chte ich daf&#252;r konkrete Beweise sehen
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
@ -105298,8 +105297,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<font color="#8f02d4">&#160;&#160;&#160;&#160;of Grooming-Token handling and clarified the role of the API-functions.</font>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1703020110765" ID="ID_1266580870" MODIFIED="1703020121816" TEXT="das war nur ein Nebenschauplatz damals"/>
<node CREATED="1703020122494" ID="ID_699106064" MODIFIED="1703020135942" TEXT="hab die Funktion ensureDropGroomingToken() extrahiert"/>
@ -105313,8 +105311,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
aber sie dann auch <b>zus&#228;tzlich</b>&#160;in das <b><font face="Monospaced">post()</font></b>&#160; eingesetzt
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1703020169182" ID="ID_893010007" MODIFIED="1703027441068" TEXT="Erinnerung kommt zur&#xfc;ck....">
<icon BUILTIN="broken-line"/>
@ -105330,8 +105327,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
...dann erlangt er es, und <b><font color="#c100b2">beh&#228;lt es</font></b>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1703020222562" ID="ID_1384686267" MODIFIED="1703020228890" TEXT="...ohne davon etwas zu merken"/>
</node>
@ -105386,8 +105382,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
und: die Allokation findet <b>hier</b>&#160;statt
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head>
@ -105403,8 +105398,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.buildCalculationJob (job_, start_,death_));
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1703021561211" ID="ID_271715467" MODIFIED="1703021577825" TEXT="&#x27f9; mu&#xdf; auch in continueMetaJob()"/>
</node>
@ -105419,8 +105413,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
...eben wenn jemand <i>von au&#223;en kommt...</i>&#160;das ist i.d.R. nur beim seedCalcStream() der Fall
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1703021667261" ID="ID_155074899" MODIFIED="1703026286837" TEXT="Implementierung">
@ -105444,8 +105437,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
zum einen ist das nicht genau das feste Raster, und au&#223;erdem braucht der OS-Scheduler sowiso immer etwas l&#228;nger
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1703022459903" ID="ID_808951013" MODIFIED="1703022483394" TEXT="Annahme: wer &#x201e;von Au&#xdf;en&#x201c; kommt, hat die Zeit">
<icon BUILTIN="messagebox_warning"/>
@ -105463,8 +105455,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
sage bewu&#223;t &#187;dokumentieren&#171;, denn diese Logik hier ist derart einfach zu implementieren, da&#223; eigentlich kein Test notwendig w&#228;re
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1703022843647" ID="ID_269682463" MODIFIED="1703026275222" TEXT="verzichte auf das Abdecken der Warteschleife">
@ -105477,8 +105468,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
das ist n&#228;mlich unverh&#228;ltnism&#228;&#223;ig schwer im Test zu verifizieren, und steht in keinem Verh&#228;ltnis zur Aufgabe
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
@ -105499,6 +105489,855 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node CREATED="1703029832104" ID="ID_592804815" MODIFIED="1703029835334" TEXT="Testl&#xe4;ufe">
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1703029837383" ID="ID_728556946" MODIFIED="1703029855629" TEXT="Groooming-Token durcheinander">
<icon BUILTIN="broken-line"/>
<node CREATED="1703030898754" ID="ID_985851431" MODIFIED="1703032124763" TEXT="generell: durch die letzte &#xc4;nderung haben wir nun MASSIVE contention">
<icon BUILTIN="info"/>
<node CREATED="1703030919727" ID="ID_1833544279" MODIFIED="1703030944063" TEXT="...allerdings anscheinend nur wenn die DUMP-print-Statements dabei sind"/>
<node CREATED="1703030946211" ID="ID_1899617334" MODIFIED="1703030971458" TEXT="jetzt drehen 8 Threads am Rad und bremsen damit den planning-Job stark aus"/>
<node CREATED="1703030972695" ID="ID_1802802218" MODIFIED="1703030986814" TEXT="der l&#xe4;uft jetzt u.U bis &gt; t=20ms"/>
</node>
<node CREATED="1703029858260" ID="ID_1326658980" MODIFIED="1703032140954">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
<b>Assertion-Failure</b>: der Aufrufer von dropGroomingToken() h&#228;lt es nicht
</p>
</body>
</html></richcontent>
<node CREATED="1703029917565" ID="ID_1473892836" MODIFIED="1703029917565" TEXT="scheduler-commutator.hpp:155"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#7a0969" CREATED="1703032153082" ID="ID_7056136" MODIFIED="1703032176725" TEXT="wie KONNTE das passieren???">
<icon BUILTIN="help"/>
<icon BUILTIN="smiley-angry"/>
</node>
</node>
<node CREATED="1703029884367" ID="ID_325637705" MODIFIED="1703030180026" TEXT="Stacktrace">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
vault::gear::SchedulerCommutator::dropGroomingToken()+0xeb
</p>
<p>
</p>
<p>
vault::gear::SchedulerCommutator::ScopedGroomingGuard::~ScopedGroomingGuard()+0x27
</p>
<p>
</p>
<p>
vault::gear::ScheduleSpec::post()+0x1b8
</p>
<p>
</p>
<p>
vault::gear::test::TestChainLoad&lt;16ul&gt;::ScheduleCtx::disposeStep(unsigned long, unsigned long)+0x22d
</p>
<p>
</p>
<p>
vault::gear::test::TestChainLoad&lt;16ul&gt;::ScheduleCtx::ScheduleCtx(vault::gear::test::TestChainLoad&lt;16ul&gt;&amp;, vault::gear::Scheduler&amp;)::{lambda(unsigned long, unsigned long)#1}::operator()(unsigned long, unsigned long) const+0x2e
</p>
<p>
</p>
<p>
std::_Function_handler&lt;void (unsigned long, unsigned long), vault::gear::test::TestChainLoad&lt;16ul&gt;::ScheduleCtx::ScheduleCtx(vault::gear::test::TestChainLoad&lt;16ul&gt;&amp;, vault::gear::Scheduler&amp;)::{lambda(unsigned long, unsigned long)#1}&gt;::_M_invoke(std::_Any_data const&amp;, unsigned long&amp;&amp;, std::_Any_data const&amp;)+0x52
</p>
<p>
</p>
<p>
std::function&lt;void (unsigned long, unsigned long)&gt;::operator()(unsigned long, unsigned long) const+0x61
</p>
<p>
</p>
<p>
vault::gear::test::RandomChainPlanFunctor&lt;16ul&gt;::invokeJobOperation(lumiera_jobParameter_struct const&amp;)+0x29d
</p>
<p>
</p>
<p>
vault::gear::Activity::invokeFunktor(lib::time::Time)+0x740
</p>
<p>
</p>
<p>
vault::gear::activity::Proc vault::gear::Activity::activate&lt;vault::gear::Scheduler::ExecutionCtx&gt;(lib::time::Time, vault::gear::Scheduler::ExecutionCtx&amp;)+0x70
</p>
<p>
</p>
<p>
vault::gear::activity::Proc vault::gear::ActivityLang::activateChain&lt;vault::gear::Scheduler::ExecutionCtx&gt;(vault::gear::Activity*, vault::gear::Scheduler::ExecutionCtx&amp;)+0x4e
</p>
<p>
</p>
<p>
vault::gear::activity::Proc vault::gear::ActivityLang::dispatchChain&lt;vault::gear::Scheduler::ExecutionCtx&gt;(vault::gear::Activity*, vault::gear::Scheduler::ExecutionCtx&amp;)+0x68
</p>
<p>
</p>
<p>
vault::gear::activity::Proc vault::gear::SchedulerCommutator::postDispatch&lt;vault::gear::Scheduler::ExecutionCtx&gt;(vault::gear::ActivationEvent, vault::gear::Scheduler::ExecutionCtx&amp;, vault::gear::SchedulerInvocation&amp;)+0xc1
</p>
<p>
</p>
<p>
vault::gear::Scheduler::postChain(vault::gear::ActivationEvent)+0x2a9
</p>
<p>
</p>
<p>
vault::gear::Scheduler::continueMetaJob(lib::time::Time, vault::gear::Job, vault::gear::ManifestationID)+0x164
</p>
<p>
</p>
<p>
vault::gear::Scheduler::seedCalcStream(vault::gear::Job, vault::gear::ManifestationID, lib::time::FrameRate)+0x8b
</p>
<p>
</p>
<p>
vault::gear::test::TestChainLoad&lt;16ul&gt;::ScheduleCtx::performRun()+0x17e
</p>
<p>
</p>
<p>
vault::gear::test::TestChainLoad&lt;16ul&gt;::ScheduleCtx::launch_and_wait()::{lambda()#1}::operator()() const+0x2a
</p>
<p>
</p>
<p>
double lib::test::benchmarkTime&lt;vault::gear::test::TestChainLoad&lt;16ul&gt;::ScheduleCtx::launch_and_wait()::{lambda()#1}&gt;(vault::gear::test::TestChainLoad&lt;16ul&gt;::ScheduleCtx::launch_and_wait()::{lambda()#1} const&amp;, unsigned long)+0x25
</p>
<p>
</p>
<p>
vault::gear::test::TestChainLoad&lt;16ul&gt;::ScheduleCtx::launch_and_wait()+0x25
</p>
<p>
</p>
<p>
vault::gear::test::SchedulerStress_test::smokeTest()+0x4af
</p>
<p>
</p>
</body>
</html></richcontent>
<icon BUILTIN="list"/>
<node CREATED="1703030253262" MODIFIED="1703030253262" TEXT="ScheduleCtx::disposeStep("/>
<node CREATED="1703030279947" MODIFIED="1703030279947" TEXT="ScheduleSpec::post()"/>
<node CREATED="1703030294635" ID="ID_856786938" MODIFIED="1703030294635" TEXT="~ScopedGroomingGuard()"/>
<node CREATED="1703030304438" ID="ID_1875494400" MODIFIED="1703030304438" TEXT="SchedulerCommutator::dropGroomingToken()"/>
<node COLOR="#e01e4b" CREATED="1703030312323" ID="ID_1457327389" MODIFIED="1703030321916" TEXT="&#xd83d;&#xddf1;">
<font NAME="SansSerif" SIZE="15"/>
</node>
</node>
<node CREATED="1703031454383" ID="ID_1684124838" MODIFIED="1703034598313" TEXT="Log-Auszug">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @22281 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @22304 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @22307 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
</p>
<p>
... dispose(i=46,lev:23) -&gt; @23000
</p>
<p>
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @22184 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 18: @22217 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @22249 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @22358 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @22389 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @22402 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @22414 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @22361 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 18: @22438 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @22456 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @22247 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @22486 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @22337 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @22507 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 18: @22466 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @22528 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @22498 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @22548 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @22573 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @22605 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @22436 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @22632 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @22646 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @22381 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @22659 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @22668 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @22552 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @22691 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @22721 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @22735 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @22751 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @22762 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @22774 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @22714 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @22796 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @22807 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @22821 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @22830 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 18: @22836 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @22844 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @22745 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @22866 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @22575 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @22897 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @22927 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @22952 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @22965 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @22900 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @22975 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @22986 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @22892 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @23015 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @23020 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @23012 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @23088 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @23106 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @22810 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @23118 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;
</p>
<p>
&#8214;&#8226;&#9651;&#8226;&#8214;&#160;&#160;&#160;&#160;&#160;wof:8 HT:0
</p>
<p>
&#8214;SCH&#8214; 0C: @23067 &#9675; start=23000 dead:30000
</p>
<p>
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @23149 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @23099 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 18: @22917 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @23174 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @23049 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @23157 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @23231 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @23127 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @23241 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @23252 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @23265 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @23276 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @23296 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @23318 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @23339 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @23210 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @23371 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @23383 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @23395 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @23412 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @23286 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 18: @23309 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @23360 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @23455 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @23404 HT:0&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @23436 HT:81&#160;&#160;-&gt; &#9654; 0
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 18: @23470 HT:81&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;
</p>
<p>
!&#9670;!&#160;&#160;&#160;0C: @23447&#160;&#160;&#9881;&#160;&#160;calc(i=46, lev:23)
</p>
<p>
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @23525 HT:81&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @23554 HT:81&#160;&#160;-&gt; &#8728;
</p>
<p>
</p>
<p>
!&#9670;!&#160;&#160;&#160;0C: @23510&#160;&#160;&#10548;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(i=46)
</p>
<p>
..!&#160;&#160;&#160;0F: @23537&#160;&#160;&#9881;&#160;&#160;calc(i=0, lev:0)
</p>
<p>
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @23553 HT:1000&#160;&#160;-&gt; &#9654; 81
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @23616 HT:1000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @23627 HT:1000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @23644 HT:1000&#160;&#160;-&gt; &#8728;
</p>
<p>
</p>
<p>
&#8214;&#9655;&#9655;&#9655;&#8214; 24: @ 23658 HT:1000
</p>
<p>
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @23679 HT:1000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @23648 HT:1000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @23706 HT:1000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 18: @23588 HT:1000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @23720 HT:1000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @23731 HT:1000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @23617 HT:1000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @23739 HT:2000&#160;&#160;-&gt; &#9654; 1000
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @23638 HT:1000&#160;&#160;-&gt; &#8728;
</p>
<p>
</p>
<p>
...
</p>
<p>
</p>
<p>
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @24156 HT:6000&#160;&#160;-&gt; &#8728;
</p>
<p>
!&#9670;!&#160;&#160;&#160;24: @24126&#160;&#160;&#9881;&#160;&#160;calc(i=1, lev:1)
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @24098 HT:5000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @24185 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @24212 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @24168 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|n.(47,lev:23)
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @24258 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @23881 HT:4000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @24270 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @24314 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @24329 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @24339 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @24241 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; CD: @24316 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @24380 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @24341 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @24401 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
... dispose(i=47,lev:23) -&gt; @23000
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @24431 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @24411 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @24470 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
..!&#160;&#160;&#160;24: @24456&#160;&#160;&#10548;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(i=1)
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @24498 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @24522 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @24543 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @24284 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @24563 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 18: @24162 HT:7000&#160;&#160;-&gt; &#9654; 6000
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @24577 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @24585 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @24618 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 5A: @24642 HT:7000&#160;&#160;-&gt; &#8728;
</p>
<p>
</p>
<p>
...
</p>
<p>
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; F6: @30810 HT:23000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 18: @30789 HT:23000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 20: @30830 HT:23000&#160;&#160;-&gt; &#8728;
</p>
<p>
</p>
<p>
!&#9670;!&#160;&#160;&#160;0F: @30867&#160;&#160;&#9881;&#160;&#160;calc(i=5, lev:5)
</p>
<p>
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 7C: @30858 HT:23000&#160;&#160;-&gt; &#8728;
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 24: @30882 HT:73658&#160;&#160;-&gt; &#9654; 23000
</p>
<p>
..!&#160;&#160;&#160;0F: @30974&#160;&#160;&#10548;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(i=5)
</p>
<p>
&#8214;PST&#8214; 0F: @31024 &#9682; start=5000&#9657;&#9657;6000 dead:30000
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @31055 HT:73658&#160;&#160;-&gt; &#9654; 6000
</p>
<p>
</p>
<p>
!&#9670;!&#160;&#160;&#160;0F: @31079&#160;&#160;&#9881;&#160;&#160;calc(i=6, lev:6)
</p>
<p>
&#8214;&#8226;&#9651;&#8226;&#8214;&#160;&#160;&#160;&#160;&#160;wof:8 HT:73658
</p>
<p>
&#8214;SCH&#8214; 0C: @31199 &#9675; start=23000 dead:30000
</p>
<p>
</p>
<p>
!&#9670;!&#160;&#160;&#160;0C: @31217&#160;&#160;&#9881;&#160;&#160;calc(i=47, lev:23)
</p>
<p>
..!&#160;&#160;&#160;0F: @31876&#160;&#160;&#10548;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(i=6)
</p>
<p>
&#8214;PST&#8214; 0F: @31920 &#9682; start=6000&#9657;&#9657;7000 dead:30000
</p>
<p>
&#160;&#160;&#160;&#183;&#8214; 0F: @31946 HT:73658&#160;&#160;-&gt; &#9654; 7000
</p>
<p>
</p>
<p>
!&#9670;!&#160;&#160;&#160;0F: @31971&#160;&#160;&#9881;&#160;&#160;calc(i=7, lev:7)
</p>
<p>
..!&#160;&#160;&#160;0C: @33137&#160;&#160;&#10548;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(i=47)
</p>
<p>
0000000609: PRECONDITION: scheduler-commutator.hpp:155: thread_1: dropGroomingToken: (groomingToken_.load(memory_order_relaxed) == thisThread())
</p>
<p>
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="list"/>
<node CREATED="1703032211557" ID="ID_1733943870" MODIFIED="1703032216698" TEXT="Thread 0C plant"/>
<node CREATED="1703032244281" ID="ID_456083238" MODIFIED="1703032254728" TEXT="um @23067 &#xfc;bergibt er &#x25cb; start=23000 dead:30000 "/>
<node CREATED="1703032291591" ID="ID_1627521093" MODIFIED="1703032311924">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
da nun t &gt; 23000, kann er <b>selber in den Dispatch gehen</b>
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1703032329851" ID="ID_1535895917" MODIFIED="1703032369681" TEXT="um @23436 kommt Thread 0F: in den Dispatch -&gt; &#x25b6; 0"/>
<node CREATED="1703032401593" ID="ID_261553455" MODIFIED="1703032422778" TEXT="um @23447 beginnt der Planer 0C mit &#x2699; calc(i=46, lev:23)"/>
<node CREATED="1703032486821" ID="ID_1301376554" MODIFIED="1703032499192" TEXT="um @23510 kehrt der Planer 0C zur&#xfc;ck &#x2934; (i=46)"/>
<node CREATED="1703033097476" ID="ID_1157870928" MODIFIED="1703033122045" TEXT="um @23553 kommt worker 24 in den Dispatch HT:1000 -&gt; &#x25b6; 81"/>
<node CREATED="1703033584619" ID="ID_1269704709" MODIFIED="1703033599341" TEXT="um @24341 (ca) sieht man vom Planer 0C noch das &quot;... dispose&quot;"/>
<node CREATED="1703032755796" ID="ID_457308168" MODIFIED="1703032768636" TEXT="danach ist der Planer f&#xfc;r lange zeit geblockt (und die Worker legen los)"/>
<node CREATED="1703032783214" ID="ID_1816861603" MODIFIED="1703032796960" TEXT="um @31199 &#xfc;bergibt der Planer &#x25cb; start=23000 dead:30000"/>
<node CREATED="1703032806643" ID="ID_1759062269" MODIFIED="1703032970131">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
um @31217&#160;&#160;f&#252;hrt <b>er selber aus</b>&#160;&#9881;&#160;&#160;calc(i=47, lev:23)
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1703032971381" ID="ID_1419537018" MODIFIED="1703032991806" TEXT="um @31946 kommt Worker 0F in den Dispatch HT:73658 -&gt; &#x25b6; 7000"/>
<node CREATED="1703033019933" ID="ID_1697648847" MODIFIED="1703033032417" TEXT="um @31971 ist dieser Worker in der Berechnung &#x2699; calc(i=7, lev:7)"/>
<node CREATED="1703032846285" ID="ID_1736311116" MODIFIED="1703032860719" TEXT="um @33137 kehrt der Planer 0C wieder zur&#xfc;ck &#x2934; (i=47)"/>
<node CREATED="1703032863891" ID="ID_1705642680" MODIFIED="1703032887568" TEXT="unmittelbar in der n&#xe4;cshten Zeile steht die PRECONDITION: scheduler-commutator.hpp:155:"/>
</node>
<node CREATED="1703031429595" ID="ID_1987956182" MODIFIED="1703032918545" TEXT="Rekonstruktion">
<icon BUILTIN="forward"/>
<node CREATED="1703033141779" ID="ID_394037154" MODIFIED="1703033159026" TEXT="der Planer ist so langsam, da&#xdf; er das nominelle Schedule &#xfc;berf&#xe4;hrt"/>
<node CREATED="1703033160004" ID="ID_1997069630" MODIFIED="1703033170973" TEXT="damit sind wir in der Gefahrenzone: er nimmt selber an der Berechnung teil"/>
<node CREATED="1703033172602" ID="ID_1971065869" MODIFIED="1703033339551" TEXT="in der ersten Runde f&#xfc;hrt er Node 46 aus">
<node CREATED="1703033378566" ID="ID_832585062" MODIFIED="1703033387977" TEXT="das ist m&#xf6;glich, weil noch keine Dependency gesetzt ist"/>
<node CREATED="1703033388958" ID="ID_15672158" MODIFIED="1703033396837" TEXT="deshalb droppt er das Token"/>
<node CREATED="1703033397520" ID="ID_1577615711" MODIFIED="1703033403255" TEXT="und andere Worker kommen zum Zug"/>
</node>
<node CREATED="1703033418369" ID="ID_163079238" MODIFIED="1703033424036" TEXT="bei der ersten R&#xfc;ckkehr geht alles gut">
<node CREATED="1703033424768" ID="ID_681452752" MODIFIED="1703033432923" TEXT="er selber hatte zu Beginn ja das Grooming-Token"/>
<node CREATED="1703033433487" ID="ID_1621684729" MODIFIED="1703033439290" TEXT="deshalb ist der Guard inaktiv"/>
<node CREATED="1703033443174" ID="ID_340114613" MODIFIED="1703033454524" TEXT="aber der Planer 0C hat nun kein Token mehr"/>
</node>
<node CREATED="1703034153887" ID="ID_1892502840" MODIFIED="1703034635909" TEXT="um ca @24341 sieht man vom Planer noch das &quot;dispose...&quot;"/>
<node CREATED="1703034636612" ID="ID_1250239667" MODIFIED="1703034643353" TEXT="dort bleibt er aber stecken"/>
<node CREATED="1703034644252" ID="ID_1211325921" MODIFIED="1703034768192" TEXT="erst 7ms sp&#xe4;ter, um @31199 bekommt er das Token">
<node CREATED="1703034768845" ID="ID_1007079821" MODIFIED="1703034773951" TEXT="dieses Mal allerdings vom Guard"/>
<node CREATED="1703034774756" ID="ID_1091145425" MODIFIED="1703034779591" TEXT="d.h. er ist in post()"/>
</node>
<node CREATED="1703034680032" ID="ID_1701020403" MODIFIED="1703034719156" TEXT="er kann wieder selber dispatchen">
<node CREATED="1703034686335" ID="ID_1588464337" MODIFIED="1703034695527" TEXT="und weil die Dependency noch nicht gesetzt ist"/>
<node CREATED="1703034696142" ID="ID_1250999360" MODIFIED="1703034712519" TEXT="geht er auch in die Ausf&#xfc;hrung und droppt das Token"/>
</node>
<node CREATED="1703034801063" ID="ID_209877159" MODIFIED="1703034816194" TEXT="w&#xe4;hrenddessen hat Worker 0F dispatched und gedropped"/>
<node CREATED="1703034816899" ID="ID_1451952663" MODIFIED="1703034845502" TEXT="d.h. niemand hat das Token &#xd83e;&#xdc32; bei der R&#xfc;ckkehr wird die ASSERTION ausgel&#xf6;st"/>
</node>
<node CREATED="1703035481598" ID="ID_513905440" MODIFIED="1703035487981" TEXT="Einsch&#xe4;tzung">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1703035489187" ID="ID_1738862015" MODIFIED="1703035494991" TEXT="das Problem ist harmlos"/>
<node CREATED="1703035496818" ID="ID_1179746196" MODIFIED="1703035521699" TEXT="das eigentliche Problem ist, da&#xdf; der Planer sein eigenes Schedule &#xfc;berf&#xe4;hrt">
<node CREATED="1703035522693" ID="ID_141017335" MODIFIED="1703035529653" TEXT="das bricht diverse implizite Annahmen"/>
<node CREATED="1703035530742" ID="ID_754065449" MODIFIED="1703035560209" TEXT="da wir keinen Commit machen, sind die Dependencies dann falsch"/>
<node CREATED="1703035577113" ID="ID_197173144" MODIFIED="1703035611065">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
&#10233; <b>Forderung</b>: ein echer Planer mu&#223; das erkennen und abbrechen
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1703035636120" ID="ID_1849107541" MODIFIED="1703035657424" TEXT="wenn er aber nicht abbricht, darf nat&#xfc;rlich nichts entgleisen">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1703035659636" ID="ID_1310516805" MODIFIED="1703035791627" TEXT="der Guard mu&#xdf; wohl noch einen Check machen">
<icon BUILTIN="yes"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1703035682586" ID="ID_275787371" MODIFIED="1703035691969" TEXT="ja leider ... es wird immer h&#xe4;sslicher"/>
<node CREATED="1703035701591" ID="ID_939595597" MODIFIED="1703035715808" TEXT="es ist aber definitiv eine Ausnahme, daher ein expliziter Check hier"/>
<node CREATED="1703035724389" ID="ID_1501791346" MODIFIED="1703035734910" TEXT="und zwar NUR auf den Fall, da&#xdf; kein Token mehr gehalten wird"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1703035770785" ID="ID_1318995245" MODIFIED="1703035812774" TEXT="au&#xdf;erdem: die Contention-Behandlung wird nun dringend">
<arrowlink COLOR="#fb204a" DESTINATION="ID_942987067" ENDARROW="Default" ENDINCLINATION="375;-22;" ID="Arrow_ID_1292760807" STARTARROW="None" STARTINCLINATION="223;11;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1703036349120" ID="ID_125503706" MODIFIED="1703036365873" TEXT="ohne DUMP-Meldungen ist kein Effekt (auf die Zeiten) sichtbar"/>
<node CREATED="1703036366606" ID="ID_158667477" MODIFIED="1703036382172" TEXT="mit DUMP-Meldungen scheitert der Lauf fast immer">
<node CREATED="1703036383571" ID="ID_1823541103" MODIFIED="1703036397933" TEXT="wegen der Contention verschiebt sich die Planung extrem"/>
<node CREATED="1703036406055" ID="ID_586527909" MODIFIED="1703036416315" TEXT="die meisten L&#xe4;ufe rei&#xdf;en irgendwann die Deadline von 30ms"/>
<node CREATED="1703036398665" ID="ID_243657001" MODIFIED="1703036404853" TEXT="manchmal klappts aber trotzdem"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1702944889122" ID="ID_816186443" MODIFIED="1702944903543" TEXT="Berechnung der systematisch-erwartbaren Ausf&#xfc;hrungszeit">
<icon BUILTIN="flag-yellow"/>
@ -105531,7 +106370,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1702945821165" ID="ID_1146014568" MODIFIED="1702945824989" TEXT="Thema Contention">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1702945832139" ID="ID_942987067" MODIFIED="1702945845515" TEXT="Contention-Zustand an die WorkForce durchgeben">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1702945832139" ID="ID_942987067" MODIFIED="1703035807742" TEXT="Contention-Zustand an die WorkForce durchgeben">
<linktarget COLOR="#fb204a" DESTINATION="ID_942987067" ENDARROW="Default" ENDINCLINATION="375;-22;" ID="Arrow_ID_1292760807" SOURCE="ID_1318995245" STARTARROW="None" STARTINCLINATION="223;11;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1702945846497" ID="ID_774226636" MODIFIED="1702945855277" TEXT="einfaches Stufen-Schema dort implementieren">