Scheduler-test: press harder with long and massive graph

...observing multiple failures, which seem to be interconnected

- the test-setup with the planning chunk pre-roll is insufficient

- basically it is not possible to perform further concurrent planning,
  without getting behind the actual schedule; at least in the setup
  with DUMP print statements (which slowdown everything)

- muliple chained re-entrant calls into the planning function can result

- the **ASSERTION in the Allocator** was triggered again

- the log+stacktrace indicate that there **is still a Gap**
  in the logic to protect the allocations via Grooming-Token
This commit is contained in:
Fischlurch 2023-12-21 23:26:01 +01:00
parent 2cd51fa714
commit 90ab20be61
3 changed files with 819 additions and 123 deletions

View file

@ -84,10 +84,11 @@ namespace test {
smokeTest()
{
MARK_TEST_FUN
TestChainLoad testLoad{128};
TestChainLoad testLoad{512};
testLoad.configureShape_chain_loadBursts()
.buildToplolgy()
.printTopologyDOT();
// .printTopologyDOT()
;
auto stats = testLoad.computeGraphStatistics();
cout << _Fmt{"Test-Load: Nodes: %d Levels: %d ∅Node/Level: %3.1f Forks: %d Joins: %d"}
@ -120,7 +121,8 @@ namespace test {
double performanceTime =
testLoad.setupSchedule(scheduler)
.withLoadTimeBase(LOAD_BASE)
.withJobDeadline(50ms)
.withJobDeadline(100ms)
.withChunkSize(20)
.launch_and_wait();
cout << "runTime(Scheduler): "<<performanceTime/1000<<"ms"<<endl;

View file

@ -166,7 +166,7 @@ namespace test {
const double LOAD_SPEED_BASELINE = 100; ///< initial assumption for calculation speed (without calibration)
const microseconds LOAD_DEFAULT_TIME = 100us; ///< default time delay produced by ComputationalLoad at `Node.weight==1`
const size_t LOAD_DEFAULT_MEM_SIZE = 1000; ///< default allocation base size used if ComputationalLoad.useAllocation
const microseconds PLANNING_TIME_PER_NODE = 80us; ///< time budget to reserve for each node to be planned and scheduled
const microseconds PLANNING_TIME_PER_NODE = 400us; ///< time budget to reserve for each node to be planned and scheduled
}

File diff suppressed because it is too large Load diff