Scheduler: plan for integration

identified three distinct tasks
- build the external API
- establish component integration
- performance testing
This commit is contained in:
Fischlurch 2023-10-19 22:04:30 +02:00
parent 9ce3ad3d72
commit 9db341bd8b
5 changed files with 650 additions and 9 deletions

View file

@ -234,7 +234,7 @@ namespace gear {
/* use the minimal default wiring */
break;
default:
NOTREACHED ("uncovered Activity verb in activation function.");
NOTREACHED ("unknown wiring scheme for Render Jobs.");
break;
}
}

View file

@ -0,0 +1,103 @@
/*
SchedulerService(Test) - component integration test for the scheduler
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-usage-test.cpp
** unit test \ref SchedulerService_test
*/
#include "lib/test/run.hpp"
#include "vault/gear/scheduler.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 Scheduler component integration test: add and process dependent jobs.
* @see SchedulerActivity_test
* @see SchedulerInvocation_test
* @see SchedulerCommutator_test
*/
class SchedulerService_test : public Test
{
virtual void
run (Arg)
{
simpleUsage();
walkingDeadline();
setupLalup();
}
/** @test TODO demonstrate a simple usage scenario
*/
void
simpleUsage()
{
}
/** @test TODO
*/
void
walkingDeadline()
{
}
/** @test TODO
*/
void
setupLalup()
{
}
};
/** Register this test class... */
LAUNCHER (SchedulerService_test, "unit engine");
}}} // namespace vault::gear::test

View file

@ -0,0 +1,103 @@
/*
SchedulerStress(Test) - verify scheduler performance characteristics
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-usage-test.cpp
** unit test \ref SchedulerStress_test
*/
#include "lib/test/run.hpp"
#include "vault/gear/scheduler.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 Investigate and verify non-functional characteristics of the Scheduler.
* @see SchedulerActivity_test
* @see SchedulerInvocation_test
* @see SchedulerCommutator_test
*/
class SchedulerStress_test : public Test
{
virtual void
run (Arg)
{
simpleUsage();
walkingDeadline();
setupLalup();
}
/** @test TODO demonstrate a simple usage scenario
*/
void
simpleUsage()
{
}
/** @test TODO
*/
void
walkingDeadline()
{
}
/** @test TODO
*/
void
setupLalup()
{
}
};
/** Register this test class... */
LAUNCHER (SchedulerStress_test, "unit engine");
}}} // namespace vault::gear::test

View file

