lumiera_/tests/vault/gear
Ichthyostega 3716a5b3d4 Scheduler-test: address defects in memory manager
...discovered by during investigation of latest Scheduler failures.
The root of the problems is that block overflow can potentially trigger
expansion of the allocation pool. Under some circumstances, this on-the fly
allocation requires a rotation of index slots, thereby invalidating
existing iterators.

While such behaviour is not uncommon with storage data structures (see std::vector),
in this case it turns out problematic because due to performance considerations,
a usage pattern emerged which exploits re-using existing storage »Slots« with known
deadline. This optimisation seems to have significant leverage on the
planning jobs, which happen to allocated and arrange a whole strike of
Activities with similar deadlines.

One of these problem situations can easily be fixed, since it is triggered
through the iterator itself, using a delegate function to request a storage expansion,
at which point the iterator is able to re-link and fix its internal index.
This solution also has no tangible performance implications in optimised code.

Unfortunately there remains one obscure corner case where such an pool expansion
could also have invalidated other iterators, which are then used later to
attach dependency relations; even a partial fix for that problem seems
to cause considerable performance cost of about -14% in optimised code.
2023-12-27 00:16:03 +01:00
..
activity-detector-test.cpp Scheduler-test: rework handling of notifications in the Activity-Language 2023-12-16 23:47:50 +01:00
activity-detector.hpp Scheduler-test: rework handling of notifications in the Activity-Language 2023-12-16 23:47:50 +01:00
block-flow-test.cpp Scheduler-test: address defects in memory manager 2023-12-27 00:16:03 +01:00
scheduler-activity-test.cpp Scheduler-test: rework handling of notifications in the Activity-Language 2023-12-16 23:47:50 +01:00
scheduler-commutator-test.cpp Scheduler-test: adapt tests to changed logic at entrance 2023-12-27 00:16:03 +01:00
scheduler-invocation-test.cpp Scheduler: reconciled into clearer design 2023-11-04 04:49:13 +01:00
scheduler-load-control-test.cpp Scheduler: connect BlockFlow capacity announcement 2023-11-10 23:52:20 +01:00
scheduler-service-test.cpp Scheduler-test: adapt tests to changed logic at entrance 2023-12-27 00:16:03 +01:00
scheduler-stress-test.cpp Scheduler-test: adapt tests to changed logic at entrance 2023-12-27 00:16:03 +01:00
scheduler-usage-test.cpp Scheduler: plan for integration 2023-10-20 00:59:50 +02:00
special-job-fun-test.cpp Scheduler-test: a helper for one-time operations 2023-12-08 03:16:57 +01:00
test-chain-load-test.cpp Scheduler-test: Integration-test now running smoothly 2023-12-18 23:34:10 +01:00
test-chain-load.hpp Scheduler-test: investigate planning failure 2023-12-23 21:38:51 +01:00
work-force-test.cpp Scheduler-test: implement contention mitigation scheme 2023-12-20 20:25:17 +01:00