Scheduler: devise scheme for load control
- organise by principles rather than implementing a mechanism - keep the first version simple yet flexible - conduct empiric research under synthetic load Basic scheme: - tend for next - classify free capacity - scattered targeted wait
This commit is contained in:
parent
ccf970eaee
commit
e5638119f5
7 changed files with 575 additions and 7 deletions
|
|
@ -559,7 +559,7 @@ namespace gear {
|
|||
* Activity deadlines are evenly spaced, for a simple heuristic we can just divide
|
||||
* actual Epoch duration by the fill factor (longer Epoch => less capacity).
|
||||
* To avoid control oscillations however, it seems prudent to use damping by
|
||||
* an exponential moving average, nominally over #AVERAGE_EPOCHS.
|
||||
* an exponential moving average, nominally over #Strategy::averageEpochs().
|
||||
* The current epochStep_ is assumed to be such a moving average,
|
||||
* and will be updated accordingly.
|
||||
*/
|
||||
|
|
@ -578,7 +578,7 @@ namespace gear {
|
|||
// damped adjustment towards ideal size
|
||||
double contribution = double(_raw(actualLen)) / _raw(epochStep_) / adjust;
|
||||
|
||||
// Exponential MA: mean ≔ mean * (N-1)/N + newVal/N
|
||||
// Exponential MA: mean ≔ mean · (N-1)/N + newVal/N
|
||||
auto N = Strategy::averageEpochs();
|
||||
double avgFactor = (contribution + N-1) / N;
|
||||
adjustEpochStep (avgFactor);
|
||||
|
|
|
|||
|
|
@ -29,9 +29,9 @@
|
|||
** scenarios, a wide array of load patterns may be encountered, complicating
|
||||
** any generic performance optimisation. Rather, the participating components
|
||||
** are designed to withstand a short-term imbalance, expecting that general
|
||||
** engine parametrisation will be adjusted based on moving averages.
|
||||
** engine parametrisation will be adjusted based on moving averages.
|
||||
**
|
||||
** @see scheduler.hpp
|
||||
** @see scheduler.hpp
|
||||
** @see SchedulerStress_test
|
||||
**
|
||||
** @todo WIP-WIP-WIP 10/2023 »Playback Vertical Slice«
|
||||
|
|
@ -45,11 +45,13 @@
|
|||
|
||||
#include "lib/error.hpp"
|
||||
//#include "vault/gear/block-flow.hpp"
|
||||
#include "vault/gear/activity-lang.hpp"
|
||||
//#include "lib/symbol.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
//#include "lib/util.hpp"
|
||||
|
||||
//#include <string>
|
||||
#include <chrono>
|
||||
|
||||
|
||||
namespace vault{
|
||||
|
|
@ -57,6 +59,7 @@ namespace gear {
|
|||
|
||||
// using util::isnil;
|
||||
// using std::string;
|
||||
using std::chrono::microseconds;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -75,6 +78,43 @@ namespace gear {
|
|||
LoadController (BlockFlowAlloc& blockFlow)
|
||||
: allocator_{blockFlow}
|
||||
{ }
|
||||
|
||||
|
||||
/**
|
||||
* @note const and non-grooming
|
||||
*/
|
||||
bool
|
||||
tendedNext() const
|
||||
{
|
||||
UNIMPLEMENTED ("Predicate to determine if next foreseeable Activity was tended for");
|
||||
}
|
||||
|
||||
void
|
||||
tendNext()
|
||||
{
|
||||
UNIMPLEMENTED ("tend for the next foreseeable Activity");
|
||||
}
|
||||
|
||||
enum
|
||||
Capacity {SPINTIME ///< imminent activities
|
||||
,NEARTIME ///< capacity for active processing required
|
||||
,WORKTIME ///< typical stable work task rhythm expected
|
||||
,IDLETIME ///< time to go to sleep
|
||||
};
|
||||
|
||||
Capacity
|
||||
classifyCapacity() const
|
||||
{
|
||||
UNIMPLEMENTED ("establish a categorisation for available capacity");
|
||||
}
|
||||
|
||||
|
||||
microseconds
|
||||
scatteredDelayTime()
|
||||
{
|
||||
UNIMPLEMENTED ("establish a randomised targeted delay time");
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
** @see SchedulerInvocation Layer-1
|
||||
** @see SchedulerCommutator Layer-2
|
||||
**
|
||||
** @todo WIP-WIP-WIP 6/2023 »Playback Vertical Slice«
|
||||
** @todo WIP-WIP 10/2023 »Playback Vertical Slice«
|
||||
**
|
||||
*/
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ namespace gear {
|
|||
|
||||
/******************************************************//**
|
||||
* »Scheduler-Service« : coordinate render activities.
|
||||
* @todo WIP-WIP 6/2023
|
||||
* @todo WIP-WIP 10/2023
|
||||
* @see BlockFlow
|
||||
* @see SchedulerUsage_test
|
||||
*/
|
||||
|
|
@ -112,6 +112,16 @@ namespace gear {
|
|||
{ }
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
void
|
||||
ignite()
|
||||
{
|
||||
UNIMPLEMENTED("suicide");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
|
@ -169,6 +179,17 @@ namespace gear {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* send this thread into a targeted short-time wait.
|
||||
* @return how to proceed further with this worker
|
||||
*/
|
||||
activity::Proc
|
||||
scatteredDelay()
|
||||
{
|
||||
UNIMPLEMENTED("scattered short-term delay");
|
||||
}
|
||||
|
||||
|
||||
/** @internal expose a binding for Activity execution */
|
||||
class ExecutionCtx;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -32,6 +32,12 @@ END
|
|||
|
||||
|
||||
|
||||
TEST "Scheduler Load-Control" SchedulerLoadControl_test <<END
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
|
||||
PLANNED "Scheduler Integration" SchedulerService_test <<END
|
||||
return: 0
|
||||
END
|
||||
|
|
|
|||
109
tests/vault/gear/scheduler-load-control-test.cpp
Normal file
109
tests/vault/gear/scheduler-load-control-test.cpp
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
/*
|
||||
SchedulerLoadControl(Test) - verify scheduler load management facility
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2023, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
* *****************************************************/
|
||||
|
||||
/** @file scheduler-load-control-test.cpp
|
||||
** unit test \ref SchedulerLoadControl_test
|
||||
*/
|
||||
|
||||
|
||||
#include "lib/test/run.hpp"
|
||||
#include "vault/gear/load-controller.hpp"
|
||||
//#include "lib/time/timevalue.hpp"
|
||||
//#include "lib/format-cout.hpp"
|
||||
//#include "lib/util.hpp"
|
||||
|
||||
//#include <utility>
|
||||
|
||||
using test::Test;
|
||||
//using std::move;
|
||||
//using util::isSameObject;
|
||||
|
||||
|
||||
namespace vault{
|
||||
namespace gear {
|
||||
namespace test {
|
||||
|
||||
// using lib::time::FrameRate;
|
||||
// using lib::time::Offset;
|
||||
// using lib::time::Time;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*************************************************************************//**
|
||||
* @test verify behaviour patterns relevant for Scheduler load control.
|
||||
* @see SchedulerCommutator_test
|
||||
* @see SchedulerService_test
|
||||
* @see SchedulerStress_test
|
||||
*/
|
||||
class SchedulerLoadControl_test : public Test
|
||||
{
|
||||
|
||||
virtual void
|
||||
run (Arg)
|
||||
{
|
||||
simpleUsage();
|
||||
walkingDeadline();
|
||||
setupLalup();
|
||||
}
|
||||
|
||||
|
||||
/** @test TODO demonstrate a simple usage scenario
|
||||
* @todo WIP 10/23 ✔ define ⟶ 🔁 implement
|
||||
*/
|
||||
void
|
||||
simpleUsage()
|
||||
{
|
||||
BlockFlowAlloc bFlow;
|
||||
LoadController lcontrl{bFlow};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** @test TODO
|
||||
* @todo WIP 10/23 🔁 define ⟶ implement
|
||||
*/
|
||||
void
|
||||
walkingDeadline()
|
||||
{
|
||||
UNIMPLEMENTED ("walking Deadline");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** @test TODO
|
||||
* @todo WIP 10/23 🔁 define ⟶ implement
|
||||
*/
|
||||
void
|
||||
setupLalup()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** Register this test class... */
|
||||
LAUNCHER (SchedulerLoadControl_test, "unit engine");
|
||||
|
||||
|
||||
|
||||
}}} // namespace vault::gear::test
|
||||
|
|
@ -55,6 +55,7 @@ namespace test {
|
|||
* @see SchedulerActivity_test
|
||||
* @see SchedulerInvocation_test
|
||||
* @see SchedulerCommutator_test
|
||||
* @see SchedulerLoadControl_test
|
||||
*/
|
||||
class SchedulerService_test : public Test
|
||||
{
|
||||
|
|
|
|||
|
|
@ -80558,7 +80558,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#435e98" CREATED="1693317527566" ID="ID_393706947" MODIFIED="1693317722746" TEXT="Fazit">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1693317530251" ID="ID_496219214" MODIFIED="1693317616273" TEXT="betrachte die Redundanz als Spielraum zur Beweglichkeit"/>
|
||||
<node CREATED="1693317530251" ID="ID_496219214" MODIFIED="1697937932990" TEXT="betrachte die Redundanz als Spielraum zur Beweglichkeit">
|
||||
<arrowlink COLOR="#5adeb2" DESTINATION="ID_598148359" ENDARROW="Default" ENDINCLINATION="52;-139;" ID="Arrow_ID_155448561" STARTARROW="None" STARTINCLINATION="638;34;"/>
|
||||
</node>
|
||||
<node CREATED="1693317673355" ID="ID_258047795" MODIFIED="1693317696718" TEXT="Zeitfenster-Parameter sollten innerhalb eines Terms konstant sein"/>
|
||||
<node CREATED="1693317617453" ID="ID_812974850" MODIFIED="1693317653450" TEXT="auf die kontextuellen Parameter kann weitgehend verzichtet werden"/>
|
||||
<node CREATED="1693317661471" ID="ID_709533668" MODIFIED="1693317672145" TEXT="es wird stets der nächst greifbare Parameter verwendet"/>
|
||||
|
|
@ -82122,6 +82124,314 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1687737433506" ID="ID_1608121280" MODIFIED="1687737442698" TEXT="einfacher Activity-Transport">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697933690995" ID="ID_872890784" MODIFIED="1697933814964" TEXT="elementare Betriebssteuerung">
|
||||
<linktarget COLOR="#ff4e63" DESTINATION="ID_872890784" ENDARROW="Default" ENDINCLINATION="-1829;161;" ID="Arrow_ID_1982313538" SOURCE="ID_1583501788" STARTARROW="None" STARTINCLINATION="-1150;-47;"/>
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<node CREATED="1697933830568" ID="ID_425307167" MODIFIED="1697933841004" TEXT="Anforderung">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1697933847838" ID="ID_52485323" MODIFIED="1697933874566" TEXT="wenn Activities anstehen, muß der Scheduler laufen">
|
||||
<node CREATED="1697935493785" ID="ID_1808648428" MODIFIED="1697935513050" TEXT="der initiale Zünd-Impuls dafür muß von außen kommen"/>
|
||||
<node CREATED="1697935584350" ID="ID_1788226279" MODIFIED="1697935603608" TEXT="sobald er läuft, muß er auch seinen eigenen »Tick« aktivieren"/>
|
||||
</node>
|
||||
<node CREATED="1697934020751" ID="ID_1139695361" MODIFIED="1697934032818" TEXT="wenn nichts mehr passiert, kann er sich deaktivieren">
|
||||
<node CREATED="1697935611257" ID="ID_436115424" MODIFIED="1697935652768" TEXT="zunächst werden die Worker schlafen geschickt">
|
||||
<node CREATED="1697935685080" ID="ID_1125666331" MODIFIED="1697935700776" TEXT="Vorsicht: vorausschauend handeln"/>
|
||||
<node CREATED="1697935701613" ID="ID_601914515" MODIFIED="1697935798105" TEXT="der Schlaf-Zyklus soll relativ lang sein">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
um das System nicht unnötig zu belasten
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697935831136" ID="ID_328104821" MODIFIED="1697935849059" TEXT="polling workers stellen aber selbst eine Belastung dar">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1697938335223" ID="ID_490005829" MODIFIED="1697938354584" TEXT="und zwar wegen Contention und generellen OS-Resourcen"/>
|
||||
<node CREATED="1697938355148" ID="ID_1006912313" MODIFIED="1697938372181" TEXT="aber nicht kurzzeitig — dafür sind die Worker ja da"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697935894004" ID="ID_1878267826" MODIFIED="1697935929293" TEXT="⟹ muß also eine explizite Verzögerung einbauen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1697938430466" ID="ID_1280875799" MODIFIED="1697941924835" TEXT="Stufen-Schema">
|
||||
<linktarget COLOR="#7f95ab" DESTINATION="ID_1280875799" ENDARROW="Default" ENDINCLINATION="10;121;" ID="Arrow_ID_1356077365" SOURCE="ID_1342732339" STARTARROW="None" STARTINCLINATION="284;21;"/>
|
||||
<node CREATED="1697938486782" ID="ID_1684596361" MODIFIED="1697938500100" TEXT="kurzfristig ⟶ yield-wait"/>
|
||||
<node CREATED="1697938912817" ID="ID_1435841099" MODIFIED="1697938952106" TEXT="zeitnah ⟶ gezielte Pause">
|
||||
<node CREATED="1697939077160" ID="ID_1342346924" MODIFIED="1697939096276" TEXT="ein Thread-sleep in der Work-Function"/>
|
||||
<node CREATED="1697939104567" ID="ID_1909227046" MODIFIED="1697939121793" TEXT="auf kurz hinter die nächste Activity geimed"/>
|
||||
</node>
|
||||
<node CREATED="1697939007756" ID="ID_1814410393" MODIFIED="1697939068200" TEXT="idle-Time ⟶ schlafen schicken"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1697935657451" ID="ID_1200603474" MODIFIED="1697935676437" TEXT="diese beenden sich dann nach einiger Zeit von selbst">
|
||||
<node CREATED="1697936056094" ID="ID_1569058603" MODIFIED="1697936822180" TEXT="Scheduler muß dafür sorgen, daß das auch möglich wird">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Das bedeutet: bei nur vereinzelt vorhandenen Tasks dürfen diese nicht zufällig verteilt werden (sonst bleiben alle Worker am Leben). Vielmehr muß bevorzugt derjenige den nächsten Task bekommen, der ohnehin<i>  grade gearbeitet hat</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1697936111527" ID="ID_1844164309" MODIFIED="1697941569266" TEXT="⟹ muß also einen »Idler« anders behandeln als einen grade aktiven Worker">
|
||||
<linktarget COLOR="#6463c4" DESTINATION="ID_1844164309" ENDARROW="Default" ENDINCLINATION="-359;14;" ID="Arrow_ID_1762094389" SOURCE="ID_387348315" STARTARROW="None" STARTINCLINATION="12;-45;"/>
|
||||
<node CREATED="1697936891271" ID="ID_816798666" MODIFIED="1697939174942">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Idler: findet <i>direkt beim Eintritt</i> in pullWork() nichts zu tun vor
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1697936959055" ID="ID_687912678" MODIFIED="1697939181596">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Worker: findet <i>nach </i>einem Work-Zyklus nichts zu tun vor
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1697936154433" ID="ID_1597069116" MODIFIED="1697936164028" TEXT="schließlich bleibt nur noch der Tick übrig">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697936179454" ID="ID_446529044" MODIFIED="1697936204128" TEXT="der Tick muß erkennen, daß allein auf der Welt ist">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697936205251" ID="ID_131464995" MODIFIED="1697936223185" TEXT="das ist so nicht offensichtlich">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1697936244473" ID="ID_671338782" MODIFIED="1697936373448" TEXT="der Tick kann feststellen, daß nur er selber als nächstes ansteht">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1697935467508" ID="ID_370682037" MODIFIED="1697935479215" TEXT="Reserve-Kapazität bei Bedarf aktivieren">
|
||||
<node CREATED="1697937331101" ID="ID_834796842" MODIFIED="1697938265914" TEXT="Scheduler muß (im Tick) erkennen, daß er überlastet ist">
|
||||
<arrowlink COLOR="#3c7bbb" DESTINATION="ID_250349956" ENDARROW="Default" ENDINCLINATION="15;-74;" ID="Arrow_ID_776284276" STARTARROW="None" STARTINCLINATION="190;10;"/>
|
||||
</node>
|
||||
<node CREATED="1697937401803" ID="ID_377144590" MODIFIED="1697938280621" TEXT="Ansatz: moving-Average über die Schedule-Verzögerung">
|
||||
<node CREATED="1697937428529" ID="ID_1566747005" MODIFIED="1697937445897" TEXT="feststellbar wenn wir tatsächlich einen Dispatch machen"/>
|
||||
<node CREATED="1697937446741" ID="ID_976027856" MODIFIED="1697937461935" TEXT="um wieviel ist "now" hinter der geplanten Water-Level-Zeit?">
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1697937478170" ID="ID_1099620146" MODIFIED="1697937490843" TEXT="liegen diese Informationen überhaupt vor?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1697937571163" ID="ID_1306343127" MODIFIED="1697937694750" TEXT="normalerweise nicht">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...weil der water-level ein internes Implementierungsdetail von Layer-1 ist, und der eigentliche Dispatch mit "now" erfolgt. Möglicherweise hab' ich mich da verrant — andererseits wollte ich ganz explizit nicht überall und in jeder Activity auch noch eine Startzeit mitschleppen, sondern habe mich darauf verlegt, diese Information <i>kontextuell zu handhaben</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1697937696156" ID="ID_174871580" MODIFIED="1697937707679" TEXT="aber bei einem POST schon">
|
||||
<node COLOR="#435e98" CREATED="1697937859072" ID="ID_598148359" MODIFIED="1697938012371" TEXT="redundante Startzeit-Info zahlt sich nun aus">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...und ich hatte kürzlich noch solche Zweifel ob das Design komplett entgleist, habe mich dann aber entschieden, locker zu lassen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<linktarget COLOR="#5adeb2" DESTINATION="ID_598148359" ENDARROW="Default" ENDINCLINATION="52;-139;" ID="Arrow_ID_155448561" SOURCE="ID_496219214" STARTARROW="None" STARTINCLINATION="638;34;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697938044605" ID="ID_230946166" MODIFIED="1697938065691" TEXT="geeigneten Punkt für diese Beobachtung finden">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1697938180363" ID="ID_250349956" MODIFIED="1697938258083" TEXT="Trigger/Schwellwert + freie Kapazität ⟹ hochfahren">
|
||||
<linktarget COLOR="#3c7bbb" DESTINATION="ID_250349956" ENDARROW="Default" ENDINCLINATION="15;-74;" ID="Arrow_ID_776284276" SOURCE="ID_834796842" STARTARROW="None" STARTINCLINATION="190;10;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697939318387" ID="ID_19803713" MODIFIED="1697939337745" TEXT="Gefahr: alle Worker zwar aktivert aber derzeit schlafend">
|
||||
<icon BUILTIN="clanbomber"/>
|
||||
<node CREATED="1697939343479" ID="ID_1211423451" MODIFIED="1697939452988" TEXT="⟹ dann wäre das System ohne Handlungsmöglichkeit zeitweise geblockt"/>
|
||||
<node CREATED="1697942238583" ID="ID_939651320" MODIFIED="1697942253202" TEXT="Abhilfe">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1697942254924" ID="ID_112390329" MODIFIED="1697979569952" TEXT="Warte-Zyklen zufällig verteilen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
damit im Schnitt jedes 1/Nte - Warte-Intervall sich ein Worker meldet
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node CREATED="1697979636585" ID="ID_860834763" MODIFIED="1697979662307" TEXT="die Startpunkte der Idle-Zyklen auf die Idle-Periode verteilen"/>
|
||||
<node CREATED="1697979662919" ID="ID_1977764043" MODIFIED="1697979714012" TEXT="aber analog auch warte-Pausen auf die zeitnah-Phase verteilen"/>
|
||||
</node>
|
||||
<node CREATED="1697942340409" ID="ID_483764419" MODIFIED="1697942351380" TEXT="mit hinreichend Puffer längerfristig vorplanen"/>
|
||||
<node CREATED="1697942899578" ID="ID_1831185639" MODIFIED="1697942954171" TEXT="zeitnah-Phase sinnvoll bemessen">
|
||||
<node CREATED="1697943207013" ID="ID_461693614" MODIFIED="1697943398859" TEXT="nur höchstens so lang wie man problemlos verschwenden kann">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
denn: innerhalb der zeitnah-Phase wird jeder verfügbare worker per gezieltem Schlaf auf die nächste headTime gesetzt, und damit ist er bis dahin geblockt. Also sollte es extrem unwahrscheinlich sein, daß inzwischen so kurzfristig noch was dazwischen geplant wird
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1697943528922" ID="ID_1864150010" MODIFIED="1697943563874" TEXT="aber lang genug um kurzfristiges Polling, re-Scheduliing und Staffelungen abzudecken"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697979975717" ID="ID_1427794703" MODIFIED="1697980022395" TEXT="falls das nicht genügt ⟶ den idle-Wait unterbrechbar machen">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697940307771" ID="ID_844059029" MODIFIED="1697940319855" TEXT="Regulierungs-Schema (1.Wurf)">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1697940394533" ID="ID_785288479" MODIFIED="1697940402312" TEXT="Kriterium »nichts zu tun«">
|
||||
<node CREATED="1697940405507" ID="ID_994386789" MODIFIED="1697940450809" TEXT="hierzu den Abstand zur headTime beachten!"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697941259810" ID="ID_1031482347" MODIFIED="1697980089996" TEXT="den »tended level« merken">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1697941294460" ID="ID_203013250" MODIFIED="1697941353814" TEXT="einen working Worker auf die headTime zielen"/>
|
||||
<node CREATED="1697941360345" ID="ID_91924483" MODIFIED="1697941370127" TEXT="dieser ist damit schon für den nächsten Task vorgemerkt"/>
|
||||
<node CREATED="1697941370860" ID="ID_30634920" MODIFIED="1697941385461" TEXT="dann kann der tendedLevel dorthin gesetzt werden"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697980065968" ID="ID_521731162" MODIFIED="1697980081914" TEXT="Vorsicht: setzt Grooming-Token voraus">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1697941504300" ID="ID_523971112" MODIFIED="1697941543535" TEXT="headTime == tendedLevel und > zeitnah ⟶ nichts zu tun"/>
|
||||
<node CREATED="1697941894113" ID="ID_1342732339" MODIFIED="1697941933095" TEXT="< zeitnah ⟹ Stufen-Schema anwenden">
|
||||
<arrowlink COLOR="#7f95ab" DESTINATION="ID_1280875799" ENDARROW="Default" ENDINCLINATION="10;121;" ID="Arrow_ID_1356077365" STARTARROW="None" STARTINCLINATION="284;21;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1697940327885" ID="ID_387348315" MODIFIED="1697941569266" TEXT="Unterscheidung working / idle">
|
||||
<arrowlink COLOR="#6463c4" DESTINATION="ID_1844164309" ENDARROW="Default" ENDINCLINATION="-359;14;" ID="Arrow_ID_1762094389" STARTARROW="None" STARTINCLINATION="12;-45;"/>
|
||||
<node CREATED="1697941581727" ID="ID_1655948334" MODIFIED="1697941591937" TEXT="working (=after work)">
|
||||
<node CREATED="1697941593803" ID="ID_1548473253" MODIFIED="1697941694724" TEXT="headTime != tendedLevel ⟹ address headTime"/>
|
||||
<node CREATED="1697941696039" ID="ID_1607237016" MODIFIED="1697941806125" TEXT="else: send to random delay < idleTime">
|
||||
<node CREATED="1697941970643" ID="ID_344346872" MODIFIED="1697941987290" TEXT="das soll für gleichmäßige Verteilung der Idler sorgen"/>
|
||||
<node CREATED="1697941988288" ID="ID_651724736" MODIFIED="1697942020800" TEXT="wenn sie nach dem random Delay kommen und es ist nichts zu tun ⟹ Schlaf"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1697941808823" ID="ID_1987890221" MODIFIED="1697941818519" TEXT="idle (= enter work)">
|
||||
<node CREATED="1697941851251" ID="ID_1516348817" MODIFIED="1697941880419" TEXT="if not tendedLevel ⟹ address headTime"/>
|
||||
<node CREATED="1697941881102" ID="ID_1281507935" MODIFIED="1697941890218" TEXT="else: switch to sleep"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#10425c" CREATED="1697979756658" ID="ID_373117026" MODIFIED="1697979894501" TEXT="Prinzipien">
|
||||
<font NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697979763457" ID="ID_921223140" MODIFIED="1697979838170" TEXT="einfach halten und empririsch vorgehen">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1697979793341" ID="ID_1889195922" MODIFIED="1697982185048" TEXT="keine »Mechanismen« bauen">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1697979808075" ID="ID_95576898" MODIFIED="1697982191396" TEXT="stattdessen: generische Prinzipien">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697979825353" ID="ID_475190835" MODIFIED="1697982176624" TEXT="Punkte für Flexibilität vorsehen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697979852789" ID="ID_925253615" MODIFIED="1697982166711" TEXT="statistische Untersuchungen">
|
||||
<arrowlink COLOR="#ffd3a8" DESTINATION="ID_1502196172" ENDARROW="Default" ENDINCLINATION="-417;-573;" ID="Arrow_ID_18099677" STARTARROW="None" STARTINCLINATION="-1881;175;"/>
|
||||
<icon BUILTIN="bell"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1697982199141" ID="ID_921733297" MODIFIED="1697982257689" TEXT="tended-Next Activity">
|
||||
<node CREATED="1697982264012" ID="ID_432697255" MODIFIED="1697982325736" TEXT="der nächst absehbaren Activity im Voraus einen Worker vormerken"/>
|
||||
<node CREATED="1697982394971" ID="ID_298295774" MODIFIED="1697982411264" TEXT="die sonstige frei werdene Kapazität grob kategorisieren"/>
|
||||
</node>
|
||||
<node CREATED="1697982413572" ID="ID_1701704976" MODIFIED="1697982424659" TEXT="Wartezyklen randomisieren"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697982430798" ID="ID_858120344" MODIFIED="1697982440269" TEXT="Implementierung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697982445677" ID="ID_1503747441" MODIFIED="1697982460315" TEXT="Ankerpunkte">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1697982488254" ID="ID_1839282150" MODIFIED="1697982492138" TEXT="incomingCapacity"/>
|
||||
<node CREATED="1697982492782" ID="ID_1050821331" MODIFIED="1697982497641" TEXT="outgoingCapacity"/>
|
||||
<node CREATED="1697982575563" ID="ID_1770606344" MODIFIED="1697982580261" TEXT="dispatchedCapacity"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697982589257" HGAP="11" ID="ID_1783139757" MODIFIED="1697982614929" TEXT="pro-forma in den LoadController legen" VSHIFT="9">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697982455236" ID="ID_645321047" MODIFIED="1697982460315" TEXT="Schemata">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697982678423" ID="ID_77969589" MODIFIED="1697983174220" TEXT="tendNext">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697982717584" ID="ID_267473149" MODIFIED="1697983179411" TEXT="Prüf-Prädikat: tendedNext()">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1697982757371" ID="ID_1084006128" MODIFIED="1697983275515" TEXT="const und non-grooming"/>
|
||||
<node CREATED="1697983183366" ID="ID_1016039063" MODIFIED="1697983192701" TEXT="Zugriff auf headTime und Vergleich"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697983155214" ID="ID_1677472042" MODIFIED="1697983174220" TEXT="classifyCapacity">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1697985093803" ID="ID_1553570724" MODIFIED="1697985096031" TEXT="enum">
|
||||
<node CREATED="1697985096625" ID="ID_1387570892" MODIFIED="1697985176660" TEXT="SPINTIME"/>
|
||||
<node CREATED="1697985096625" ID="ID_1218749290" MODIFIED="1697985105934" TEXT="NEARTIME"/>
|
||||
<node CREATED="1697985096625" ID="ID_1654025176" MODIFIED="1697985108469" TEXT="WORKTIME"/>
|
||||
<node CREATED="1697985096625" ID="ID_196379275" MODIFIED="1697985110981" TEXT="IDLETIME"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697983292684" ID="ID_1923883572" MODIFIED="1697983303707" TEXT="scatteredDelay">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1697983567535" ID="ID_567326127" MODIFIED="1697983640429" TEXT="ist eine Dispatch-Funktion">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
man schickt einen Worker in »scattered delay«
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1697983591252" ID="ID_777679840" MODIFIED="1697983596782" TEXT="liefert activity::PROC"/>
|
||||
<node CREATED="1697983597603" ID="ID_1430310887" MODIFIED="1697983605069" TEXT="führt die Verzögerung unmittelbar aus"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697983546449" ID="ID_1801117774" MODIFIED="1697983563416" TEXT="scatteredDelayTime()">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697982436029" ID="ID_288711039" MODIFIED="1697982440270" TEXT="Test">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1687738213842" ID="ID_683259902" MODIFIED="1687738250423" TEXT="Payload: ActOrder">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1687738222176" ID="ID_777939699" MODIFIED="1687738267070" TEXT="»waterlevel« für Zeit-Ordnung">
|
||||
|
|
@ -82133,6 +82443,21 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697982818498" ID="ID_136482882" MODIFIED="1697982841387" TEXT="Deadline berücksichtigen ">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1697982844409" ID="ID_1374530988" MODIFIED="1697982854041" TEXT="im Datenrecord mitführen"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697982854605" ID="ID_651171432" MODIFIED="1697982875378" TEXT="Zusicherung: kein Zugriff auf verfallene Activities">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1697982880930" ID="ID_1142296301" MODIFIED="1697982897699" TEXT="ist tragendes Element der Speicherverwaltung"/>
|
||||
<node CREATED="1697982898279" ID="ID_1086820599" MODIFIED="1697982926481" TEXT="verfallene Activities dürfen wiederverwendet werden">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697982938058" ID="ID_1655832509" MODIFIED="1697983074142" TEXT="Problem: Deadlines für non-timebound modes">
|
||||
<arrowlink COLOR="#fe6147" DESTINATION="ID_917322834" ENDARROW="Default" ENDINCLINATION="631;-14;" ID="Arrow_ID_1361409427" STARTARROW="None" STARTINCLINATION="953;54;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1687738237630" ID="ID_706592774" MODIFIED="1687738266530" TEXT="Pointer auf die Activity (im BlockFlow)">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
|
|
@ -87086,6 +87411,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1697979852789" ID="ID_256258060" MODIFIED="1697982148553" TEXT="dient auch dem Aufbau einer Perfomance-Meßeinrichtung">
|
||||
<arrowlink COLOR="#ffd3a8" DESTINATION="ID_1502196172" ENDARROW="Default" ENDINCLINATION="-417;-573;" ID="Arrow_ID_1874842097" STARTARROW="None" STARTINCLINATION="-1430;70;"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697734151893" ID="ID_674126526" MODIFIED="1697734162364" TEXT="Problem: Laststeuerung">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1697734165115" ID="ID_1491991406" MODIFIED="1697734182886" TEXT="das sonstige System darf nicht in Sättigung gehen"/>
|
||||
|
|
@ -88314,6 +88642,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1689204331764" ID="ID_578018270" MODIFIED="1689555121736" TEXT="vorerst einfache gedämpfte Mittelung">
|
||||
<linktarget COLOR="#6e7c9b" DESTINATION="ID_578018270" ENDARROW="Default" ENDINCLINATION="295;548;" ID="Arrow_ID_1545475117" SOURCE="ID_601531168" STARTARROW="None" STARTINCLINATION="1465;-194;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1689354964927" ID="ID_1525931195" MODIFIED="1689354982888" TEXT="mir schwebt ein exponentielles moving-average vor"/>
|
||||
<node CREATED="1689355051116" ID="ID_214862798" MODIFIED="1689355076675" TEXT="Ansatz">
|
||||
|
|
@ -89312,6 +89641,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034805714" ID="ID_601531168" MODIFIED="1685034823237" TEXT="gewichtete moving-Averages">
|
||||
<arrowlink COLOR="#6e7c9b" DESTINATION="ID_578018270" ENDARROW="Default" ENDINCLINATION="295;548;" ID="Arrow_ID_1545475117" STARTARROW="None" STARTINCLINATION="1465;-194;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034336329" ID="ID_1204987843" MODIFIED="1685034344505" TEXT="langlebige Instanzen">
|
||||
|
|
@ -89399,6 +89729,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693238542895" ID="ID_917322834" MODIFIED="1693238802819" TEXT="Deadlines for »free wheeling« and background rendering">
|
||||
<arrowlink COLOR="#e7367a" DESTINATION="ID_1212740184" ENDARROW="Default" ENDINCLINATION="12;-24;" ID="Arrow_ID_1622880291" STARTARROW="None" STARTINCLINATION="104;5;"/>
|
||||
<linktarget COLOR="#683034" DESTINATION="ID_917322834" ENDARROW="Default" ENDINCLINATION="445;-22;" ID="Arrow_ID_57467075" SOURCE="ID_1858134894" STARTARROW="None" STARTINCLINATION="557;24;"/>
|
||||
<linktarget COLOR="#fe6147" DESTINATION="ID_917322834" ENDARROW="Default" ENDINCLINATION="631;-14;" ID="Arrow_ID_1361409427" SOURCE="ID_1655832509" STARTARROW="None" STARTINCLINATION="953;54;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -89637,6 +89968,53 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697980200719" ID="ID_1502196172" MODIFIED="1697982166711" TEXT="Lastverhalten empirisch feststellen">
|
||||
<linktarget COLOR="#ffd3a8" DESTINATION="ID_1502196172" ENDARROW="Default" ENDINCLINATION="-417;-573;" ID="Arrow_ID_18099677" SOURCE="ID_925253615" STARTARROW="None" STARTINCLINATION="-1881;175;"/>
|
||||
<linktarget COLOR="#ffd3a8" DESTINATION="ID_1502196172" ENDARROW="Default" ENDINCLINATION="-417;-573;" ID="Arrow_ID_1874842097" SOURCE="ID_256258060" STARTARROW="None" STARTINCLINATION="-1430;70;"/>
|
||||
<icon BUILTIN="bell"/>
|
||||
<node CREATED="1697980233510" ID="ID_1582480940" MODIFIED="1697980238366" TEXT="Lastmuster">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1697980239834" ID="ID_541871417" MODIFIED="1697980244005" TEXT="Leerlauf"/>
|
||||
<node CREATED="1697980280900" ID="ID_1253634670" MODIFIED="1697980373404" TEXT="unabhängige Vollast"/>
|
||||
<node CREATED="1697980419057" ID="ID_629834995" MODIFIED="1697980432523" TEXT="leichtverkettete Vollast"/>
|
||||
<node CREATED="1697980433190" ID="ID_1880666855" MODIFIED="1697980437947" TEXT="hochverkettete Vollast"/>
|
||||
<node CREATED="1697980460764" ID="ID_642586467" MODIFIED="1697980462399" TEXT="Überlast"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697981112565" ID="ID_736511181" MODIFIED="1697981121972" TEXT="Meßeinrichtung aufbauen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697981124868" ID="ID_1995486807" MODIFIED="1697981139410" TEXT="Meta-Test: Zusatz-Last durch Meßeinrichtung feststellen">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697981140392" ID="ID_830208203" MODIFIED="1697981434151" TEXT="Erfassungspunkte und zu erfassende Daten festlegen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1697981442202" ID="ID_1994085081" MODIFIED="1697981536989" TEXT="Maßgabe: statistische Auswertungen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
⟹ bedeutet für jedes Ereignis auch eine Kategorisierung zu erfassen, so daß dann in der Auswertung später proportionale Anteile beobachtbar werden
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node CREATED="1697981581895" ID="ID_1199294273" MODIFIED="1697981641259" TEXT="wieviel Wartezeit verbringt ein aktiver Worker?"/>
|
||||
<node CREATED="1697981666612" ID="ID_769519844" MODIFIED="1697981680252" TEXT="in welchen Phasen verbringt er diese Zeit?"/>
|
||||
<node CREATED="1697981689097" ID="ID_16365365" MODIFIED="1697981718933" TEXT="was ist das ∅ Prüfintervall eines schlafenden Workers"/>
|
||||
<node CREATED="1697981742690" ID="ID_1056869673" MODIFIED="1697981774561" TEXT="welcher Anteil der Schläfer wird schließlich terminiert?"/>
|
||||
<node CREATED="1697981788044" ID="ID_1133300561" MODIFIED="1697981842992" TEXT="wie lange ist die kumuliere Schlafzeit ∅ für terminierte / wiedererweckte Schläfer?"/>
|
||||
<node CREATED="1697981923290" ID="ID_1333367151" MODIFIED="1697981932364" TEXT="wann / wie lange war das System in Vollast?"/>
|
||||
<node CREATED="1697981980202" ID="ID_162807330" MODIFIED="1697982002392" TEXT="waiting-due time ∅ der Activities im Scheduler"/>
|
||||
<node CREATED="1697982054792" ID="ID_712555328" MODIFIED="1697982065291" TEXT="wieviele Activities werden von Schläfern übernommen"/>
|
||||
<node CREATED="1697982086540" ID="ID_1123632550" MODIFIED="1697982105925" TEXT="waiting-due time speziell wenn von Schläfer übernommen"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697981156144" ID="ID_190534528" MODIFIED="1697981425435" TEXT="Datenerfassung über EngineObserver realisieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -90423,9 +90801,18 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1697933502816" ID="ID_1155890066" MODIFIED="1697933560271" TEXT="Laststeuerung">
|
||||
<linktarget COLOR="#7d55a6" DESTINATION="ID_1155890066" ENDARROW="Default" ENDINCLINATION="-78;310;" ID="Arrow_ID_1724375377" SOURCE="ID_338601496" STARTARROW="None" STARTINCLINATION="-372;-24;"/>
|
||||
<node CREATED="1697933512163" ID="ID_394926401" MODIFIED="1697933535592" TEXT="Zeitgesteuertes Rendern">
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697933639127" ID="ID_1583501788" MODIFIED="1697933814964" TEXT="(vorläufig) einfache Scheduler-Steuerung">
|
||||
<arrowlink COLOR="#ff4e63" DESTINATION="ID_872890784" ENDARROW="Default" ENDINCLINATION="-1829;161;" ID="Arrow_ID_1982313538" STARTARROW="None" STARTINCLINATION="-1150;-47;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1693238644990" ID="ID_1196672113" MODIFIED="1693238729300" TEXT="Laststeuerung für »free-wheeling« / background render">
|
||||
<arrowlink COLOR="#965d71" DESTINATION="ID_1960804622" ENDARROW="Default" ENDINCLINATION="286;89;" ID="Arrow_ID_494620026" STARTARROW="None" STARTINCLINATION="2087;110;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693840934074" ID="ID_571516538" MODIFIED="1693840995972" TEXT="Render-Engie Lebenszyklus: start / stop">
|
||||
<linktarget COLOR="#d87cae" DESTINATION="ID_571516538" ENDARROW="Default" ENDINCLINATION="-569;36;" ID="Arrow_ID_490264910" SOURCE="ID_1011982391" STARTARROW="None" STARTINCLINATION="-116;14;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
@ -90519,6 +90906,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1693841364032" ID="ID_951861985" MODIFIED="1693841380195" TEXT="regulieren/skalieren">
|
||||
<linktarget COLOR="#7e4d5e" DESTINATION="ID_951861985" ENDARROW="Default" ENDINCLINATION="-213;-26;" ID="Arrow_ID_301980510" SOURCE="ID_187251325" STARTARROW="None" STARTINCLINATION="186;14;"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697933441324" ID="ID_338601496" MODIFIED="1697933566854" TEXT="gehört zur Scheduler-Laststeuerung">
|
||||
<arrowlink COLOR="#7d55a6" DESTINATION="ID_1155890066" ENDARROW="Default" ENDINCLINATION="-78;310;" ID="Arrow_ID_1724375377" STARTARROW="None" STARTINCLINATION="-372;-24;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1693840260723" ID="ID_1171496185" MODIFIED="1693840333227" TEXT="lumiera_backend_init?">
|
||||
|
|
|
|||
Loading…
Reference in a new issue