@ -1,5 +1,5 @@
/*
SchedulerUsage(Test) - component integration test for the scheduler
SchedulerUsage(Test) - verify standard usage patterns of the scheduler service
Copyright (C) Lumiera.org
2023, Hermann Vosseler <Ichthyostega@web.de>
@ -51,7 +51,7 @@ namespace test {
/*************************************************************************//**
* @test Scheduler component integration test: add and process dependent jobs.
* @test Ensure expected Scheduler functionality in standard usage situations.
* @see SchedulerActivity_test
* @see SchedulerInvocation_test
* @see SchedulerCommutator_test

View file

@ -78564,6 +78564,14 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1697754985639" ID="ID_799408544" MODIFIED="1697755265544" TEXT="Verschaltung: Prerequisite &#x21b7; Dependent-Job">
<linktarget COLOR="#3e9bb9" DESTINATION="ID_799408544" ENDARROW="Default" ENDINCLINATION="1223;78;" ID="Arrow_ID_184937137" SOURCE="ID_107749731" STARTARROW="None" STARTINCLINATION="370;22;"/>
<linktarget COLOR="#7a96a6" DESTINATION="ID_799408544" ENDARROW="Default" ENDINCLINATION="651;46;" ID="Arrow_ID_1767879061" SOURCE="ID_1696760158" STARTARROW="None" STARTINCLINATION="267;-849;"/>
<icon BUILTIN="info"/>
<node CREATED="1697755215608" HGAP="42" ID="ID_70962304" MODIFIED="1697755242505" TEXT="wird in der Activity-Language im Scheduler genau so ben&#xf6;tigt" VSHIFT="-4">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1681167579899" ID="ID_428564529" MODIFIED="1681167585941" TEXT="createJobFor(FrameCoord)"/>
@ -80068,7 +80076,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1693495715425" HGAP="40" ID="ID_1961334483" MODIFIED="1693495750410" TEXT="in der Planning-Pipeline ist der abh&#xe4;ngige Folge-Job als &#xbb;Parent&#xab; zug&#xe4;nglich" VSHIFT="-7">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1693495768326" HGAP="85" ID="ID_1696760158" MODIFIED="1693587703548" TEXT="daher &#x27f9; vom Ende zum Nachfolger schalten" VSHIFT="-1">
<node COLOR="#435e98" CREATED="1693495768326" HGAP="85" ID="ID_1696760158" MODIFIED="1695587703548" TEXT="daher &#x27f9; vom Ende zum Nachfolger schalten" VSHIFT="-1">
<arrowlink COLOR="#7a96a6" DESTINATION="ID_799408544" ENDARROW="Default" ENDINCLINATION="651;46;" ID="Arrow_ID_1767879061" STARTARROW="None" STARTINCLINATION="267;-849;"/>
<node COLOR="#338800" CREATED="1693495830346" ID="ID_1261227945" MODIFIED="1693587694778" TEXT="appendNotificationTo(targetTerm)">
<arrowlink COLOR="#786889" DESTINATION="ID_701999603" ENDARROW="Default" ENDINCLINATION="-1087;-893;" ID="Arrow_ID_893699409" STARTARROW="None" STARTINCLINATION="-687;55;"/>
<arrowlink COLOR="#4b8acc" DESTINATION="ID_1367094984" ENDARROW="Default" ENDINCLINATION="72;7;" ID="Arrow_ID_164230628" STARTARROW="None" STARTINCLINATION="119;9;"/>
@ -81607,6 +81616,71 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697736405977" HGAP="-3" ID="ID_1390282587" MODIFIED="1697736482656" TEXT="Scheduler-API" VSHIFT="43">
<font NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697736413463" ID="ID_996573918" MODIFIED="1697736451469" TEXT="ein sinnvolles externes API entwickeln">
<linktarget COLOR="#ff1924" DESTINATION="ID_996573918" ENDARROW="Default" ENDINCLINATION="-817;60;" ID="Arrow_ID_226641198" SOURCE="ID_1891808134" STARTARROW="None" STARTINCLINATION="-848;-40;"/>
<icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697736509591" ID="ID_1412564814" MODIFIED="1697736530363" TEXT="Ma&#xdf;gabe">
<icon BUILTIN="yes"/>
<node CREATED="1697745097705" ID="ID_1262541957" MODIFIED="1697745115210" TEXT="Scheduler wird als Service per DI zugreifbar sein"/>
<node CREATED="1697745116038" ID="ID_552854146" MODIFIED="1697745125617" TEXT="Kopplung auf die Activity-Language vermeiden"/>
<node CREATED="1697745162168" ID="ID_1987710185" MODIFIED="1697745167195" TEXT="Orientierung am Use-Case"/>
<node CREATED="1697745171552" ID="ID_1226499224" MODIFIED="1697745177738" TEXT="Konzept &#xbb;Render-Job&#xab;"/>
</node>
<node CREATED="1697745184133" ID="ID_1741520544" MODIFIED="1697745192149" TEXT="Use-Case-Analyse">
<icon BUILTIN="info"/>
<node CREATED="1697745329298" ID="ID_1167489748" MODIFIED="1697745333980" TEXT="operational control">
<node CREATED="1697745335153" ID="ID_217274836" MODIFIED="1697745434359" TEXT="Verarbeitung terminieren"/>
<node CREATED="1697745465344" ID="ID_1966078419" MODIFIED="1697745480697" TEXT="ggfs Last reduzieren (bremsen)"/>
<node CREATED="1697745497071" ID="ID_1927106783" MODIFIED="1697745500767" TEXT="Laststatus auslesen"/>
</node>
<node CREATED="1697745521832" ID="ID_1827596870" MODIFIED="1697745542346" TEXT="neuen Calc-Stream starten">
<node CREATED="1697745548029" ID="ID_907270420" MODIFIED="1697745553152" TEXT="&#xfc;bergabe eines Seed-Job"/>
<node CREATED="1697745554596" ID="ID_597142693" MODIFIED="1697745567342" TEXT="erzeugt intern auch ein Lastsignal"/>
</node>
<node CREATED="1697745688831" ID="ID_1065082154" MODIFIED="1697745695949" TEXT="Job-Standard-Schemata">
<node CREATED="1697745717790" ID="ID_1305876993" MODIFIED="1697745735895" TEXT="reinen Calc-Job"/>
<node CREATED="1697745736508" ID="ID_28608920" MODIFIED="1697745774953" TEXT="Job mit IO-Anteil"/>
<node CREATED="1697745776478" ID="ID_404896750" MODIFIED="1697745784017" TEXT="Dependency-Verkn&#xfc;pfung">
<node CREATED="1697754789889" ID="ID_93641454" MODIFIED="1697754807466" TEXT="die Voraussetzung wird auf die Folge aufgeschaltet"/>
<node CREATED="1697754808534" ID="ID_112643467" MODIFIED="1697754838318" TEXT="&#x27f9; beide Terme m&#xfc;ssen zugleich im Speicher liegen"/>
<node CREATED="1697754877693" ID="ID_107749731" MODIFIED="1697755265544" TEXT="ist in der Job-Planning-Pipeline gew&#xe4;hrleistet">
<arrowlink COLOR="#3e9bb9" DESTINATION="ID_799408544" ENDARROW="Default" ENDINCLINATION="1223;78;" ID="Arrow_ID_184937137" STARTARROW="None" STARTINCLINATION="370;22;"/>
<icon BUILTIN="idea"/>
<node COLOR="#7350b1" CREATED="1697755288338" HGAP="29" ID="ID_612802023" MODIFIED="1697755490162" VSHIFT="11">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
weil sie sinnigerweise <i>auf dem Kopf steht</i>
</p>
</body>
</html>
</richcontent>
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
....das hat sich allerdings schon aus der Analyse des Pull-Processing im Node-Network so ergeben, denn dort geht man von der ExitNode r&#252;ckw&#228;rts; damals konnte ich nicht vorhersehen, wie die Situation im Scheduler sich darstellen wird &#8212; m&#246;glicherweise verbirg sich eine tiefere, strukturelle Konvergenz dahinter, da&#223; das jetzt so <i>sch&#246;n aufgeht</i>
</p>
</body>
</html>
</richcontent>
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
</node>
<node CREATED="1697745850749" ID="ID_48640613" MODIFIED="1697745867438" TEXT="Worker-Function"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1680565469342" ID="ID_250843894" MODIFIED="1697664168767" TEXT="Priority-Scheduling">
<linktarget COLOR="#fec499" DESTINATION="ID_250843894" ENDARROW="Default" ENDINCLINATION="-644;84;" ID="Arrow_ID_1702721830" SOURCE="ID_12567096" STARTARROW="None" STARTINCLINATION="-233;30;"/>
@ -86572,13 +86646,17 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688336835085" ID="ID_1753236898" MODIFIED="1688337246573" TEXT="SchedulerUsage_test">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688336835085" ID="ID_1753236898" MODIFIED="1697732777759" TEXT="SchedulerService_test">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688337200875" ID="ID_1269476607" MODIFIED="1688337233917" TEXT="Scheduler Component End-to-End ">
<node CREATED="1688337200875" ID="ID_1269476607" MODIFIED="1697732840741" TEXT="Scheduler Component Integration End-to-End">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697473158929" ID="ID_505069585" MODIFIED="1697493162215" TEXT="Aufgaben">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697736343993" ID="ID_1891808134" MODIFIED="1697736494112" TEXT="das Scheduler-API abdecken">
<arrowlink COLOR="#ff1924" DESTINATION="ID_996573918" ENDARROW="Default" ENDINCLINATION="-817;60;" ID="Arrow_ID_226641198" STARTARROW="None" STARTINCLINATION="-848;-40;"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697484506891" ID="ID_1292738036" MODIFIED="1697484528227" TEXT="den kompletten Work-Funktor durchspielen">
<icon BUILTIN="flag-yellow"/>
</node>
@ -86587,6 +86665,140 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697755558855" ID="ID_278365674" MODIFIED="1697741858009" TEXT="SchedulerStress_test">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688337200875" ID="ID_1251284763" MODIFIED="1697735887738" TEXT="Nonfunktionale Anforderungen">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697473158929" ID="ID_555722340" MODIFIED="1697493162215" TEXT="Aufgaben">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697733005253" ID="ID_284566035" MODIFIED="1697735902191" TEXT="Leerlauf-Stresstest">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697733279313" ID="ID_1511632308" MODIFIED="1697734150888" TEXT="Ziel: Feststellen des Implementierungs-Overhead">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Einen komplett leeren Job-Funktor wiederholt back-to-back (ohne Wartezeit) aufrufen; dabei das System nicht in die S&#228;ttigung treiben
</p>
</body>
</html></richcontent>
</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&#xe4;ttigung gehen"/>
<node CREATED="1697734183385" ID="ID_883287538" MODIFIED="1697734192010" TEXT="der BlockFlow-Allocator darf nicht degenerieren"/>
<node CREATED="1697734330989" ID="ID_1732860802" MODIFIED="1697734334809" TEXT="L&#xf6;sungsans&#xe4;tze">
<node CREATED="1697734356370" ID="ID_1254835839" MODIFIED="1697734436578" TEXT="WorkForce nicht ganz auf Volllast">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
z.B. 7 Cores auf meinem 8-Core-System &#8212; damit die <i>sonstigen Sytem-aktivit&#228;ten</i>&#160;nicht zu Stau-Zust&#228;nden f&#252;hren
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1697734513005" ID="ID_803781887" MODIFIED="1697734840822" TEXT="immer nur eine Epoche rechnen mit Deadline=ASAP">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
immer nur so viele Jobs einstellen, da&#223; eine Epoche nicht ganz voll wird; aber die Startzeiten extrem dicht zusammen legen, so da&#223; im alles effektiv sofort berechenbar wird; dann kann man sinnvoll messen, wenn alles abgearbeitet ist: dazu einen Zeitmesser-Job verwenden; man kann die Zeitmessung <i>vor</i>&#160;oder <i>nach</i>&#160;dem Einstellen der Jobs starten
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1697734845040" ID="ID_348047225" MODIFIED="1697735849618" TEXT="Last mit ged&#xe4;mpfter R&#xfc;ckkopplung geregelt hochfahren bis zur S&#xe4;ttigung">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Bei diesem Ansatz wird eine Dauerlast erzeugt, indem immer ein Planungs-Chunk eine Zahl an Jobs erzeugt, die im Verh&#228;ltnis zur Epochen-Gr&#246;&#223;e steht (dabei kann auch durchaus auf eine &#220;berlastung des BlockFlow-Allokators abgezielt werden, indem man immer das N-Fache der Block-Kapazit&#228;t einstellt). Diese Jobs werden getaktet gem&#228;&#223; der aktuellen Dichte, aber diese Dichte wird langsam gesteigert, bis ein Feedback-Signal auftritt: n&#228;mlich wenn der reale Zeitpunkt des n&#228;chsten Planungs-Chunks versp&#228;tet ist, dann elastisch zur&#252;ckregeln. Bei richtiger Abstimmung sollte sich dann ein &#187;Lockstate&#171; einstellen, von dem man einen Me&#223;wert f&#252;r die erreichbare Dichte ablesen kann
</p>
</body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697733137628" ID="ID_1249232397" MODIFIED="1697733148339" TEXT="Dependency-Notification-Stresstest">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697733314115" ID="ID_537940927" MODIFIED="1697736103683" TEXT="Ziel: Overhead exzessiv vernetzter Activities">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Sollte ausgef&#252;hrt werden wie der normale Leerlauf-Stresstest, aber nun mit zus&#228;tzlichen und zunehmend exzessiven Dependencies/Notifications in der kette; beobachtet wird die Degeneration der Leerlauf-Kapazit&#228;t
</p>
</body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697733236455" ID="ID_698621499" MODIFIED="1697733269203" TEXT="Realtime Full-Load Test">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697733438012" ID="ID_18653531" MODIFIED="1697733448582" TEXT="Ziel: Vollast unter Zeitbeschr&#xe4;nkung"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697736109528" ID="ID_1697493338" MODIFIED="1697736119264" TEXT="Correctness under Load">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697736121279" ID="ID_1940006605" MODIFIED="1697736240729" TEXT="Ziel: Fehler in der Ausf&#xfc;hrungslogik ausschlie&#xdf;en">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Anders als in den Leerlauf-Tests wird hier eine &#252;berpr&#252;fbare Berechnung ausgef&#252;hrt, die aber auch Dependencies mit einschlie&#223;t. Auch unter Vollast mu&#223; die Pr&#252;fsumme korrekt sein. F&#252;r diesen Test k&#246;nnte man das System sogar kurzzeitig extrem in die S&#228;ttigung treiben (und trotzdem mu&#223; das Ergebnis stimmen)
</p>
</body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1695555555555" ID="ID_1032000470" MODIFIED="1697744929394" TEXT="#1344 Implement performance Tests for Scheduler">
<linktarget COLOR="#fde0ca" DESTINATION="ID_1032000470" ENDARROW="Default" ENDINCLINATION="-1678;88;" ID="Arrow_ID_552669850" SOURCE="ID_849227497" STARTARROW="None" STARTINCLINATION="-1536;97;"/>
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697741769556" ID="ID_1899821736" MODIFIED="1697741852506" TEXT="brauche eine reproduzierbare komplexe Last">
<arrowlink COLOR="#9b2277" DESTINATION="ID_509932054" ENDARROW="Default" ENDINCLINATION="-374;-90;" ID="Arrow_ID_1082315358" STARTARROW="None" STARTINCLINATION="-1039;60;"/>
<icon BUILTIN="flag-pink"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697732758603" ID="ID_1796420959" MODIFIED="1697741861608" TEXT="SchedulerUsage_test">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688337200875" ID="ID_470331599" MODIFIED="1697732829679" TEXT="Scheduler Service as seen from outside">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697473158929" ID="ID_966442877" MODIFIED="1697493162215" TEXT="Aufgaben">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697484506891" ID="ID_769714933" MODIFIED="1697732878690" TEXT="Verwendung des Scheduler-API">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697736275498" ID="ID_1296200966" MODIFIED="1697736334906" TEXT="Einsatz wie im Play-Process">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Es wird aber kein Play-Prozess gebaut, sondern die entsprechende Funktionalit&#228;t direkt aus dem Test aufgebaut
</p>
</body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688051068000" ID="ID_555375367" MODIFIED="1689994063022" TEXT="Thema: Arbeitsspeicher">
@ -88822,7 +89034,215 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1688336338313" ID="ID_1758461421" MODIFIED="1688336340923" TEXT="Integration"/>
<node CREATED="1688336338313" ID="ID_1758461421" MODIFIED="1688336340923" TEXT="Integration">
<node CREATED="1697737141910" ID="ID_1785585308" MODIFIED="1697737251106" TEXT="sinnvolle Test-Last">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697737421147" ID="ID_1561659970" MODIFIED="1697741708429" TEXT="M&#xf6;glichkeiten untersuchen">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697737450229" ID="ID_209380993" MODIFIED="1697738314019" TEXT="Rahmen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1697737465179" ID="ID_1204584376" MODIFIED="1697737798383" TEXT="selber Programmieren">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
An Libraries ist nur erlaubt, was ohnehin <i>in Reichweite liegt</i>&#160;(also elementare Video-Libraries und Cairo zum Zeichnen). Der Code wird Teil des Projekts, sollte daher in C++ stehen und allen Qualit&#228;tsstandards entsprechen. Sinnvollerweise wird der Code in ein ad-hoc-Plugin gepackt, um den Umgang mit Dependencies zu erleichtern
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1697737473137" ID="ID_1145748705" MODIFIED="1697737860816" TEXT="nicht viel Zeit darauf verwenden">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
&#8222;viel&#8220; ist relativ. Es darf schon Spa&#223; machen, aber es sollte nicht in ein monatelanges Kunst-Projekt ausufern
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1697737543296" ID="ID_635918288" MODIFIED="1697738301537" TEXT="sollte gewisse Lastformen erzeugen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Der Datengenerator bewegt sich in einem gewissen Rahmen: bei hinreichend kleiner Aufl&#246;sung mu&#223; er zuverl&#228;ssig und ohne Aussetzer in Echtzeit laufen, und zwar mit 30fps. Idealerweise gibt es Parameter, um die Last stark zu erh&#246;hen, so da&#223; man ihn auch zum Test von Qualit&#228;ts-Renders heranziehen kann. Weiterhin sollte es sich im Wesentlichen um eine computational load handeln; ein gewisser Speicherbedarf ist dabei akzeptabel, externe IO nicht.
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1697737491239" ID="ID_815953078" MODIFIED="1697738077728" TEXT="Ergebnis soll Stil haben">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Da das Projekt auf eine gewisse &#246;ffentliche Sichtbarkeit zusteuert, werden alle sichtbaren und leicht fa&#223;baren Elemente auf subtile Weise zu einer Visitenkarte. Dieser Playback ist so ziemlich das Erste und Einzige seit vielen Jahren, das man sehen und erfassen kann. Es sollte daher klar sein, da&#223; es in jeder Form einen Eindruck hinterl&#228;&#223;t.
</p>
</body>
</html></richcontent>
<node CREATED="1697737592482" ID="ID_582917015" MODIFIED="1697737597269" TEXT="der Code wird gelesen werden"/>
<node CREATED="1697737597843" ID="ID_312918314" MODIFIED="1697737604211" TEXT="das Ergebnis sehen auch Laien"/>
</node>
</node>
<node CREATED="1697738335886" ID="ID_1301961424" MODIFIED="1697738346874" TEXT="Ideen f&#xfc;r generative Graphik">
<icon BUILTIN="idea"/>
<node CREATED="1697738374212" ID="ID_1243145753" MODIFIED="1697738446795" TEXT="Spektrum">
<node CREATED="1697738383296" ID="ID_574153942" MODIFIED="1697738385097" TEXT="retro"/>
<node CREATED="1697738378505" ID="ID_1742589890" MODIFIED="1697738382084" TEXT="nerdig"/>
<node CREATED="1697738400023" ID="ID_1315204869" MODIFIED="1697738402081" TEXT="magisch"/>
<node CREATED="1697738386902" ID="ID_284499392" MODIFIED="1697738398842" TEXT="futuristisch"/>
<node CREATED="1697738406139" ID="ID_1314876040" MODIFIED="1697738411629" TEXT="wissenschaftlich"/>
</node>
<node CREATED="1697738465629" ID="ID_95162985" MODIFIED="1697738467361" TEXT="Quellen">
<node CREATED="1697738525765" ID="ID_1218093676" LINK="https://flam3.com/flame_draves.pdf" MODIFIED="1697738678279" TEXT="Scott Draves: Flame-Algo">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Beschreibt das Prinzip rekursiver fraktaler Funktionen, und stellt dann Erweiterungen vor, die in seinem &#187;Flam3&#171; implementiert sind. Auf dieser Basis hat er &#187;Electric Sheep&#171; aufgebaut, welches auch die Grafik-Definitionen selber durch einen generativen Proze&#223; weiterentwickelt.
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1697739021864" ID="ID_924992668" LINK="http://www.complexification.net" MODIFIED="1697739033149" TEXT="Complexification-Net">
<node CREATED="1697739042984" ID="ID_342887840" MODIFIED="1697739052554" TEXT="Stichwort &#xbb;Substrate&#xab;"/>
</node>
<node CREATED="1697738795321" ID="ID_738530174" LINK="https://www.freecodecamp.org/news/an-introduction-to-generative-art-what-it-is-and-how-you-make-it-b0b363b50a70/" MODIFIED="1697738825319" TEXT="freeCodeCamp: An introduction to Generative Art (10/2018)"/>
<node CREATED="1697738836356" ID="ID_1866781648" LINK="https://www.generativehut.com/tutorials" MODIFIED="1697738850171" TEXT="GenerativeHut : Tutorials">
<node CREATED="1697738961811" ID="ID_257142214" LINK="https://www.generativehut.com/post/recreating-the-noise-orbit" MODIFIED="1697738988141" TEXT="Tutorial: Noise-Orbit">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1697738474108" ID="ID_1262573737" MODIFIED="1697738479399" TEXT="Konkretisierung des Rahmens">
<node CREATED="1697738498130" ID="ID_921865940" MODIFIED="1697738501879" TEXT="mit Cairo zeichnen"/>
<node CREATED="1697738502632" ID="ID_474402832" MODIFIED="1697738512127" TEXT="einfach aber mit raffizierter Palette"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697739167511" ID="ID_462701673" MODIFIED="1697741726482" TEXT="Last f&#xfc;r Messungen">
<icon BUILTIN="pencil"/>
<node CREATED="1697739192956" ID="ID_1199894921" MODIFIED="1697739211725" TEXT="Korrektheit mu&#xdf; verifizierbar sein"/>
<node CREATED="1697739215921" ID="ID_880522211" MODIFIED="1697739222701" TEXT="Last-Parameter sollten steuerbar sein"/>
<node CREATED="1697739223592" ID="ID_1177697704" MODIFIED="1697741617543" TEXT="Naheliegend: Pr&#xfc;fsummen-Kette">
<arrowlink COLOR="#fcffac" DESTINATION="ID_509932054" ENDARROW="Default" ENDINCLINATION="44;-115;" ID="Arrow_ID_388403838" STARTARROW="None" STARTINCLINATION="-227;20;"/>
<icon BUILTIN="idea"/>
<node CREATED="1697739240230" ID="ID_1190486942" MODIFIED="1697739258607" TEXT="wie in Git oder Blockchain">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1697739420322" ID="ID_1934582663" MODIFIED="1697739433348" TEXT="Vorgabe: stabiler Berechnungs-Strom">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1697739314316" ID="ID_1389662036" MODIFIED="1697739320743" TEXT="Randomised Side-Chains">
<node CREATED="1697739585271" ID="ID_214582424" MODIFIED="1697739867461" TEXT="Zahlenfolge in eine Hash-Summe einbuchen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<ul>
<li>
es wird eine echte Hash-Funktion verwendet, die auch Vertauschungen erkennt
</li>
<li>
eingerechnet wird in jedem Berechnungsschritt jeweils ein lokaler Zahlenwert
</li>
<li>
dieser ergibt sich im einfachsten Fall aus einem laufenden Z&#228;hler
</li>
</ul>
</body>
</html></richcontent>
</node>
<node CREATED="1697739654662" ID="ID_200209889" MODIFIED="1697740265583" TEXT="&#x201e;zuf&#xe4;lliger&#x201c; limitierter R&#xfc;ckgriff auf &#xe4;ltere Ergebnisse">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Ein lokal berechneter Hashwert kann als pseudo-Zufallszahl verwendet werden, um eine gewisse Zahl an Neben-Zweigen zu erzeugen; diese greifen in einem limitierten Rahmen auf vorausgehende Ergebnisse zur&#252;ck. Diese werden dadurch zu Voraussetzungen.
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1697739748719" ID="ID_1722048889" MODIFIED="1697740071380" TEXT="lokale Iteration um Last zu erzeugen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
die Hash-Funktion wird N-fach auf das Zwischenergebnis angewendet, f&#252;r gro&#223;es N. Damit kann CPU-Last erzeugt werden
</p>
</body>
</html></richcontent>
</node>
</node>
<node CREATED="1697740269884" ID="ID_1006441438" MODIFIED="1697740623243" TEXT="ist deterministisch und parallelisierbar">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Wenn man nicht immer auf den unmittelbaren Vorg&#228;nger zur&#252;ckgreift, sondern auf zuf&#228;llige Vorg&#228;nger, entsteht ein chaotischer DAG, der aber aufgrund der Limitierung stets Forschritt macht. Durch die teilweise lokale Entkoppelung der Zweige wird die Berechnung parallelisierbar; da sich jede Entscheidung aber aus den Eingangsdaten ergibt, mu&#223; das Ergebnis 100% deterministisch sein.
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1697740624211" ID="ID_1773119907" MODIFIED="1697740764084" TEXT="f&#xfc;r den Test wird die Verzweigungsstruktur vorgeneriert">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Das Ergebnis mu&#223; ohnehin einmal auf konventionellem Weg berechnet werden; an dieser Stelle kann man die sich ergebende Verkn&#252;pfungs-Struktur ausgeben, um daraus verkn&#252;pfte Render-Jobs zu machen
</p>
</body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697740783336" ID="ID_509932054" MODIFIED="1697741849980" TEXT="TestChainLoad">
<linktarget COLOR="#9b2277" DESTINATION="ID_509932054" ENDARROW="Default" ENDINCLINATION="-374;-90;" ID="Arrow_ID_1082315358" SOURCE="ID_1899821736" STARTARROW="None" STARTINCLINATION="-1039;60;"/>
<linktarget COLOR="#fcffac" DESTINATION="ID_509932054" ENDARROW="Default" ENDINCLINATION="44;-115;" ID="Arrow_ID_388403838" SOURCE="ID_1177697704" STARTARROW="None" STARTINCLINATION="-227;20;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697740826362" ID="ID_1948434460" MODIFIED="1697740845523" TEXT="eine verifizierbare verzweigte Berechnungs-Last">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697740857815" ID="ID_1544079509" MODIFIED="1697740865360" TEXT="in separatem Test entwerfen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697741633966" ID="ID_787175245" MODIFIED="1697741674433" TEXT="Nutzen vorher kl&#xe4;ren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1697741661950" ID="ID_1735458016" MODIFIED="1697741661950" TEXT="Darstellung der Abh&#xe4;ngigkeits-Struktur"/>
<node CREATED="1697741689551" ID="ID_1012140830" MODIFIED="1697741694906" TEXT="Art der Daten&#xfc;bergabe"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697743909120" ID="ID_483537733" MODIFIED="1697743924734" TEXT="#1346 reproducible computational load">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697740877587" ID="ID_1275890321" MODIFIED="1697741670215" TEXT="TestChainLoad_test">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697737304920" ID="ID_1305412516" MODIFIED="1697737436489" TEXT="DemoVideoGenerator">
<arrowlink COLOR="#6f587c" DESTINATION="ID_460039330" ENDARROW="Default" ENDINCLINATION="-263;-171;" ID="Arrow_ID_48943827" STARTARROW="None" STARTINCLINATION="-695;79;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1685399667668" ID="ID_463573092" MODIFIED="1685399687234" TEXT="Begriffe">
@ -89685,8 +90105,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1512923629577" ID="ID_617347424" MODIFIED="1557498707237" TEXT="Backend">
<node CREATED="1680565608115" ID="ID_1114884704" MODIFIED="1680565612050" TEXT="Hilfsmittel">
<node CREATED="1680565613038" ID="ID_1202060017" MODIFIED="1680565616857" TEXT="Content-Generator">
<node CREATED="1680565626147" ID="ID_460039330" MODIFIED="1680566930977" TEXT="Test-Content f&#xfc;r Playback">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680565626147" ID="ID_460039330" MODIFIED="1697737436489" TEXT="Test-Content f&#xfc;r Playback">
<linktarget COLOR="#6f587c" DESTINATION="ID_460039330" ENDARROW="Default" ENDINCLINATION="-263;-171;" ID="Arrow_ID_48943827" SOURCE="ID_1305412516" STARTARROW="None" STARTINCLINATION="-695;79;"/>
<linktarget COLOR="#fec499" DESTINATION="ID_460039330" ENDARROW="Default" ENDINCLINATION="-632;68;" ID="Arrow_ID_1437229627" SOURCE="ID_988488968" STARTARROW="None" STARTINCLINATION="-241;31;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
@ -95790,6 +96212,10 @@ class Something
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1695555555555" ID="ID_849227497" MODIFIED="1697744929393" TEXT="#1344 Scheduler performance tests">
<arrowlink COLOR="#fde0ca" DESTINATION="ID_1032000470" ENDARROW="Default" ENDINCLINATION="-1678;88;" ID="Arrow_ID_552669850" STARTARROW="None" STARTINCLINATION="-1536;97;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680388296693" ID="ID_283603911" LINK="https://issues.lumiera.org/ticket/1284" MODIFIED="1680388318115" TEXT="#1284 Render Engine operational control">
<icon BUILTIN="hourglass"/>
@ -95880,7 +96306,16 @@ class Something
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1679783694673" ID="ID_455505067" MODIFIED="1679783698044" TEXT="dokumentieren"/>
<node CREATED="1679783694673" ID="ID_455505067" MODIFIED="1679783698044" TEXT="dokumentieren">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#5c4d6e" CREATED="1695555555555" FOLDED="true" HGAP="100" ID="ID_1867742420" MODIFIED="1695555555555" TEXT="#1111 Placehoder" VSHIFT="86">
<arrowlink COLOR="#fde0ca" DESTINATION="ID_1436808339" ENDARROW="Default" ENDINCLINATION="-1090;99;" ID="Arrow_ID_449422905" STARTARROW="None" STARTINCLINATION="-1258;160;"/>
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#990000" CREATED="1695555555555" ID="ID_1436808339" MODIFIED="1695555555555" TEXT="#1111 Implement: Placehoder">
<linktarget COLOR="#fde0ca" DESTINATION="ID_1436808339" ENDARROW="Default" ENDINCLINATION="-1090;99;" ID="Arrow_ID_449422905" SOURCE="ID_1867742420" STARTARROW="None" STARTINCLINATION="-1258;160;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
</node>