From 001aa829c5a920f3ee7f81fe8943847b41edd2d8 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 5 Jan 2024 23:06:56 +0100 Subject: [PATCH] Scheduler-test: implement base offset per node MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ...actually difficult to integrate into the existing scheme, which is entirely level-based. Can only be added to the individual Jobs, not to the planning and completion-jobs — which actually shouldn't be a problem, since it is beneficial to dispatch the planning runs earlier --- tests/vault/gear/test-chain-load.hpp | 14 ++++++++------ wiki/thinkPad.ichthyo.mm | 28 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/tests/vault/gear/test-chain-load.hpp b/tests/vault/gear/test-chain-load.hpp index 9ee2616b0..27b168c34 100644 --- a/tests/vault/gear/test-chain-load.hpp +++ b/tests/vault/gear/test-chain-load.hpp @@ -1669,8 +1669,8 @@ namespace test { lib::UninitialisedDynBlock schedule_; FrameRate levelSpeed_{1, SCHEDULE_LEVEL_STEP}; - FrameRate nodeSpeed_{1, SCHEDULE_NODE_STEP}; FrameRate planSpeed_{1, SCHEDULE_PLAN_STEP}; + TimeVar nodeExpense_{SCHEDULE_NODE_STEP}; double schedNotify_{SCHEDULE_NOTIFY? 1.0:0.0}; bool schedDepends_{SCHEDULE_DEPENDENCY}; uint blockLoadFactor_{2}; @@ -1696,7 +1696,7 @@ namespace test { { schedule_[idx] = scheduler_.defineSchedule(calcJob (idx,level)) .manifestation(manID_) - .startTime (jobStartTime(level)) + .startTime (jobStartTime(level, idx)) .lifeWindow (deadline_) .post(); } @@ -1793,7 +1793,8 @@ namespace test { double getExpectedEndTime() { - return _raw(startTimes_.back() - startTimes_.front()); + return _raw(startTimes_.back() - startTimes_.front() + + Duration{nodeExpense_}*chainLoad_.size()); } @@ -1840,7 +1841,7 @@ namespace test { ScheduleCtx&& withBaseExpense (microseconds fixedTime_per_node) { - nodeSpeed_ = FrameRate{1, Duration{_uTicks(fixedTime_per_node)}}; + nodeExpense_ = _uTicks(fixedTime_per_node); return move(*this); } @@ -2030,10 +2031,11 @@ namespace test { } Time - jobStartTime (size_t level) + jobStartTime (size_t level, size_t nodeIDX =0) { ENSURE (level < startTimes_.size()); - return startTimes_[level]; + return startTimes_[level] + + nodeExpense_ * nodeIDX; } Time diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index ff842b43d..b74305eea 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -107939,9 +107939,18 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + + @@ -110599,6 +110608,25 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + + + + +

+ die typische Test-Load ~ 500µs braucht im Scheduler-Kontext oft doppelt so lange als kalibriert +

+ + +
+ +