Scheduler-test: implement base offset per node
...actually difficult to integrate into the existing scheme, which is entirely level-based. Can only be added to the individual Jobs, not to the planning and completion-jobs — which actually shouldn't be a problem, since it is beneficial to dispatch the planning runs earlier
This commit is contained in:
parent
54f238c510
commit
001aa829c5
2 changed files with 36 additions and 6 deletions
|
|
@ -1669,8 +1669,8 @@ namespace test {
|
|||
lib::UninitialisedDynBlock<ScheduleSpec> schedule_;
|
||||
|
||||
FrameRate levelSpeed_{1, SCHEDULE_LEVEL_STEP};
|
||||
FrameRate nodeSpeed_{1, SCHEDULE_NODE_STEP};
|
||||
FrameRate planSpeed_{1, SCHEDULE_PLAN_STEP};
|
||||
TimeVar nodeExpense_{SCHEDULE_NODE_STEP};
|
||||
double schedNotify_{SCHEDULE_NOTIFY? 1.0:0.0};
|
||||
bool schedDepends_{SCHEDULE_DEPENDENCY};
|
||||
uint blockLoadFactor_{2};
|
||||
|
|
@ -1696,7 +1696,7 @@ namespace test {
|
|||
{
|
||||
schedule_[idx] = scheduler_.defineSchedule(calcJob (idx,level))
|
||||
.manifestation(manID_)
|
||||
.startTime (jobStartTime(level))
|
||||
.startTime (jobStartTime(level, idx))
|
||||
.lifeWindow (deadline_)
|
||||
.post();
|
||||
}
|
||||
|
|
@ -1793,7 +1793,8 @@ namespace test {
|
|||
double
|
||||
getExpectedEndTime()
|
||||
{
|
||||
return _raw(startTimes_.back() - startTimes_.front());
|
||||
return _raw(startTimes_.back() - startTimes_.front()
|
||||
+ Duration{nodeExpense_}*chainLoad_.size());
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1840,7 +1841,7 @@ namespace test {
|
|||
ScheduleCtx&&
|
||||
withBaseExpense (microseconds fixedTime_per_node)
|
||||
{
|
||||
nodeSpeed_ = FrameRate{1, Duration{_uTicks(fixedTime_per_node)}};
|
||||
nodeExpense_ = _uTicks(fixedTime_per_node);
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
|
|
@ -2030,10 +2031,11 @@ namespace test {
|
|||
}
|
||||
|
||||
Time
|
||||
jobStartTime (size_t level)
|
||||
jobStartTime (size_t level, size_t nodeIDX =0)
|
||||
{
|
||||
ENSURE (level < startTimes_.size());
|
||||
return startTimes_[level];
|
||||
return startTimes_[level]
|
||||
+ nodeExpense_ * nodeIDX;
|
||||
}
|
||||
|
||||
Time
|
||||
|
|
|
|||
|
|
@ -107939,9 +107939,18 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704496590349" ID="ID_55304707" MODIFIED="1704496621212" TEXT="Node-ID mit in die Zeitbestimmung geben">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1704502374254" ID="ID_1148804575" MODIFIED="1704502440579" TEXT="und zwar nur als optionaler 2.Parameter">
|
||||
<linktarget COLOR="#5c6e82" DESTINATION="ID_1148804575" ENDARROW="Default" ENDINCLINATION="279;-12;" ID="Arrow_ID_1130714740" SOURCE="ID_261862992" STARTARROW="None" STARTINCLINATION="302;13;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1704498344371" ID="ID_33654612" MODIFIED="1704498363401" TEXT="nodeSpeed_ auf alle Schedules aufschlagen">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<node CREATED="1704502220043" ID="ID_596251248" MODIFIED="1704502237509" TEXT="paßt nicht gut in das insgesamt Level-basierte Planungs-Schema"/>
|
||||
<node CREATED="1704502239345" ID="ID_1983557540" MODIFIED="1704502271966" TEXT="da es ein Ctx-Parameter ist, kann man es nicht ohne Weiteres in das Zeitgerüst einarbeiten"/>
|
||||
<node CREATED="1704502325853" ID="ID_229349758" MODIFIED="1704502347414" TEXT="Node-Info ist bei der Vorberechung dieses Zeitgerüsts gar nicht (mehr) vorhanden"/>
|
||||
<node CREATED="1704502350330" ID="ID_261862992" MODIFIED="1704502440579" TEXT="⟹ kann man nur (optional) beim einzelnen Job direkt aufschlagen">
|
||||
<arrowlink COLOR="#5c6e82" DESTINATION="ID_1148804575" ENDARROW="Default" ENDINCLINATION="279;-12;" ID="Arrow_ID_1130714740" STARTARROW="None" STARTINCLINATION="302;13;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1704496625440" ID="ID_1513875198" MODIFIED="1704496631952" TEXT="Dependency-Planung">
|
||||
|
|
@ -110599,6 +110608,25 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1704130733890" ID="ID_922119452" MODIFIED="1704130743862" TEXT="Beobachtungen zum Lasttest-Setup">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1704502912253" ID="ID_1397490944" MODIFIED="1704502939942" TEXT="starke Fluktuationen">
|
||||
<node CREATED="1704502942058" ID="ID_709204137" MODIFIED="1704502965731" TEXT="verursacht durch Zusammentreffen von Planungs-Job und Node-wake-Up + Contention"/>
|
||||
<node CREATED="1704502966511" ID="ID_1561993195" MODIFIED="1704502993624" TEXT="wird aber danach wieder rasch aufgefangen, wenn genügend »Luft« im Schedule ist"/>
|
||||
<node CREATED="1704503002882" ID="ID_893513147" MODIFIED="1704503021717" TEXT="⟹ Überlastung zeigt sich indem diese Fluktuationen »durchschlagen«"/>
|
||||
</node>
|
||||
<node CREATED="1704503038702" ID="ID_1005585769" MODIFIED="1704503122646">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
die typische Test-Load ~ 500µs braucht im Scheduler-Kontext oft doppelt so lange als kalibriert
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue