From 0aa1edf07cc13f04d871f8ba69455c7842d9d98a Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Tue, 23 Jan 2024 18:29:09 +0100 Subject: [PATCH] Scheduler-test: investigate behaviour of a load for stress testing The goal is to devise a load more akin to the expected real-world processing patterns, and then to increase the density to establish a breaking point. Preliminary investigations focus on establishing the properties of this load and to ensure the actual computation load behaves as expected. Using the third Graph pattern prepared thus far, which produces short chains of length=2, yet immediately spread out to maximum concurrency. This leads to 5.8 Nodes / Level on average. --- tests/vault/gear/scheduler-stress-test.cpp | 18 ++++++++++-------- tests/vault/gear/test-chain-load.hpp | 2 +- wiki/thinkPad.ichthyo.mm | 22 +++++++++++----------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/tests/vault/gear/scheduler-stress-test.cpp b/tests/vault/gear/scheduler-stress-test.cpp index 7c3fc7f24..0d783226f 100644 --- a/tests/vault/gear/scheduler-stress-test.cpp +++ b/tests/vault/gear/scheduler-stress-test.cpp @@ -334,24 +334,24 @@ namespace test { .pruningRule(testLoad.rule().probability(0.44)) .setSeed(55) .buildTopology() - .printTopologyDOT() - .printTopologyStatistics() +// .printTopologyDOT() +// .printTopologyStatistics() ; // ////////////////////////////////////////////////////////WIP : Run test directly for investigation of SEGFAULT.... // BlockFlowAlloc bFlow; // EngineObserver watch; // Scheduler scheduler{bFlow, watch}; -// auto LOAD_BASE = 500us; + auto LOAD_BASE = 500us; // auto stressFac = 1.0; // auto concurrency = 8; // -// ComputationalLoad cpuLoad; -// cpuLoad.timeBase = LOAD_BASE; -// cpuLoad.calibrate(); + ComputationalLoad cpuLoad; + cpuLoad.timeBase = LOAD_BASE; + cpuLoad.calibrate(); // -// double loadMicros = cpuLoad.invoke(); + double loadMicros = cpuLoad.invoke(); // double refTime = testLoad.calcRuntimeReference(LOAD_BASE); -//SHOW_EXPR(loadMicros) +SHOW_EXPR(loadMicros) // // auto testSetup = // testLoad.setupSchedule(scheduler) @@ -368,6 +368,8 @@ namespace test { struct Setup : StressRig { usec LOAD_BASE = 500us; + usec BASE_EXPENSE = 200us; + double UPPER_STRESS = 8; // uint CONCURRENCY = 4; // bool SCHED_DEPENDS = true; bool showRuns = true; diff --git a/tests/vault/gear/test-chain-load.hpp b/tests/vault/gear/test-chain-load.hpp index 505ef05bb..4e5c7d8b2 100644 --- a/tests/vault/gear/test-chain-load.hpp +++ b/tests/vault/gear/test-chain-load.hpp @@ -2057,7 +2057,7 @@ namespace test { return chainLoad_.allExitNodes() .transform([&](Node& n){ return chainLoad_.nodeID(n); }) .filter([=](size_t idx){ return idx >= lastChunkStartIDX; }); - } // index of all Exit-Nodes within last planning-chunk... + } // index of all Exit-Nodes within last planning-chunk... Time calcPlanScheduleTime (size_t lastNodeIDX) diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index ddc064f93..98a9f3758 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -110784,13 +110784,12 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
die ganzen Test zur Integration und zum Aufbau der Testanordnung haben die »chained load bursts« verwendet, ein hochgradig unregelmäßiges und abschnittsweise stark verknüpftes Pattern. Damit konnte ich in etwa die erwartete Parallelisierung beobachten, aber die Computational Load ist typischerweise doppelt so lang gelaufen wie kalibriert, während gleichzeitig permanent Koordinations-Aufwand zu leisten war. Deshalb wähle ich nun einen anderen Blickwinkel: Wie gut können wir die theoretisch vorhandene »Rechenkapazität« zum Einsatz bringen? Dafür braucht es ein möglichst einfaches Pattern, das aber hinreichend breit sein muß, um alle Kerne auszulasten. Ziel ist es, einen gleichmäßigen »Flow« von länger laufenden Rechen-Jobs zu generieren

- - + - + @@ -110814,14 +110813,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
                  ;

- -
+
- + @@ -110845,14 +110843,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
                  ;

- -
+
- + @@ -110876,8 +110873,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
                  ;

- -
+
@@ -110897,6 +110893,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ @@ -110998,6 +110995,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + +