Scheduler-test: rework ParameterRange tool for data visualisation
Rework the existing tool to capture the measurement series into the newly integrated CSV-based data storage, allowing to turn the results into a Gnuplot-visualisation.
This commit is contained in:
parent
55f8f229f1
commit
0d3dc91584
5 changed files with 178 additions and 49 deletions
|
|
@ -188,11 +188,11 @@ namespace lib {
|
|||
return idx < data.size()? data[idx]
|
||||
: VAL{};
|
||||
}
|
||||
size_t cntCase (size_t id) { return access (caseCntr, id); }
|
||||
size_t cntThread(size_t id) { return access (thrdCntr, id); }
|
||||
double timeCase (size_t id) { return access (caseTime, id); }
|
||||
double timeThread(size_t id) { return access (thrdTime, id); }
|
||||
double timeAtConc(size_t id) { return access (concTime, id); }
|
||||
size_t cntCase (size_t id) const { return access (caseCntr, id); }
|
||||
size_t cntThread(size_t id) const { return access (thrdCntr, id); }
|
||||
double timeCase (size_t id) const { return access (caseTime, id); }
|
||||
double timeThread(size_t id) const { return access (thrdTime, id); }
|
||||
double timeAtConc(size_t id) const { return access (concTime, id); }
|
||||
};
|
||||
|
||||
Statistic evaluate();
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ namespace stat{
|
|||
*/
|
||||
template<typename VAL>
|
||||
struct Column
|
||||
: util::NonCopyable
|
||||
: util::MoveOnly
|
||||
{
|
||||
string header;
|
||||
vector<VAL> data;
|
||||
|
|
@ -193,7 +193,7 @@ namespace stat{
|
|||
template<class TAB>
|
||||
class DataFile
|
||||
: public TAB
|
||||
, util::NonCopyable
|
||||
, util::MoveOnly
|
||||
{
|
||||
fs::path filename_;
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
#include "lib/time/timevalue.hpp"
|
||||
#include "lib/format-string.hpp"
|
||||
#include "lib/format-cout.hpp"
|
||||
#include "lib/gnuplot-gen.hpp"
|
||||
#include "lib/test/diagnostic-output.hpp"//////////////////////////TODO work in distress
|
||||
//#include "lib/format-string.hpp"
|
||||
#include "lib/test/transiently.hpp"
|
||||
|
|
@ -394,24 +395,33 @@ namespace test {
|
|||
uint CONCURRENCY = 4;
|
||||
bool showRuns = true;
|
||||
|
||||
auto testLoad(size_t nodes)
|
||||
using Param = size_t;
|
||||
using Table = bench::DataTable<Param>;
|
||||
|
||||
auto
|
||||
testLoad(Param nodes)
|
||||
{
|
||||
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);
|
||||
return testLoad.configure_isolated_nodes();
|
||||
}
|
||||
|
||||
void
|
||||
collectResult(Table& data, double millis, bench::IncidenceStat const& stat)
|
||||
{
|
||||
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
|
||||
}
|
||||
};
|
||||
|
||||
auto results = StressRig::with<Setup>()
|
||||
.perform<bench::ParameterRange> (2,64);
|
||||
|
||||
cout<<"\"len\";\"dur\""<<endl;
|
||||
for (auto val : results)
|
||||
cout<<val.first<<";"<<val.second<<endl;
|
||||
|
||||
auto csv = results.renderCSV();
|
||||
cout << csv <<endl;
|
||||
cout << "───═══───═══───═══───═══───═══───═══───═══───═══───═══───═══───"<<endl;
|
||||
cout << lib::gnuplot_gen::scatterRegression(csv);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@
|
|||
#include "lib/meta/function.hpp"
|
||||
#include "lib/format-string.hpp"
|
||||
#include "lib/format-cout.hpp"//////////////////////////TODO RLY?
|
||||
#include "lib/stat/data.hpp"
|
||||
#include "lib/util.hpp"
|
||||
|
||||
//#include <functional>
|
||||
|
|
@ -421,6 +422,34 @@ namespace test {
|
|||
|
||||
|
||||
|
||||
using lib::stat::Column;
|
||||
using lib::stat::DataFile;
|
||||
using lib::stat::CSVData;
|
||||
using IncidenceStat = lib::IncidenceCount::Statistic;
|
||||
|
||||
template<typename PAR>
|
||||
struct DataRow
|
||||
{
|
||||
Column<PAR> param {"test param"}; // independent variable / control parameter
|
||||
Column<double> time {"result time"};
|
||||
Column<double> conc {"concurrency"};
|
||||
Column<double> jobtime {"avg jobtime"};
|
||||
Column<double> overhead{"overhead"};
|
||||
|
||||
auto allColumns()
|
||||
{ return std::tie(param
|
||||
,time
|
||||
,conc
|
||||
,jobtime
|
||||
,overhead
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
template<typename PAR>
|
||||
using DataTable = DataFile<DataRow<PAR>>;
|
||||
|
||||
|
||||
|
||||
/**************************************************//**
|
||||
* Specific test scheme to perform a Scheduler setup
|
||||
|
|
@ -431,18 +460,17 @@ namespace test {
|
|||
class ParameterRange
|
||||
: public CONF
|
||||
{
|
||||
using TestLoad = decltype(declval<ParameterRange>().testLoad(1));
|
||||
using Table = typename CONF::Table;
|
||||
using Param = typename CONF::Param;
|
||||
|
||||
using TestLoad = decltype(declval<ParameterRange>().testLoad(Param()));
|
||||
using TestSetup = decltype(declval<ParameterRange>().testSetup (declval<TestLoad&>()));
|
||||
|
||||
template<typename PAR>
|
||||
using Point = std::pair<PAR, double>;
|
||||
|
||||
|
||||
template<typename PAR>
|
||||
void
|
||||
runTest (Point<PAR>& point)
|
||||
runTest (Table& data)
|
||||
{
|
||||
PAR param = point.first;
|
||||
Param param = data.param;
|
||||
double stressFac = 1.0;
|
||||
TestLoad testLoad = CONF::testLoad(param).buildTopology();
|
||||
TestSetup testSetup = CONF::testSetup (testLoad)
|
||||
|
|
@ -452,10 +480,9 @@ namespace test {
|
|||
.withSchedDepends(CONF::SCHED_DEPENDS)
|
||||
.withAdaptedSchedule(stressFac, CONF::CONCURRENCY)
|
||||
.withInstrumentation();
|
||||
double testMillis = testSetup.launch_and_wait() / 1000;
|
||||
double millis = 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;
|
||||
CONF::collectResult (data, millis, stat);
|
||||
}
|
||||
|
||||
public:
|
||||
|
|
@ -464,31 +491,35 @@ cout << "x="<<point.first<<"\t y="<<point.second<<"\t e2e="<<testMillis<<"\t con
|
|||
* varying parameter value to investigate (x,y) correlations.
|
||||
* @return ////TODO a tuple `[stress-factor, ∅delta, ∅run-time]`
|
||||
*/
|
||||
template<typename PAR>
|
||||
auto
|
||||
perform (PAR lower, PAR upper)
|
||||
Table
|
||||
perform (Param lower, Param upper)
|
||||
{
|
||||
TRANSIENTLY(work::Config::COMPUTATION_CAPACITY) = CONF::CONCURRENCY;
|
||||
|
||||
PAR dist = upper - lower;
|
||||
Param dist = upper - lower;
|
||||
uint cnt = CONF::REPETITIONS;
|
||||
vector<Point<PAR>> results(cnt);
|
||||
PAR minP{upper}, maxP{lower};
|
||||
vector<Param> points;
|
||||
points.reserve (cnt);
|
||||
Param minP{upper}, maxP{lower};
|
||||
for (uint i=0; i<cnt; ++i)
|
||||
{
|
||||
auto random = double(rand())/RAND_MAX;
|
||||
PAR pos = lower + PAR(floor (random*dist + 0.5));
|
||||
results[i].first = pos;
|
||||
Param pos = lower + Param(floor (random*dist + 0.5));
|
||||
points.push_back(pos);
|
||||
minP = min (pos, minP);
|
||||
maxP = max (pos, maxP);
|
||||
}
|
||||
// ensure the bounds participate in test
|
||||
if (maxP < upper) results[cnt-2].first = upper;
|
||||
if (minP > lower) results[cnt-1].first = lower;
|
||||
|
||||
for (auto& point : results)
|
||||
runTest (point);
|
||||
if (maxP < upper) points[cnt-2] = upper;
|
||||
if (minP > lower) points[cnt-1] = lower;
|
||||
|
||||
Table results;
|
||||
for (Param& point : points)
|
||||
{
|
||||
results.newRow();
|
||||
results.param = point;
|
||||
runTest (results);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -111374,7 +111374,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1707755248647" ID="ID_1760925660" MODIFIED="1708035237496" TEXT="Einsatz informell verifizieren">
|
||||
<node COLOR="#338800" CREATED="1707755248647" FOLDED="true" ID="ID_1760925660" MODIFIED="1708035237496" TEXT="Einsatz informell verifizieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1707960794133" ID="ID_711451755" MODIFIED="1707960809107" TEXT="neuer Testfall in SchedulerStress_test">
|
||||
<icon BUILTIN="info"/>
|
||||
|
|
@ -111664,7 +111664,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1708268487001" ID="ID_1962998809" MODIFIED="1708268499603" TEXT="wird erst während der Messung entdeckt"/>
|
||||
<node CREATED="1708268571343" ID="ID_1673801414" MODIFIED="1708268584520" TEXT="verschiebt dann das Koordinatensystem der Prozeßsteuerung"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1708268586535" ID="ID_551006374" MODIFIED="1708295680878" TEXT="trotzdem mal versuchen....">
|
||||
<node COLOR="#338800" CREATED="1708268586535" FOLDED="true" ID="ID_551006374" MODIFIED="1708295680878" TEXT="trotzdem mal versuchen....">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1708268601529" ID="ID_202306919" MODIFIED="1708268614652" TEXT="das »adaptedSchedule« wendet die concurrency als Faktor an"/>
|
||||
<node CREATED="1708268615552" ID="ID_632780223" MODIFIED="1708271692425" TEXT="das ließe sich durchaus auf einen double-Factor erweitern"/>
|
||||
|
|
@ -111760,7 +111760,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1708275070790" ID="ID_989990379" MODIFIED="1708275106286" TEXT="Konsequenz: Anpassung des Schedule sollte graduell konvergieren"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1708295682057" ID="ID_1692984155" MODIFIED="1708650309261" TEXT="Verhalten im Test">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1708295682057" FOLDED="true" ID="ID_1692984155" MODIFIED="1708650309261" TEXT="Verhalten im Test">
|
||||
<icon BUILTIN="list"/>
|
||||
<node COLOR="#435e98" CREATED="1708295760082" ID="ID_1240131502" MODIFIED="1708295777613" TEXT="kumulierte Statistik nicht berücksichtigt">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
|
|
@ -111883,6 +111883,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1708359949377" ID="ID_3066237" MODIFIED="1708359973277" TEXT="damit kommt ein Streß-Faktor ganz nah an 1 heraus!!">
|
||||
<linktarget COLOR="#3895bf" DESTINATION="ID_3066237" ENDARROW="Default" ENDINCLINATION="-1136;-1018;" ID="Arrow_ID_1263603979" SOURCE="ID_582492163" STARTARROW="None" STARTINCLINATION="1149;47;"/>
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
|
|
@ -111894,7 +111895,6 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1708651353088" ID="ID_9850721" MODIFIED="1708651367397" TEXT="ergänzende Meßmethode : lineare Regression">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1708651381229" ID="ID_34422716" MODIFIED="1708651432845" TEXT="Ansatz: Verhaltesmuster durch anderen Meß-Ansatz bestätigen">
|
||||
|
|
@ -111981,7 +111981,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1708653266575" ID="ID_974267734" MODIFIED="1708653290547" TEXT="sowohl für den Parameter, alsauch für den Beobachtungswert"/>
|
||||
<node COLOR="#338800" CREATED="1708704390490" ID="ID_1955311779" MODIFIED="1708738756134" TEXT="erscheint lösbar">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1708704485480" ID="ID_1418959649" MODIFIED="1708704532222" TEXT="muß „lediglich“ die Builder-Notation auf das konrete TOOL parametrisieren"/>
|
||||
<node CREATED="1708704485480" ID="ID_1418959649" MODIFIED="1708704532222" TEXT="muß „lediglich“ die Builder-Notation auf das konkrete TOOL parametrisieren"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#0f1269" CREATED="1708704444553" ID="ID_765627090" MODIFIED="1708738903548" STYLE="bubble">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
|
|
@ -112386,7 +112386,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1710079820663" ID="ID_346209836" MODIFIED="1712165155677" TEXT="ein Gnuplot-Skript generieren">
|
||||
<node COLOR="#338800" CREATED="1710079820663" FOLDED="true" ID="ID_346209836" MODIFIED="1712165155677" TEXT="ein Gnuplot-Skript generieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#b6c3c8" COLOR="#2a44ae" CREATED="1710633755833" ID="ID_395770848" MODIFIED="1712165207008" TEXT="Grundlagen Gnuplot lernen">
|
||||
<arrowlink COLOR="#425fc8" DESTINATION="ID_1898552649" ENDARROW="Default" ENDINCLINATION="-1042;110;" ID="Arrow_ID_1130805562" STARTARROW="None" STARTINCLINATION="-1030;94;"/>
|
||||
|
|
@ -114466,7 +114466,7 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node CREATED="1711900361616" ID="ID_1245877883" MODIFIED="1711900371643" TEXT="dann gibt es zusätzliche Builder, die schon Teile vorbereiten"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1711820846814" ID="ID_131434294" MODIFIED="1712165063590" TEXT="Template-Bausteine">
|
||||
<node COLOR="#338800" CREATED="1711820846814" FOLDED="true" ID="ID_131434294" MODIFIED="1712165063590" TEXT="Template-Bausteine">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1711820852404" ID="ID_1098550176" MODIFIED="1711904777126" TEXT="einfacher Daten-Plot">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -114677,8 +114677,96 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1712165247528" ID="ID_1095964212" MODIFIED="1712165254925" TEXT="Regression berechnen und visualisieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1712165247528" ID="ID_1095964212" MODIFIED="1712190796632" TEXT="Regression berechnen und visualisieren">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1712180140911" ID="ID_1277334109" MODIFIED="1712190777261" TEXT="muß Parameter-Überagbe und Daten-Rückgabe überarbeiten">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1712180159277" ID="ID_1547350046" MODIFIED="1712180172746" TEXT="bisher: std::pair<PAR, zeit>"/>
|
||||
<node CREATED="1712180185563" ID="ID_1446764491" MODIFIED="1712180246389" TEXT="gewünscht: Daten-Tupel(PAR, Zeit, Concurrency, JobTime)"/>
|
||||
<node CREATED="1712183741715" ID="ID_986844768" MODIFIED="1712183751741" TEXT="relativ einfach realisierbar">
|
||||
<node CREATED="1712183753046" ID="ID_1287892532" MODIFIED="1712183793104" TEXT="DataFile als RVO-Parameter einführen"/>
|
||||
<node CREATED="1712183793908" ID="ID_1299689687" MODIFIED="1712183813221" TEXT="Referenz darauf anstatt dem Tupel in die runTest(data) geben"/>
|
||||
</node>
|
||||
<node CREATED="1712183881848" ID="ID_277756370" MODIFIED="1712190772873" TEXT="Probleme dabei...">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1712183893055" ID="ID_1518548729" MODIFIED="1712183902505" TEXT="Table-Def muß öffentlich werden"/>
|
||||
<node CREATED="1712183903573" ID="ID_1522610699" MODIFIED="1712183933315" TEXT="der »offen gelassene« Parameter-Typ PAR macht das alles etwas kniffelig"/>
|
||||
<node CREATED="1712184089624" ID="ID_1503052479" MODIFIED="1712184103952" TEXT="eigentlich ist der Parameter PAR redundant">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1712184136782" ID="ID_670493985" MODIFIED="1712184148599" TEXT="es ist nämlich CONF::testLoad(PAR)"/>
|
||||
<node CREATED="1712184184363" ID="ID_222136690" MODIFIED="1712184225643" TEXT="ich wollte nämlich die unabhängige Variable »offen« lassen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
damit man verschiende Messungen mit dem geleichen Tool-Code machen kann
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1712184403250" ID="ID_1616254097" MODIFIED="1712184496760" TEXT="das hat so lala funktioniert....">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
der Parameter bleibt in der Tat „offen“ — aber allzuviel kann man damit nicht anstellen, denn
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
der Parameter muß numerisch (und total geordnet) sein
|
||||
</li>
|
||||
<li>
|
||||
er muß auf double konvertierbar sein und aus double erstellbar
|
||||
</li>
|
||||
<li>
|
||||
und die tatsächlich vorzunehmenden Messungen sind auch fix
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1712184312086" ID="ID_829995870" MODIFIED="1712190730825" TEXT="wenn schon, denn schon!">
|
||||
<arrowlink COLOR="#502c93" DESTINATION="ID_577782644" ENDARROW="Default" ENDINCLINATION="12;-53;" ID="Arrow_ID_682783" STARTARROW="None" STARTINCLINATION="-133;13;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<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="1712184647946" ID="ID_1912596603" MODIFIED="1712184652269" TEXT="Typ Table">
|
||||
<node CREATED="1712184719760" ID="ID_1405042081" MODIFIED="1712184724092" TEXT="ist ein DataFile"/>
|
||||
</node>
|
||||
<node CREATED="1712184688185" ID="ID_765432091" MODIFIED="1712184692160" TEXT="Typ Param"/>
|
||||
<node CREATED="1712184696043" ID="ID_366607622" MODIFIED="1712184711493" TEXT="Konvention: Param steht in Table.param (Spalte)"/>
|
||||
<node CREATED="1712184732838" ID="ID_33213641" MODIFIED="1712184818671" TEXT="Methode: collectResult(Table, millis, stat&)"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1712184912878" ID="ID_214292021" MODIFIED="1712190738184" TEXT="das wird aber viel Definitions-Aufwand">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1712184924845" ID="ID_1900197884" MODIFIED="1712184933964" TEXT="vordefiniertes Schema"/>
|
||||
<node COLOR="#435e98" CREATED="1712184956801" ID="ID_194118436" MODIFIED="1712190764406" TEXT="vordefinieren DataTable<PAR>">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1712184973777" ID="ID_1489071309" MODIFIED="1712184977746" TEXT="param"/>
|
||||
<node CREATED="1712184979213" ID="ID_741554251" MODIFIED="1712185063979" TEXT="time"/>
|
||||
<node CREATED="1712185065618" ID="ID_1263120478" MODIFIED="1712189789392" TEXT="conc"/>
|
||||
<node CREATED="1712185072985" ID="ID_1200962225" MODIFIED="1712185075613" TEXT="jobTime"/>
|
||||
<node CREATED="1712185076777" ID="ID_1271427599" MODIFIED="1712185113759" TEXT="overhead"/>
|
||||
</node>
|
||||
</node>
|
||||
<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="1712190889155" ID="ID_841914264" MODIFIED="1712190916249" TEXT="messe jetzt: durchschnittliche Single-Thread-Zeit pro Job">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1712190783314" ID="ID_561451802" MODIFIED="1712190793652" TEXT="Gnuplot-Skript generieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue