Scheduler-test: attempt to find a viable Scheduler setup for this measurement
- better use a Test-Chain-Load without any dependencies - schedule all at once - employ instrumentation - use the inner »overall time« as dependent result variable The timing results now show an almost perfect linear dependency. Also the inner overall time seems to omit the setup and tear-down time. But other observed values (notably the avgConcurrency) do not line up
This commit is contained in:
parent
2556151304
commit
605d747b8d
4 changed files with 136 additions and 9 deletions
|
|
@ -461,7 +461,7 @@ namespace gear {
|
|||
/* ==== Implementation of the Concept ExecutionCtx ==== */
|
||||
|
||||
/**
|
||||
* λ-post: enqueue for time-bound execution, possibly dispatch immediately.
|
||||
* λ-post: enqueue for time-bound execution, within given ExecutionCtx.
|
||||
* @remark This function represents an _abstracted entrance to scheduling_
|
||||
* for the ActivityLang and is relevant for recursive forwarding
|
||||
* of activations and notifications. The concrete implementation
|
||||
|
|
|
|||
|
|
@ -391,16 +391,21 @@ namespace test {
|
|||
|
||||
auto testLoad(size_t nodes)
|
||||
{
|
||||
TestChainLoad<8> testLoad{nodes};
|
||||
return testLoad.seedingRule(testLoad.rule().probability(0.6).minVal(2))
|
||||
.pruningRule(testLoad.rule().probability(0.44))
|
||||
.weightRule(testLoad.value(1))
|
||||
.setSeed(55);
|
||||
TestChainLoad testLoad{nodes};
|
||||
// return testLoad.seedingRule(testLoad.rule().probability(0.6).minVal(2))
|
||||
// .pruningRule(testLoad.rule().probability(0.44))
|
||||
// .weightRule(testLoad.value(1))
|
||||
// .setSeed(55);
|
||||
return testLoad.setWeight(1);
|
||||
}
|
||||
};
|
||||
|
||||
auto results = StressRig::with<Setup>()
|
||||
.perform<bench::ParameterRange> (2,64);
|
||||
|
||||
cout<<"\"len\";\"dur\""<<endl;
|
||||
for (auto val : results)
|
||||
cout<<val.first<<";"<<val.second<<endl;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -450,9 +450,12 @@ namespace test {
|
|||
.withBaseExpense (CONF::BASE_EXPENSE)
|
||||
.withSchedNotify (CONF::SCHED_NOTIFY)
|
||||
.withSchedDepends(CONF::SCHED_DEPENDS)
|
||||
.withAdaptedSchedule(stressFac, CONF::CONCURRENCY);
|
||||
point.second = testSetup.launch_and_wait() / 1000;
|
||||
cout << "x="<<point.first<<" y="<<point.second<<endl;
|
||||
.withAdaptedSchedule(stressFac, CONF::CONCURRENCY)
|
||||
.withInstrumentation();
|
||||
double testMillis = testSetup.launch_and_wait() / 1000;
|
||||
auto stat = testSetup.getInvocationStatistic();
|
||||
point.second = stat.coveredTime / 1000;
|
||||
cout << "x="<<point.first<<"\t y="<<point.second<<"\t e2e="<<testMillis<<"\t conc:"<<stat.avgConcurrency<<" ∅t="<<stat.activeTime/stat.activationCnt<<" ("<<stat.activationCnt<<")"<<endl;
|
||||
}
|
||||
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -111796,6 +111796,125 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1709833825970" ID="ID_775213204" MODIFIED="1709833841341" TEXT="Meßanordnung besser verstehen">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1709833848928" ID="ID_923986084" MODIFIED="1709833855149" TEXT="was wird hier gemessen?"/>
|
||||
<node CREATED="1709833855842" ID="ID_1666779954" MODIFIED="1709833922023" TEXT="Welche Rolle spielt das Hochfahren?"/>
|
||||
<node CREATED="1709833971253" ID="ID_1587571989" MODIFIED="1709833985086" TEXT="Welche Rolle spielt das Schedule?">
|
||||
<node CREATED="1709834464275" ID="ID_1181890935" MODIFIED="1709834487308" TEXT="Abhängigkeiten führen zu Limitierungen"/>
|
||||
<node CREATED="1709834500102" ID="ID_65502962" MODIFIED="1709834506122" TEXT="Contention führt zu Limitierungen"/>
|
||||
</node>
|
||||
<node CREATED="1709834519627" ID="ID_1951356808" MODIFIED="1709834522280" TEXT="Meßmethode">
|
||||
<node CREATED="1709834523195" ID="ID_1201151791" MODIFIED="1709834543765" TEXT="geordnetes Schedule an den breaking Point bringen"/>
|
||||
<node CREATED="1709834544352" ID="ID_620498652" MODIFIED="1709834560018" TEXT="einen definierten Rückstau abarbeiten"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1709834048527" ID="ID_1151259698" MODIFIED="1709834057668" TEXT="Messung mit möglichst elastischem Schedule">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1709834821867" ID="ID_1521098376" MODIFIED="1709834828031" TEXT="Eigenschaften des Schedule">
|
||||
<node CREATED="1709834829355" ID="ID_736433278" MODIFIED="1709834836157" TEXT="keine Abhängigkeiten"/>
|
||||
<node CREATED="1709834836811" ID="ID_1468908878" MODIFIED="1709834863174" TEXT="Vollauslastung durch Überschuß von Jobs">
|
||||
<node CREATED="1709854372782" ID="ID_1392604276" MODIFIED="1709854381284" TEXT="also alle Job in einen Level"/>
|
||||
<node CREATED="1709854394836" ID="ID_572703771" MODIFIED="1709854407547" TEXT="und kein adaptedSchedule"/>
|
||||
</node>
|
||||
<node CREATED="1709834863806" ID="ID_1687712627" MODIFIED="1709834871321" TEXT="Planung bereits komplett abgeschlossen"/>
|
||||
<node CREATED="1709834903608" ID="ID_467296527" MODIFIED="1709852319170" TEXT="Messung nur über die Last-Jobs">
|
||||
<linktarget COLOR="#cf8a97" DESTINATION="ID_467296527" ENDARROW="Default" ENDINCLINATION="565;-16;" ID="Arrow_ID_910447284" SOURCE="ID_1235994680" STARTARROW="None" STARTINCLINATION="244;-42;"/>
|
||||
</node>
|
||||
<node CREATED="1709834934783" ID="ID_1078458749" MODIFIED="1709834950114" TEXT="idealerweise: Setup-Overhead mit erfassen"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1709848934783" ID="ID_1361934958" MODIFIED="1709848952540" TEXT="Beschränkungen des etablierten Test-Setup">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1709848957347" ID="ID_223181863" MODIFIED="1709848991586" TEXT="Scheduling an Levels gebunden"/>
|
||||
<node CREATED="1709848992150" ID="ID_1428191236" MODIFIED="1709849010799" TEXT="Levels fest an nomineller Concurrency orientiert"/>
|
||||
<node CREATED="1709849095114" ID="ID_1213436857" MODIFIED="1709849105898" TEXT="wake-up-Job als Dependency verdrahtet">
|
||||
<node CREATED="1709852101733" ID="ID_224601368" MODIFIED="1709852106201" TEXT="läßt sich aber abmildern"/>
|
||||
<node CREATED="1709852106705" ID="ID_1753078876" MODIFIED="1709852142659" TEXT="zunächst: Aufwand für das Notification-POST">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
einmal prüfen ob man das GroomingToken hat, und dann ein Enqueue
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1709852150884" ID="ID_856564005" MODIFIED="1709852263009" TEXT="wird mit dem Zeitpunkt des Nachfolgers gescheduled">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
aber nur, wenn man Dependencies nicht »unlimitiert« scheduled. Aber selbst dann werden die Notifications mit »now« gescheduled, und bei einer (hier angestrebten) Überlast-Situation sind alle derzeit zurückgestauten Jobs zeitlich vorher einsortiert
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1709852267236" ID="ID_487395663" MODIFIED="1709852278970" TEXT="und dieser sitzt auf letztem Level+1">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1709852284698" ID="ID_1235994680" MODIFIED="1709852325794" TEXT="Wichtig aber: Zeitmessung muß sich auf die reinen Arbeits-Jobs beschränken">
|
||||
<arrowlink COLOR="#cf8a97" DESTINATION="ID_467296527" ENDARROW="Default" ENDINCLINATION="565;-16;" ID="Arrow_ID_910447284" STARTARROW="None" STARTINCLINATION="244;-42;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1709856953519" ID="ID_1122506217" MODIFIED="1709857478776" TEXT="Setup-1">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1709856984954" ID="ID_1050466430" MODIFIED="1709857023875" TEXT="verwende Chain-Load ohne Topologie">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node CREATED="1709857025157" ID="ID_872370266" MODIFIED="1709857116004" TEXT="nur setWeight(1) und BASE_LOAD=500us">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1709857117892" ID="ID_703667645" MODIFIED="1709857124733" TEXT="verwende Instrumentation">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node CREATED="1709857126767" ID="ID_657270249" MODIFIED="1709857146648" TEXT="⟶ coveredTime als y-Wert"/>
|
||||
<node CREATED="1709857147380" ID="ID_656013327" MODIFIED="1709857152118" TEXT="Ergebnisse">
|
||||
<node CREATED="1709857153804" ID="ID_573482540" MODIFIED="1709857164302" TEXT="eine wunderschöne Kurve">
|
||||
<node CREATED="1709857165163" ID="ID_1141638970" MODIFIED="1709857172661" TEXT="geht nahezu durch den Urspung"/>
|
||||
<node CREATED="1709857173321" ID="ID_1210955812" MODIFIED="1709857442437" TEXT="knapp unter 4ms für 64 Nodes ⟹ wäre optimale concurrency">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
64*0.5 / 8 cores
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1709857227217" ID="ID_1666459843" MODIFIED="1709857234257" TEXT="aber andere Werte passen überhaupt nicht">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1709857239135" ID="ID_294844917" MODIFIED="1709857260129" TEXT="avgConcurrency wird nahezu Null angezeigt"/>
|
||||
<node CREATED="1709857260813" ID="ID_412697694" MODIFIED="1709857294723" TEXT="durchschnittliche Node-Zeiten 1.9 ... 3ms"/>
|
||||
<node CREATED="1709857301560" ID="ID_1659404445" MODIFIED="1709857321709">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
und eigentlich hatte ich den <b>Pool auf 4 Worker limitiert</b>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1709857448450" ID="ID_560141617" MODIFIED="1709857475484" TEXT="⟹ Herausfinden was während dem Lauf tatsächlich passiert"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue