Scheduler-test: reorganise test-setup in Stress-test-rig
With the addition of a second tool `bench::ParameterRange`, the setup of the test-context for measurement became confusing, since the original scheme was mostly oriented towards the ''breaking point search.'' On close investigation, I discovered several redundancies, and moreover, it seems questionable to generate an ''adapted-schedule'' for the Parameter-Range measurement method, which aims at overloading the scheduler and watch the time to resolve such a load peak. The solution entertained here is to move most of the schedule-ctx setup into the base implementation, which is typically just inherited by the actual testcase setup. This allows to leave the decision whether to build an adapted schedule to the actual tool. So `bench::BreakingPoint` can always setup the adapted schedule with a specific stress-factor, while `bench::ParameterRange` by default does nothing in this respect, and thus the `ScheduleCtx` will provide a default schedule with the configured level-duration (and the default for this is lowered to 200µs here). In a similar vein, calculation of result data points from the raw measurement is moved over into the actual test setup, thereby gaining flexibility.
This commit is contained in:
parent
0d3dc91584
commit
d47f24d745
4 changed files with 200 additions and 40 deletions
|
|
@ -393,7 +393,6 @@ namespace test {
|
|||
{
|
||||
usec LOAD_BASE = 500us;
|
||||
uint CONCURRENCY = 4;
|
||||
bool showRuns = true;
|
||||
|
||||
using Param = size_t;
|
||||
using Table = bench::DataTable<Param>;
|
||||
|
|
@ -406,10 +405,12 @@ namespace test {
|
|||
}
|
||||
|
||||
void
|
||||
collectResult(Table& data, double millis, bench::IncidenceStat const& stat)
|
||||
collectResult(Table& data, Param param, double millis, bench::IncidenceStat const& stat)
|
||||
{
|
||||
data.time = stat.coveredTime / 1000;
|
||||
data.conc = stat.avgConcurrency;
|
||||
data.newRow();
|
||||
data.param = param;
|
||||
data.time = stat.coveredTime / 1000;
|
||||
data.conc = stat.avgConcurrency;
|
||||
data.jobtime = stat.activeTime/stat.activationCnt;
|
||||
data.overhead = stat.timeAtConc(1) / stat.activationCnt; ////OOO not really clear if sensible
|
||||
}
|
||||
|
|
|
|||
|
|
@ -168,6 +168,7 @@ namespace test {
|
|||
using usec = std::chrono::microseconds;
|
||||
|
||||
usec LOAD_BASE = 500us;
|
||||
usec LEVEL_STEP = 200us;
|
||||
usec BASE_EXPENSE = 0us;
|
||||
bool SCHED_NOTIFY = true;
|
||||
bool SCHED_DEPENDS = false;
|
||||
|
|
@ -206,6 +207,11 @@ namespace test {
|
|||
testSetup (TL& testLoad)
|
||||
{
|
||||
return testLoad.setupSchedule(scheduler)
|
||||
.withLoadTimeBase(LOAD_BASE)
|
||||
.withLevelDuration(LEVEL_STEP)
|
||||
.withBaseExpense (BASE_EXPENSE)
|
||||
.withSchedNotify (SCHED_NOTIFY)
|
||||
.withSchedDepends(SCHED_DEPENDS)
|
||||
.withJobDeadline(100ms)
|
||||
.withUpfrontPlanning();
|
||||
}
|
||||
|
|
@ -257,11 +263,7 @@ namespace test {
|
|||
void
|
||||
configureTest (TestSetup& testSetup, double stressFac)
|
||||
{
|
||||
testSetup.withLoadTimeBase(CONF::LOAD_BASE)
|
||||
.withBaseExpense (CONF::BASE_EXPENSE)
|
||||
.withSchedNotify (CONF::SCHED_NOTIFY)
|
||||
.withSchedDepends(CONF::SCHED_DEPENDS)
|
||||
.withInstrumentation(CONF::INSTRUMENTATION) // side-effect: clear existing statistics
|
||||
testSetup.withInstrumentation(CONF::INSTRUMENTATION) // side-effect: clear existing statistics
|
||||
.withAdaptedSchedule(stressFac, CONF::CONCURRENCY, adjustmentFac);
|
||||
}
|
||||
|
||||
|
|
@ -468,21 +470,14 @@ namespace test {
|
|||
|
||||
|
||||
void
|
||||
runTest (Table& data)
|
||||
runTest (Param param, Table& data)
|
||||
{
|
||||
Param param = data.param;
|
||||
double stressFac = 1.0;
|
||||
TestLoad testLoad = CONF::testLoad(param).buildTopology();
|
||||
TestSetup testSetup = CONF::testSetup (testLoad)
|
||||
.withLoadTimeBase(CONF::LOAD_BASE)
|
||||
.withBaseExpense (CONF::BASE_EXPENSE)
|
||||
.withSchedNotify (CONF::SCHED_NOTIFY)
|
||||
.withSchedDepends(CONF::SCHED_DEPENDS)
|
||||
.withAdaptedSchedule(stressFac, CONF::CONCURRENCY)
|
||||
.withInstrumentation();
|
||||
.withInstrumentation(); // Note: by default Schedule with CONF::LEVEL_STEP
|
||||
double millis = testSetup.launch_and_wait() / 1000;
|
||||
auto stat = testSetup.getInvocationStatistic();
|
||||
CONF::collectResult (data, millis, stat);
|
||||
CONF::collectResult (data, param, millis, stat);
|
||||
}
|
||||
|
||||
public:
|
||||
|
|
@ -514,12 +509,8 @@ namespace test {
|
|||
if (minP > lower) points[cnt-1] = lower;
|
||||
|
||||
Table results;
|
||||
for (Param& point : points)
|
||||
{
|
||||
results.newRow();
|
||||
results.param = point;
|
||||
runTest (results);
|
||||
}
|
||||
for (Param point : points)
|
||||
runTest (point, results);
|
||||
return results;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1944,12 +1944,6 @@ namespace test {
|
|||
return move(*this);
|
||||
}
|
||||
|
||||
ScheduleCtx&&
|
||||
withBaseExpense ()
|
||||
{
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Establish a differentiated schedule per level, taking node weights into account
|
||||
* @param stressFac further proportional tightening of the schedule times
|
||||
|
|
|
|||
|
|
@ -112002,14 +112002,59 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1708738935308" ID="ID_762477739" MODIFIED="1708738938240" TEXT="Parameter">
|
||||
<node CREATED="1708738939092" ID="ID_1336682025" MODIFIED="1708738949919" TEXT="REPETITIONS : meint hier die Zahl der Meßläufe"/>
|
||||
<node CREATED="1708738958993" ID="ID_366857603" MODIFIED="1708739018813" TEXT="lower, upper : Grenzen des Parameterbereichs"/>
|
||||
<node CREATED="1708744051168" ID="ID_832742285" MODIFIED="1708744058443" TEXT="Typ des Parameters als Template PAR"/>
|
||||
<node CREATED="1708744051168" ID="ID_832742285" MODIFIED="1712238251481" TEXT="Typ des Parameters als Typ-Parameter"/>
|
||||
<node CREATED="1712238264496" ID="ID_1762169754" MODIFIED="1712238611252" TEXT="Setup-Klasse relativ flexibel">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<ul>
|
||||
<li>
|
||||
legt Parameter-Typ und Ergebnis-Spalten fest
|
||||
</li>
|
||||
<li>
|
||||
konfiguriert für jeden Lauf erneut einen Graphen
|
||||
</li>
|
||||
<li>
|
||||
ist auch für das Aufsammeln der Ergebnisse zuständig
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<arrowlink COLOR="#66a0bc" DESTINATION="ID_1813891417" ENDARROW="Default" ENDINCLINATION="221;-14;" ID="Arrow_ID_305160226" STARTARROW="None" STARTINCLINATION="246;-21;"/>
|
||||
<linktarget COLOR="#586fba" DESTINATION="ID_1762169754" ENDARROW="Default" ENDINCLINATION="470;43;" ID="Arrow_ID_117823155" SOURCE="ID_1082061089" STARTARROW="None" STARTINCLINATION="-465;30;"/>
|
||||
</node>
|
||||
<node CREATED="1708743962212" ID="ID_1501901450" MODIFIED="1708743996092" TEXT="Result-Vector...">
|
||||
<node CREATED="1708743998321" ID="ID_1433691531" MODIFIED="1708744007997" TEXT="mit zufälligen Meßpunkten füllen">
|
||||
<node CREATED="1708744023987" ID="ID_1484783314" MODIFIED="1708744039517" TEXT="vorsicht rand() ⟼ int"/>
|
||||
<node CREATED="1708744039986" ID="ID_699704031" MODIFIED="1708744044277" TEXT="besser mit double rechnen"/>
|
||||
<node CREATED="1712238325221" ID="ID_1357843091" MODIFIED="1712238338629" TEXT="zufällige Meßpunkte wählen">
|
||||
<node CREATED="1712238351377" ID="ID_1764303448" MODIFIED="1712238374218" TEXT="random-double ⟼ Param"/>
|
||||
<node CREATED="1712238382829" ID="ID_995719298" MODIFIED="1712238392912" TEXT="sicherstellen daß Grenzpunkte mit dabei sind"/>
|
||||
</node>
|
||||
<node CREATED="1708744009942" ID="ID_1661435132" MODIFIED="1708744019908" TEXT="sicherstellen daß die Grenzpunkte mit dabei sind"/>
|
||||
</node>
|
||||
<node CREATED="1712238397411" ID="ID_155768857" MODIFIED="1712238412957" TEXT="Ergebnisse: Daten-Tabelle ⟼ CSV">
|
||||
<node CREATED="1712238423304" ID="ID_1813891417" MODIFIED="1712238450505" TEXT="Ergebnis-Spalten werden im Setup festgelegt">
|
||||
<linktarget COLOR="#66a0bc" DESTINATION="ID_1813891417" ENDARROW="Default" ENDINCLINATION="221;-14;" ID="Arrow_ID_305160226" SOURCE="ID_1762169754" STARTARROW="None" STARTINCLINATION="246;-21;"/>
|
||||
</node>
|
||||
<node CREATED="1712238458491" ID="ID_112442438" MODIFIED="1712238472711" TEXT="darauf statistische Auswertungen / lineare Regression"/>
|
||||
<node CREATED="1712238473499" ID="ID_109820250" MODIFIED="1712238539719" TEXT="Darstellung als Gnuplot">
|
||||
<arrowlink COLOR="#4a8bb7" DESTINATION="ID_561451802" ENDARROW="Default" ENDINCLINATION="330;-389;" ID="Arrow_ID_787725069" STARTARROW="None" STARTINCLINATION="191;23;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1712239286828" ID="ID_24606608" MODIFIED="1712239292967" TEXT="Meß-Anordnung">
|
||||
<node CREATED="1712239307017" ID="ID_766419855" MODIFIED="1712239339117" TEXT="Scheduler einmalig beladen"/>
|
||||
<node CREATED="1712239325075" ID="ID_1203654071" MODIFIED="1712239342970" TEXT="Abarbeitung dieser Last beobachtet"/>
|
||||
<node CREATED="1712239349235" ID="ID_430565338" MODIFIED="1712239370596" TEXT="typischerweise: isolierte Nodes + Überlast">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1712239372216" ID="ID_291008354" MODIFIED="1712241669759" TEXT="ist aber flexibel"/>
|
||||
<node CREATED="1712239376735" ID="ID_1372923577" MODIFIED="1712241693538" TEXT="tatsähchlicher Kontroll-Parameter frei">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...und was dieser Kontroll-Parameter tatsächlich ist, wird allein durch das Setup festgelegt — denn dies erzeugt sowohl <i>jedesmal </i>eine neue Topologie
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1712241515362" ID="ID_326943240" MODIFIED="1712241527541" TEXT="kann durchaus auch reguläres Schedule sein"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1710079791943" ID="ID_1402055509" MODIFIED="1710080437833" TEXT="Integration">
|
||||
|
|
@ -114733,7 +114778,8 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node COLOR="#338800" CREATED="1712184322989" ID="ID_577782644" MODIFIED="1712190768568" TEXT="Meßdaten-Erhebung per CONF parametrisieren">
|
||||
<linktarget COLOR="#502c93" DESTINATION="ID_577782644" ENDARROW="Default" ENDINCLINATION="12;-53;" ID="Arrow_ID_682783" SOURCE="ID_829995870" STARTARROW="None" STARTINCLINATION="-133;13;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1712184635916" ID="ID_1082061089" MODIFIED="1712184646838" TEXT="stellt Typen und Bindings bereit">
|
||||
<node CREATED="1712184635916" ID="ID_1082061089" MODIFIED="1712238621299" TEXT="Setup-Klasse stellt Typen und Bindings bereit">
|
||||
<arrowlink COLOR="#586fba" DESTINATION="ID_1762169754" ENDARROW="Default" ENDINCLINATION="470;43;" ID="Arrow_ID_117823155" STARTARROW="None" STARTINCLINATION="-465;30;"/>
|
||||
<node CREATED="1712184647946" ID="ID_1912596603" MODIFIED="1712184652269" TEXT="Typ Table">
|
||||
<node CREATED="1712184719760" ID="ID_1405042081" MODIFIED="1712184724092" TEXT="ist ein DataFile"/>
|
||||
</node>
|
||||
|
|
@ -114756,15 +114802,143 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1712190824923" ID="ID_1753510801" MODIFIED="1712190852825" TEXT="unklar: »overhead«-Messung">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1712190864143" ID="ID_438624459" MODIFIED="1712190868082" TEXT="Aussagekraft unklar"/>
|
||||
<node CREATED="1712190868742" ID="ID_1042265591" MODIFIED="1712190880728" TEXT="paßt nicht in das gleiche Koordinatensystem"/>
|
||||
<node CREATED="1712235705069" ID="ID_1990935438" MODIFIED="1712235716317" TEXT="diverse Auswertungen möglich"/>
|
||||
<node CREATED="1712190868742" ID="ID_1042265591" MODIFIED="1712235799414" TEXT="das Meiste paßt nicht in das gleiche Koordinatensystem">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<ul>
|
||||
<li>
|
||||
weil es gar keine Zeit wäre, sondern ein Prozentsatz oder Faktor
|
||||
</li>
|
||||
<li>
|
||||
und wenn es eine Zeit wäre, weil es sich auf einer komplett anderen Skala bewegt
|
||||
</li>
|
||||
<li>
|
||||
oder weil es einige dramatische Ausreißer gibt und kein Pattern erkennbar ist
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1712190889155" ID="ID_841914264" MODIFIED="1712190916249" TEXT="messe jetzt: durchschnittliche Single-Thread-Zeit pro Job">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1712235962435" ID="ID_169942944" MODIFIED="1712235968597" TEXT="nach einigem Knobeln...."/>
|
||||
<node CREATED="1712235969257" ID="ID_269326004" MODIFIED="1712235980940" TEXT="ergibt das sinnvolle und weitgehend konstante Werte"/>
|
||||
</node>
|
||||
<node CREATED="1712235662399" ID="ID_1565221854" MODIFIED="1712235681102" TEXT="„overhead“ ist nicht der richtige Begriff">
|
||||
<node CREATED="1712235820166" ID="ID_1638446802" MODIFIED="1712235905469" TEXT="Lösung sucht Problem">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Das ist hier definitiv der Fall!
|
||||
</p>
|
||||
<p>
|
||||
Ich habe weitere »Slots« im Diagramm „zu vergeben“ und ich habe noch eine Menge Statistik-Daten sowie die Laufzeit instgesamt, die ich bisher gar nicht auswerte
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1712235907066" ID="ID_36914510" MODIFIED="1712235934650" TEXT="ein Effizienzmaß oder Indikator wäre schön"/>
|
||||
<node CREATED="1712236342664" ID="ID_1525305097" MODIFIED="1712236350154" TEXT="»hampered«"/>
|
||||
<node CREATED="1712236356487" ID="ID_956970194" MODIFIED="1712236363729" TEXT="»impeded«"/>
|
||||
<node CREATED="1712236376307" ID="ID_1176586430" MODIFIED="1712236379110" TEXT="»stale«"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1712236398534" ID="ID_1916803186" MODIFIED="1712363661962" TEXT="⟹ sinnvoll">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1712236415206" ID="ID_494152831" MODIFIED="1712236443530" TEXT="Namen flexibilisieren"/>
|
||||
<node CREATED="1712236421664" ID="ID_1114332459" MODIFIED="1712236430361" TEXT="mehrere Felder ermöglichen"/>
|
||||
<node CREATED="1712236446082" ID="ID_502918899" MODIFIED="1712236504775" TEXT="Subclassing? / mehr Baukastenprinzip?"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1712244192947" ID="ID_546617772" MODIFIED="1712363104586" TEXT="Adapted schedule oder nicht?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1712244210284" ID="ID_1709008622" MODIFIED="1712244225652" TEXT="pro: dann geht die Load-Time-Base gleich mit ein"/>
|
||||
<node CREATED="1712244228510" ID="ID_405856128" MODIFIED="1712244250903" TEXT="contra: Scheduler möglicherweise gar nicht gesättigt"/>
|
||||
<node CREATED="1712244571097" ID="ID_754567380" MODIFIED="1712244595568" TEXT="contra: eigentlich nicht benötigte Komplexität">
|
||||
<node CREATED="1712244603603" ID="ID_1816166046" MODIFIED="1712244886282" TEXT="hier anders als beim bench::BreakingPoint">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
dort ist das Vorgeben eines Stress-Faktors für jeden Einzel-Lauf die zentrale Steuergröße, hier dagegen gehe ich eigentlich von einer Überlastung aus, und damit sollte das vorgefertigte Schedule nur zu dicht sein, ansonsten ist es egal
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1712244627456" ID="ID_395647441" MODIFIED="1712244791508" TEXT="aber auch nicht klar ... wegen Flexibilität">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...kann mir im Moment aber keine Fall vorstellen, wo man tatsächlich ein Schedule vorgeben und abarbeiten lassen möchte (weil dann die Messung nur einen kritischen Pfad durch das Schedule ermittelt, nicht den Scheduler selbst ausleuchtet ... anderenfalls wäre man wieder bei der breaking-Point-Suche)
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1712245236731" ID="ID_886587086" MODIFIED="1712245242829" TEXT="Entscheidungs-Problem">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1712245244421" ID="ID_49304046" MODIFIED="1712245254559" TEXT="habe hier einen zusätzlichen Freiheitsgrad"/>
|
||||
<node CREATED="1712245256664" ID="ID_777742373" MODIFIED="1712245265718" TEXT="dieser spielt aber nur bedingt eine Rolle"/>
|
||||
<node CREATED="1712245266338" ID="ID_1445718490" MODIFIED="1712245278684" TEXT="und diese Bedingtheit selber ist komplex"/>
|
||||
<node CREATED="1712245307628" ID="ID_411753256" MODIFIED="1712245319830" TEXT="Außerdem: kann nicht einfach konfigurierbar gemacht werden"/>
|
||||
<node CREATED="1712245325610" ID="ID_1102989449" MODIFIED="1712245349282" TEXT="das wird alles schrecklich komplex und verworren — wer soll das später mal verstehen">
|
||||
<icon BUILTIN="smily_bad"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#3a396c" CREATED="1712359770916" ID="ID_1195522789" MODIFIED="1712363122276" TEXT="Lösung ⟹ entflechten">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1712359802308" ID="ID_593662279" MODIFIED="1712359826243" TEXT="die Konfigurierbarkeit kann man in die Basis-Impl drücken"/>
|
||||
<node CREATED="1712359834080" ID="ID_820734795" MODIFIED="1712359857536" TEXT="SETUP::testSetup(testLoad)">
|
||||
<node CREATED="1712359858645" ID="ID_73952237" MODIFIED="1712359873526" TEXT="wird in 90% der Fälle unverändert geerbt"/>
|
||||
<node CREATED="1712359874050" ID="ID_766853266" MODIFIED="1712359900298" TEXT="stattdessen konfiguriert man dann per Zuweisung an die Konstanten"/>
|
||||
<node CREATED="1712359980308" ID="ID_1958256594" MODIFIED="1712360020979">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
man <i>könnte </i>aber hier auch noch selber eingreifen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1712360025941" ID="ID_865033764" MODIFIED="1712360044679" TEXT="damit hängt es dann vom konkreten Tool ab, ob / und welches Schedule gebaut wird"/>
|
||||
<node CREATED="1712360049539" ID="ID_319622291" MODIFIED="1712363139821">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
⟹ für das Tool »ParameterRange« wird per default <b>kein</b> (adapted) Schedule erstellt
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<node CREATED="1712360103291" ID="ID_1702061263" MODIFIED="1712360111566" TEXT="das enstpricht mehr dem Bedarf"/>
|
||||
<node CREATED="1712361990261" ID="ID_6407935" MODIFIED="1712362003435" TEXT="setze LEVEL_STEP = 200µs per Default">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1712362009194" ID="ID_1460896586" MODIFIED="1712362198239" TEXT="greift nur wenn kein adapted Schedule">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...was nun relevant wird für das Tool »ParameterRange« — der feste default-Wert im Chain-Load-Schedule-Ctx ist 1ms, und das erscheint für diesen Zweck als zu hoch, weil damit die Gefahr besteht, den Worker-Pool gar nicht in die Voll-Auslastung zu bekommen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1712360112105" ID="ID_600182451" MODIFIED="1712360126185" TEXT="⟹ i.d.R. sollte man mit default-Steps arbeiten"/>
|
||||
<node CREATED="1712360127193" ID="ID_1780932375" MODIFIED="1712360141154" TEXT="⟹ opitonal kann man aber auch ein Schedule definieren"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1712190783314" ID="ID_561451802" MODIFIED="1712190793652" TEXT="Gnuplot-Skript generieren">
|
||||
<node COLOR="#338800" CREATED="1712190783314" ID="ID_561451802" MODIFIED="1712238531623" TEXT="Gnuplot-Skript generieren">
|
||||
<linktarget COLOR="#4a8bb7" DESTINATION="ID_561451802" ENDARROW="Default" ENDINCLINATION="330;-389;" ID="Arrow_ID_787725069" SOURCE="ID_109820250" STARTARROW="None" STARTINCLINATION="191;23;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue