Scheduler-test: measurements documented

This commit is contained in:
Fischlurch 2024-04-09 16:57:26 +02:00
parent 6e7f9edf43
commit a6a9155cd9
5 changed files with 1156 additions and 21 deletions

View file

@ -1,5 +1,5 @@
Scheduler Integration Testing
-----------------------------
=============================
:date: 2023-12-09
After successfully completing the unit tests for the newly built scheduler,

View file

@ -0,0 +1,687 @@
|
| »watch_expenseFunction«
|
INDI: cnt frac ∅pS ∅pL ∅pLW γL◆ γLW◆ γL⬙ γLW⬙
node: 50 100% 1.0 1.00 1.00 0.50 0.50 0.50 0.50
seed: 50 100% 1.0 1.00 1.00 0.50 0.50 0.50 0.50
exit: 50 100% 1.0 1.00 1.00 0.50 0.50 0.50 0.50
innr: 0 0% 0.0 0.00 0.00 0.00 0.00 0.50 0.50
fork: 0 0% 0.0 0.00 0.00 0.00 0.00 0.50 0.50
join: 0 0% 0.0 0.00 0.00 0.00 0.00 0.50 0.50
link: 0 0% 0.0 0.00 0.00 0.00 0.00 0.50 0.50
knot: 0 0% 0.0 0.00 0.00 0.00 0.00 0.50 0.50
wght: 50 100% 1.0 1.00 1.00 0.50 0.50 0.50 0.50
LEVL: 50
SEGS: 50 h = ∅1.0 / max. 1
───═══───═══───═══───═══───═══───═══───═══───═══───═══───═══───
# Run with
# - CONCURRENCY = 4;
# - REPETITIONS = 40;
# - withLoadTimeBase(2ms);
# - withLevelDuration(200us);
# - perform<bench::ParameterRange> (10,100);
+++ 7F: seed(num:50)
ANCHOR=0 preRoll=10000 now @-9880 sched.steps=51
■□■schedule■□■
lev:0 t= 0.00
lev:1 t= 0.20
lev:2 t= 0.40
lev:3 t= 0.60
lev:4 t= 0.80
lev:5 t= 1.00
lev:6 t= 1.20
lev:7 t= 1.40
lev:8 t= 1.60
lev:9 t= 1.80
lev:10 t= 2.00
lev:11 t= 2.20
lev:12 t= 2.40
lev:13 t= 2.60
lev:14 t= 2.80
lev:15 t= 3.00
lev:16 t= 3.20
lev:17 t= 3.40
lev:18 t= 3.60
lev:19 t= 3.80
lev:20 t= 4.00
lev:21 t= 4.20
lev:22 t= 4.40
lev:23 t= 4.60
lev:24 t= 4.80
lev:25 t= 5.00
lev:26 t= 5.20
lev:27 t= 5.40
lev:28 t= 5.60
lev:29 t= 5.80
lev:30 t= 6.00
lev:31 t= 6.20
lev:32 t= 6.40
lev:33 t= 6.60
lev:34 t= 6.80
lev:35 t= 7.00
lev:36 t= 7.20
lev:37 t= 7.40
lev:38 t= 7.60
lev:39 t= 7.80
lev:40 t= 8.00
lev:41 t= 8.20
lev:42 t= 8.40
lev:43 t= 8.60
lev:44 t= 8.80
lev:45 t= 9.00
lev:46 t= 9.20
lev:47 t= 9.40
lev:48 t= 9.60
lev:49 t= 9.80
lev:50 t=10.00
‖IGN‖ ..: @ -9008
‖▷▷▷‖ 7F: @ -8991 EMPTY
‖IGN‖ : @ -8341 ->wof:4
‖SCH‖ 7F: @-8327 ○ start=-9097 dead:100000
·‖ 38: @-8156 HT:-3991 -> ▶ -9097
!◆!plan...to:49 |curr=0 (max:50)
|n.(0,lev:0)
... dispose(i=0,lev:0) -> @0
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7967 ○ start=0 dead:100000
|n.(1,lev:1)
... dispose(i=1,lev:1) -> @200
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7890 ○ start=200 dead:100000
|n.(2,lev:2)
... dispose(i=2,lev:2) -> @400
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7820 ○ start=400 dead:100000
|n.(3,lev:3)
... dispose(i=3,lev:3) -> @600
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7751 ○ start=600 dead:100000
|n.(4,lev:4)
... dispose(i=4,lev:4) -> @800
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7683 ○ start=800 dead:100000
|n.(5,lev:5)
... dispose(i=5,lev:5) -> @1000
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7618 ○ start=1000 dead:100000
|n.(6,lev:6)
... dispose(i=6,lev:6) -> @1200
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7553 ○ start=1200 dead:100000
|n.(7,lev:7)
... dispose(i=7,lev:7) -> @1400
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7484 ○ start=1400 dead:100000
|n.(8,lev:8)
... dispose(i=8,lev:8) -> @1600
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7418 ○ start=1600 dead:100000
|n.(9,lev:9)
... dispose(i=9,lev:9) -> @1800
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7353 ○ start=1800 dead:100000
|n.(10,lev:10)
... dispose(i=10,lev:10) -> @2000
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7288 ○ start=2000 dead:100000
|n.(11,lev:11)
... dispose(i=11,lev:11) -> @2200
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7222 ○ start=2200 dead:100000
|n.(12,lev:12)
... dispose(i=12,lev:12) -> @2400
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7158 ○ start=2400 dead:100000
|n.(13,lev:13)
... dispose(i=13,lev:13) -> @2600
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7093 ○ start=2600 dead:100000
|n.(14,lev:14)
... dispose(i=14,lev:14) -> @2800
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-7028 ○ start=2800 dead:100000
|n.(15,lev:15)
... dispose(i=15,lev:15) -> @3000
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6945 ○ start=3000 dead:100000
|n.(16,lev:16)
... dispose(i=16,lev:16) -> @3200
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6876 ○ start=3200 dead:100000
|n.(17,lev:17)
... dispose(i=17,lev:17) -> @3400
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6811 ○ start=3400 dead:100000
|n.(18,lev:18)
... dispose(i=18,lev:18) -> @3600
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6746 ○ start=3600 dead:100000
|n.(19,lev:19)
... dispose(i=19,lev:19) -> @3800
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6681 ○ start=3800 dead:100000
|n.(20,lev:20)
... dispose(i=20,lev:20) -> @4000
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6617 ○ start=4000 dead:100000
|n.(21,lev:21)
... dispose(i=21,lev:21) -> @4200
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6553 ○ start=4200 dead:100000
|n.(22,lev:22)
... dispose(i=22,lev:22) -> @4400
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6489 ○ start=4400 dead:100000
|n.(23,lev:23)
... dispose(i=23,lev:23) -> @4600
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6425 ○ start=4600 dead:100000
|n.(24,lev:24)
... dispose(i=24,lev:24) -> @4800
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6361 ○ start=4800 dead:100000
|n.(25,lev:25)
... dispose(i=25,lev:25) -> @5000
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6297 ○ start=5000 dead:100000
|n.(26,lev:26)
... dispose(i=26,lev:26) -> @5200
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6232 ○ start=5200 dead:100000
|n.(27,lev:27)
... dispose(i=27,lev:27) -> @5400
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6165 ○ start=5400 dead:100000
|n.(28,lev:28)
... dispose(i=28,lev:28) -> @5600
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6099 ○ start=5600 dead:100000
|n.(29,lev:29)
... dispose(i=29,lev:29) -> @5800
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-6035 ○ start=5800 dead:100000
|n.(30,lev:30)
... dispose(i=30,lev:30) -> @6000
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5971 ○ start=6000 dead:100000
|n.(31,lev:31)
... dispose(i=31,lev:31) -> @6200
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5906 ○ start=6200 dead:100000
|n.(32,lev:32)
... dispose(i=32,lev:32) -> @6400
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5836 ○ start=6400 dead:100000
|n.(33,lev:33)
... dispose(i=33,lev:33) -> @6600
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5772 ○ start=6600 dead:100000
|n.(34,lev:34)
... dispose(i=34,lev:34) -> @6800
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5708 ○ start=6800 dead:100000
|n.(35,lev:35)
... dispose(i=35,lev:35) -> @7000
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5643 ○ start=7000 dead:100000
|n.(36,lev:36)
... dispose(i=36,lev:36) -> @7200
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5578 ○ start=7200 dead:100000
|n.(37,lev:37)
... dispose(i=37,lev:37) -> @7400
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5514 ○ start=7400 dead:100000
|n.(38,lev:38)
... dispose(i=38,lev:38) -> @7600
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5450 ○ start=7600 dead:100000
|n.(39,lev:39)
... dispose(i=39,lev:39) -> @7800
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5386 ○ start=7800 dead:100000
|n.(40,lev:40)
... dispose(i=40,lev:40) -> @8000
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5321 ○ start=8000 dead:100000
|n.(41,lev:41)
... dispose(i=41,lev:41) -> @8200
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5257 ○ start=8200 dead:100000
|n.(42,lev:42)
... dispose(i=42,lev:42) -> @8400
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5193 ○ start=8400 dead:100000
|n.(43,lev:43)
... dispose(i=43,lev:43) -> @8600
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5129 ○ start=8600 dead:100000
|n.(44,lev:44)
... dispose(i=44,lev:44) -> @8800
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5065 ○ start=8800 dead:100000
|n.(45,lev:45)
... dispose(i=45,lev:45) -> @9000
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-5001 ○ start=9000 dead:100000
|n.(46,lev:46)
... dispose(i=46,lev:46) -> @9200
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-4933 ○ start=9200 dead:100000
|n.(47,lev:47)
... dispose(i=47,lev:47) -> @9400
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-4869 ○ start=9400 dead:100000
|n.(48,lev:48)
... dispose(i=48,lev:48) -> @9600
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-4805 ○ start=9600 dead:100000
|n.(49,lev:49)
... dispose(i=49,lev:49) -> @9800
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-4741 ○ start=9800 dead:100000
+++ 38: Continuation(chunkStart=0, lastNode=49, levelDone=49, work_left:false)
·‖ 62: @-3986 HT:-3991 -> ∘ ·‖ 15: @-3988 HT:-3991 -> ∘
·‖ 62: @-3893 HT:-3991 -> ∘
·‖ 26: @-3977 HT:-3991 -> ∘
·‖ 62: @-3827 HT:-3991 -> ∘ ·‖ 15: @-3836 HT:-3991 -> ∘
·‖ 26: @-3815 HT:-3991 -> ∘
·‖ 26: @-3740 HT:-3991 -> ∘
·‖ 15: @-3741 HT:-3991 -> ∘
·‖ 62: @-3701 HT:-3991 -> ∘ ·‖ 26: @-3679 HT:-3991 -> ∘
·‖ 15: @-3622 HT:-3991 -> ∘
·‖ 26: @-3595 HT:-3991 -> ∘
·‖ 62: @-3544 HT:-3991 -> ∘
·‖ 15: @-3500 HT:-3991 -> ∘
·‖ 26: @-3301 HT:-3991 -> ∘
·‖ 62: @-3241 HT:-3991 -> ∘
·‖ 15: @-3189 HT:-3991 -> ∘
·‖ 26: @-2949 HT:-3991 -> ∘
·‖ 62: @-2745 HT:-3991 -> ∘
·‖ 15: @-2695 HT:-3991 -> ∘
‖•△•‖ wof:4 HT:-3991
‖SCH‖ 38: @-2389 ○ start=10010 dead:5000000
·‖ 26: @-2221 HT:-3991 -> ∘
+ 38: @-2096 0 —▷ 10010
+ 38: @-2030 1 —▷ 10010
+ 38: @-1996 2 —▷ 10010
+ 38: @-1963 3 —▷ 10010
+ 38: @-1930 4 —▷ 10010
+ 38: @-1899 5 —▷ 10010
+ 38: @-1867 6 —▷ 10010
+ 38: @-1837 7 —▷ 10010
·‖ 15: @-1802 HT:-3991 -> ∘
+ 38: @-1807 8 —▷ 10010
+ 38: @-1759 9 —▷ 10010
·‖ 62: @-1772 HT:-3991 -> ∘
+ 38: @-1726 10 —▷ 10010
+ 38: @-1676 11 —▷ 10010
+ 38: @-1646 12 —▷ 10010
+ 38: @-1615 13 —▷ 10010
+ 38: @-1585 14 —▷ 10010
+ 38: @-1555 15 —▷ 10010
+ 38: @-1525 16 —▷ 10010
+ 38: @-1494 17 —▷ 10010
+ 38: @-1464 18 —▷ 10010
+ 38: @-1434 19 —▷ 10010
+ 38: @-1404 20 —▷ 10010
+ 38: @-1374 21 —▷ 10010
+ 38: @-1344 22 —▷ 10010
+ 38: @-1314 23 —▷ 10010
+ 38: @-1284 24 —▷ 10010
+ 38: @-1254 25 —▷ 10010
+ 38: @-1224 26 —▷ 10010
+ 38: @-1194 27 —▷ 10010
+ 38: @-1164 28 —▷ 10010
+ 38: @-1134 29 —▷ 10010
+ 38: @-1104 30 —▷ 10010
+ 38: @-1074 31 —▷ 10010
+ 38: @-1045 32 —▷ 10010
+ 38: @-1014 33 —▷ 10010
+ 38: @-984 34 —▷ 10010
+ 38: @-954 35 —▷ 10010
·‖ 26: @-926 HT:-3991 -> ∘
+ 38: @-925 36 —▷ 10010
+ 38: @-884 37 —▷ 10010
+ 38: @-854 38 —▷ 10010
+ 38: @-825 39 —▷ 10010
+ 38: @-795 40 —▷ 10010
+ 38: @-765 41 —▷ 10010
+ 38: @-736 42 —▷ 10010
+ 38: @-706 43 —▷ 10010
+ 38: @-677 44 —▷ 10010
+ 38: @-647 45 —▷ 10010
+ 38: @-618 46 —▷ 10010
+ 38: @-588 47 —▷ 10010
+ 38: @-559 48 —▷ 10010
+ 38: @-530 49 —▷ 10010
·‖ 38: @-485 HT:0 -> ▶ -3991
‖▷▷▷‖ 38: @ -468 HT:0
·‖ 38: @69 HT:200 -> ∘
·‖ 62: @58 HT:200 -> ▶ 0
·‖ 38: @200 HT:400 -> ▶ 200
!◆! 38: @243 ⚙ calc(i=1, lev:1)
!◆! 62: @247 ⚙ calc(i=0, lev:0)
·‖ 15: @462 HT:600 -> ▶ 400
!◆! 15: @507 ⚙ calc(i=2, lev:2)
·‖ 26: @1574 HT:800 -> ▶ 600
!◆! 26: @1637 ⚙ calc(i=3, lev:3)
..! 38: @2619 ⤴ (i=1)
‖PST‖ 38: @2659 ◒ start=200▹▹10010 dead:5000000
·‖ 38: @2695 HT:1000 -> ▶ 800
!◆! 38: @2713 ⚙ calc(i=4, lev:4)
..! 15: @3639 ⤴ (i=2)
‖PST‖ 15: @3688 ◒ start=400▹▹10010 dead:5000000
·‖ 15: @3726 HT:1200 -> ▶ 1000
!◆! 15: @3751 ⚙ calc(i=5, lev:5)
..! 62: @3789 ⤴ (i=0)
‖PST‖ 62: @3832 ◒ start=0▹▹10010 dead:5000000
·‖ 62: @3862 HT:1400 -> ▶ 1200
!◆! 62: @3885 ⚙ calc(i=6, lev:6)
..! 26: @4750 ⤴ (i=3)
‖PST‖ 26: @4795 ◒ start=600▹▹10010 dead:5000000
..! 38: @4817 ⤴ (i=4)
‖PST‖ 38: @4843 ◒ start=800▹▹10010 dead:5000000
·‖ 26: @4827 HT:1600 -> ▶ 1400
·‖ 38: @4862 HT:1800 -> ▶ 1600
!◆! 26: @4854 ⚙ calc(i=7, lev:7)
!◆! 38: @4878 ⚙ calc(i=8, lev:8)
..! 15: @6852 ⤴ (i=5)
‖PST‖ 15: @6896 ◒ start=1000▹▹10010 dead:5000000
·‖ 15: @6926 HT:2000 -> ▶ 1800
!◆! 15: @6953 ⚙ calc(i=9, lev:9)
..! 62: @6971 ⤴ (i=6)
..! 38: @7005 ⤴ (i=8)
‖PST‖ 62: @7026 ◒ start=1200▹▹10010 dead:5000000
‖PST‖ 38: @7035 ◒ start=1600▹▹10010 dead:5000000
·‖ 38: @7054 HT:2200 -> ∘
·‖ 62: @7050 HT:2200 -> ▶ 2000
·‖ 38: @7071 HT:2200 -> ∘
·‖ 38: @7096 HT:2400 -> ▶ 2200
!◆! 62: @7088 ⚙ calc(i=10, lev:10)
!◆! 38: @7112 ⚙ calc(i=11, lev:11)
..! 26: @7972 ⤴ (i=7)
‖PST‖ 26: @8014 ◒ start=1400▹▹10010 dead:5000000
·‖ 26: @8039 HT:2600 -> ▶ 2400
!◆! 26: @8063 ⚙ calc(i=12, lev:12)
..! 38: @9235 ⤴ (i=11)
‖PST‖ 38: @9263 ◒ start=2200▹▹10010 dead:5000000
·‖ 38: @9281 HT:2800 -> ▶ 2600
!◆! 38: @9299 ⚙ calc(i=13, lev:13)
..! 15: @9863 ⤴ (i=9)
‖PST‖ 15: @9899 ◒ start=1800▹▹10010 dead:5000000
·‖ 15: @9924 HT:3000 -> ▶ 2800
!◆! 15: @9946 ⚙ calc(i=14, lev:14)
..! 62: @10184 ⤴ (i=10)
‖PST‖ 62: @10229 ◒ start=2000▹▹10010 dead:5000000
·‖ 62: @10253 HT:3200 -> ▶ 3000
!◆! 62: @10275 ⚙ calc(i=15, lev:15)
..! 26: @10745 ⤴ (i=12)
‖PST‖ 26: @10779 ◒ start=2400▹▹10010 dead:5000000
·‖ 26: @10799 HT:3400 -> ▶ 3200
!◆! 26: @10818 ⚙ calc(i=16, lev:16)
..! 38: @11402 ⤴ (i=13)
‖PST‖ 38: @11431 ◒ start=2600▹▹10010 dead:5000000
·‖ 38: @11449 HT:3600 -> ▶ 3400
!◆! 38: @11466 ⚙ calc(i=17, lev:17)
..! 15: @12483 ⤴ (i=14)
‖PST‖ 15: @12517 ◒ start=2800▹▹10010 dead:5000000
·‖ 15: @12540 HT:3800 -> ▶ 3600
!◆! 15: @12562 ⚙ calc(i=18, lev:18)
..! 62: @13270 ⤴ (i=15)
‖PST‖ 62: @13296 ◒ start=3000▹▹10010 dead:5000000
·‖ 62: @13311 HT:4000 -> ▶ 3800
!◆! 62: @13326 ⚙ calc(i=19, lev:19)
..! 26: @13366 ⤴ (i=16)
‖PST‖ 26: @13399 ◒ start=3200▹▹10010 dead:5000000
·‖ 26: @13419 HT:4200 -> ▶ 4000
!◆! 26: @13438 ⚙ calc(i=20, lev:20)
..! 38: @13603 ⤴ (i=17)
‖PST‖ 38: @13636 ◒ start=3400▹▹10010 dead:5000000
·‖ 38: @13655 HT:4400 -> ▶ 4200
!◆! 38: @13672 ⚙ calc(i=21, lev:21)
..! 15: @15101 ⤴ (i=18)
‖PST‖ 15: @15136 ◒ start=3600▹▹10010 dead:5000000
·‖ 15: @15159 HT:4600 -> ▶ 4400
!◆! 15: @15182 ⚙ calc(i=22, lev:22)
..! 62: @15440 ⤴ (i=19)
‖PST‖ 62: @15465 ◒ start=3800▹▹10010 dead:5000000
·‖ 62: @15479 HT:4800 -> ▶ 4600
!◆! 62: @15493 ⚙ calc(i=23, lev:23)
..! 38: @15774 ⤴ (i=21)
‖PST‖ 38: @15802 ◒ start=4200▹▹10010 dead:5000000
·‖ 38: @15819 HT:5000 -> ▶ 4800
!◆! 38: @15836 ⚙ calc(i=24, lev:24)
..! 26: @15989 ⤴ (i=20)
‖PST‖ 26: @16023 ◒ start=4000▹▹10010 dead:5000000
·‖ 26: @16043 HT:5200 -> ▶ 5000
!◆! 26: @16063 ⚙ calc(i=25, lev:25)
..! 62: @17597 ⤴ (i=23)
‖PST‖ 62: @17623 ◒ start=4600▹▹10010 dead:5000000
·‖ 62: @17638 HT:5400 -> ▶ 5200
!◆! 62: @17652 ⚙ calc(i=26, lev:26)
..! 15: @17745 ⤴ (i=22)
‖PST‖ 15: @17781 ◒ start=4400▹▹10010 dead:5000000
·‖ 15: @17804 HT:5600 -> ▶ 5400
!◆! 15: @17827 ⚙ calc(i=27, lev:27)
..! 38: @17953 ⤴ (i=24)
‖PST‖ 38: @17980 ◒ start=4800▹▹10010 dead:5000000
·‖ 38: @17995 HT:5800 -> ▶ 5600
!◆! 38: @18010 ⚙ calc(i=28, lev:28)
..! 26: @18602 ⤴ (i=25)
‖PST‖ 26: @18638 ◒ start=5000▹▹10010 dead:5000000
·‖ 26: @18660 HT:6000 -> ▶ 5800
!◆! 26: @18680 ⚙ calc(i=29, lev:29)
..! 62: @19749 ⤴ (i=26)
‖PST‖ 62: @19773 ◒ start=5200▹▹10010 dead:5000000
·‖ 62: @19787 HT:6200 -> ▶ 6000
!◆! 62: @19801 ⚙ calc(i=30, lev:30)
..! 38: @20065 ⤴ (i=28)
‖PST‖ 38: @20091 ◒ start=5600▹▹10010 dead:5000000
·‖ 38: @20106 HT:6400 -> ▶ 6200
!◆! 38: @20121 ⚙ calc(i=31, lev:31)
..! 15: @20363 ⤴ (i=27)
‖PST‖ 15: @20396 ◒ start=5400▹▹10010 dead:5000000
·‖ 15: @20419 HT:6600 -> ▶ 6400
!◆! 15: @20442 ⚙ calc(i=32, lev:32)
..! 26: @21203 ⤴ (i=29)
‖PST‖ 26: @21232 ◒ start=5800▹▹10010 dead:5000000
·‖ 26: @21250 HT:6800 -> ▶ 6600
!◆! 26: @21267 ⚙ calc(i=33, lev:33)
..! 62: @21914 ⤴ (i=30)
‖PST‖ 62: @21940 ◒ start=6000▹▹10010 dead:5000000
·‖ 62: @21956 HT:7000 -> ▶ 6800
!◆! 62: @21971 ⚙ calc(i=34, lev:34)
..! 15: @22631 ⤴ (i=32)
‖PST‖ 15: @22662 ◒ start=6400▹▹10010 dead:5000000
·‖ 15: @22682 HT:7200 -> ▶ 7000
!◆! 15: @22701 ⚙ calc(i=35, lev:35)
..! 26: @23375 ⤴ (i=33)
‖PST‖ 26: @23402 ◒ start=6600▹▹10010 dead:5000000
·‖ 26: @23419 HT:7400 -> ▶ 7200
!◆! 26: @23434 ⚙ calc(i=36, lev:36)
..! 62: @24068 ⤴ (i=34)
‖PST‖ 62: @24099 ◒ start=6800▹▹10010 dead:5000000
·‖ 62: @24116 HT:7600 -> ▶ 7400
!◆! 62: @24132 ⚙ calc(i=37, lev:37)
..! 38: @24434 ⤴ (i=31)
‖PST‖ 38: @24515 ◒ start=6200▹▹10010 dead:5000000
·‖ 38: @24563 HT:7800 -> ▶ 7600
!◆! 38: @24609 ⚙ calc(i=38, lev:38)
..! 15: @24812 ⤴ (i=35)
‖PST‖ 15: @24842 ◒ start=7000▹▹10010 dead:5000000
·‖ 15: @24863 HT:8000 -> ▶ 7800
!◆! 15: @24883 ⚙ calc(i=39, lev:39)
..! 26: @25549 ⤴ (i=36)
‖PST‖ 26: @25576 ◒ start=7200▹▹10010 dead:5000000
·‖ 26: @25591 HT:8200 -> ▶ 8000
!◆! 26: @25606 ⚙ calc(i=40, lev:40)
..! 62: @26250 ⤴ (i=37)
‖PST‖ 62: @26276 ◒ start=7400▹▹10010 dead:5000000
·‖ 62: @26291 HT:8400 -> ▶ 8200
!◆! 62: @26306 ⚙ calc(i=41, lev:41)
..! 38: @26954 ⤴ (i=38)
‖PST‖ 38: @26982 ◒ start=7600▹▹10010 dead:5000000
·‖ 38: @26999 HT:8600 -> ▶ 8400
!◆! 38: @27015 ⚙ calc(i=42, lev:42)
..! 15: @26998 ⤴ (i=39)
‖PST‖ 15: @27035 ◒ start=7800▹▹10010 dead:5000000
·‖ 15: @27066 HT:8800 -> ▶ 8600
!◆! 15: @27084 ⚙ calc(i=43, lev:43)
..! 26: @27709 ⤴ (i=40)
‖PST‖ 26: @27733 ◒ start=8000▹▹10010 dead:5000000
·‖ 26: @27747 HT:9000 -> ▶ 8800
!◆! 26: @27762 ⚙ calc(i=44, lev:44)
..! 62: @28403 ⤴ (i=41)
‖PST‖ 62: @28427 ◒ start=8200▹▹10010 dead:5000000
·‖ 62: @28442 HT:9200 -> ▶ 9000
!◆! 62: @28456 ⚙ calc(i=45, lev:45)
..! 38: @29125 ⤴ (i=42)
‖PST‖ 38: @29152 ◒ start=8400▹▹10010 dead:5000000
·‖ 38: @29168 HT:9400 -> ▶ 9200
!◆! 38: @29184 ⚙ calc(i=46, lev:46)
..! 15: @29192 ⤴ (i=43)
‖PST‖ 15: @29228 ◒ start=8600▹▹10010 dead:5000000
·‖ 15: @29248 HT:9600 -> ▶ 9400
!◆! 15: @29268 ⚙ calc(i=47, lev:47)
..! 26: @29880 ⤴ (i=44)
‖PST‖ 26: @29907 ◒ start=8800▹▹10010 dead:5000000
·‖ 26: @29923 HT:9800 -> ▶ 9600
!◆! 26: @29938 ⚙ calc(i=48, lev:48)
..! 62: @30567 ⤴ (i=45)
‖PST‖ 62: @30592 ◒ start=9000▹▹10010 dead:5000000
·‖ 62: @30607 HT:10010 -> ▶ 9800
!◆! 62: @30621 ⚙ calc(i=49, lev:49)
..! 38: @31282 ⤴ (i=46)
‖PST‖ 38: @31310 ◒ start=9200▹▹10010 dead:5000000
·‖ 38: @31326 HT:10010 -> ▶ 10010
·‖ 38: @31344 HT:10010 -> ▶ 10010
·‖ 38: @31358 HT:10010 -> ▶ 10010
·‖ 38: @31373 HT:10010 -> ▶ 10010
·‖ 38: @31388 HT:10010 -> ▶ 10010
..! 15: @31376 ⤴ (i=47)
‖PST‖ 15: @31412 ◒ start=9400▹▹10010 dead:5000000
·‖ 38: @31403 HT:10010 -> ▶ 10010
·‖ 38: @31419 HT:10010 -> ▶ 10010
·‖ 15: @31432 HT:10010 -> ∘
·‖ 38: @31435 HT:10010 -> ▶ 10010
·‖ 15: @31454 HT:10010 -> ∘
·‖ 38: @31462 HT:10010 -> ▶ 10010
·‖ 15: @31474 HT:10010 -> ∘
·‖ 38: @31477 HT:10010 -> ▶ 10010
·‖ 38: @31501 HT:10010 -> ▶ 10010
·‖ 15: @31506 HT:10010 -> ∘
·‖ 38: @31515 HT:10010 -> ▶ 10010
·‖ 38: @31531 HT:10010 -> ▶ 10010
·‖ 38: @31546 HT:10010 -> ▶ 10010
·‖ 15: @31547 HT:10010 -> ∘
·‖ 38: @31565 HT:10010 -> ▶ 10010
·‖ 38: @31582 HT:10010 -> ▶ 10010
·‖ 38: @31596 HT:10010 -> ▶ 10010
·‖ 38: @31609 HT:10010 -> ▶ 10010
·‖ 38: @31623 HT:10010 -> ▶ 10010
·‖ 38: @31636 HT:10010 -> ▶ 10010
·‖ 38: @31649 HT:10010 -> ▶ 10010
·‖ 38: @31662 HT:10010 -> ▶ 10010
·‖ 38: @31676 HT:10010 -> ▶ 10010
·‖ 38: @31689 HT:10010 -> ▶ 10010
·‖ 38: @31704 HT:10010 -> ▶ 10010
·‖ 38: @31718 HT:10010 -> ▶ 10010
·‖ 38: @31731 HT:10010 -> ▶ 10010
·‖ 38: @31744 HT:10010 -> ▶ 10010
·‖ 38: @31757 HT:10010 -> ▶ 10010
·‖ 38: @31771 HT:10010 -> ▶ 10010
·‖ 38: @31785 HT:10010 -> ▶ 10010
·‖ 38: @31798 HT:10010 -> ▶ 10010
·‖ 38: @31812 HT:10010 -> ▶ 10010
·‖ 38: @31825 HT:10010 -> ▶ 10010
·‖ 15: @31825 HT:10010 -> ∘
·‖ 38: @31841 HT:10010 -> ▶ 10010
·‖ 38: @31856 HT:10010 -> ▶ 10010
·‖ 38: @31869 HT:10010 -> ▶ 10010
·‖ 38: @31882 HT:10010 -> ▶ 10010
·‖ 38: @31895 HT:10010 -> ▶ 10010
·‖ 38: @31909 HT:10010 -> ▶ 10010
·‖ 38: @31922 HT:10010 -> ▶ 10010
·‖ 38: @31935 HT:10010 -> ▶ 10010
·‖ 38: @31948 HT:10010 -> ▶ 10010
·‖ 38: @31961 HT:10010 -> ▶ 10010
·‖ 38: @31974 HT:10010 -> ▶ 10010
·‖ 38: @31987 HT:10010 -> ▶ 10010
·‖ 38: @32001 HT:10010 -> ▶ 10010
·‖ 38: @32018 HT:10010 -> ▶ 10010
·‖ 38: @32031 HT:49532 -> ▶ 10010
..! 26: @32032 ⤴ (i=48)
‖PST‖ 26: @32059 ◒ start=9600▹▹10010 dead:5000000
·‖ 26: @32074 HT:49532 -> ▶ 10010
..! 62: @32719 ⤴ (i=49)
‖PST‖ 62: @32747 ◒ start=9800▹▹10010 dead:5000000
·‖ 62: @32761 HT:49532 -> ▶ 10010
+++ ▣ 62: @32778 WAKE-UP
time=33.0158 covered=32.5043 avgconcurr=3.77667
‖▽▼▽‖ 38: @ 49619
‖▽▼▽‖ 62: @ 49922
·‖ 15: @52444 HT:307445584173635861 -> ▶ 49532
‖▷▷▷‖ 15: @ 52528 EMPTY
‖▽▼▽‖ 26: @ 62531
‖▽▼▽‖ 15: @ 62590

View file

@ -0,0 +1,139 @@
#
#
# GNUPLOT - data plot from Lumiera
#
set term wxt size 600,600
set datafile separator ",;"
####---------Data--------------------------------
$RunData << _End_of_Data_
"load size","result time","concurrency","avg jobtime","avg impeded"
51,31.508505,3.77477170052975,2332.1061372549,11.0931176470588
11,15.113527,2.32047588891726,3188.23409090909,270.904363636364
91,60.137673,3.32792050334239,2199.26807692308,108.090923076923
62,36.776624,3.75701763707294,2228.55524193548,28.9245806451613
56,37.566976,3.46145242033854,2322.07678571429,7.68378571428571
84,51.195113,3.68907840871452,2248.3665,35.0133571428571
82,46.670306,3.83766328851583,2184.20634146341,15.9964756097561
53,38.522711,3.30306888318426,2400.81449056604,56.6865094339623
75,44.26341,3.70152853112763,2184.56366666667,20.02632
25,21.483284,2.77088740250327,2381.11044,58.22468
29,24.519575,2.57787946977058,2179.60375862069,203.93924137931
85,49.605607,3.86992917957843,2258.47277647059,7.47218823529412
32,22.087341,3.4961801422815,2413.16634375,58.6231875
91,57.686018,3.38763472978842,2147.46327472527,24.1998461538462
51,36.34618,3.59277682001245,2560.46496078431,46.9979411764706
85,51.071262,3.70227610588515,2224.46956470588,4.53978823529412
91,57.198225,3.61179774372369,2270.20241758242,24.4224175824176
63,44.510439,3.24747491257051,2294.38942857143,70.2196031746032
69,45.305855,3.26819608635573,2145.91910144928,90.9167971014493
66,46.297088,3.23108669383267,2266.51371212121,100.196045454545
12,16.203749,2.77308541375209,3744.53166666667,158.820666666667
80,51.0223,3.48960250713903,2225.594325,58.4322
79,44.409523,3.77631124297372,2122.83773417721,17.5681898734177
19,22.086871,1.89992855936905,2208.60405263158,560.758578947369
94,56.200283,3.74721358609529,2240.36663829787,19.4130319148936
74,42.617805,3.78016983746582,2177.06136486487,16.3727972972973
30,23.653034,3.06613815377765,2417.449,31.6696333333333
82,52.824186,3.13727164674151,2021.02220731707,130.852304878049
96,61.666661,3.37476708849211,2167.8189375,75.4843020833333
33,28.545792,2.5344397871322,2192.35124242424,347.145878787879
94,61.217533,3.46707582940332,2257.93435106383,60.4128191489362
47,31.615499,3.2249519136168,2169.3290212766,144.995489361702
34,24.878695,2.83428708780746,2073.92247058824,238.106323529412
85,51.539839,3.70859936136006,2248.71310588235,6.03429411764706
99,59.961788,3.81605094898104,2311.28523232323,9.85738383838384
80,47.54972,3.79465279711426,2255.433475,12.9391
69,47.71155,3.54777755071885,2453.18791304348,5.76101449275362
81,48.126022,3.73501163258414,2219.15125925926,5.23055555555556
100,62.899327,3.60512040136773,2267.59647,16.29929
10,11.845006,2.45327651163706,2905.9075,87.5561
_End_of_Data_
#
#---common-styles-for-plots-from-Lumiera---------
set style line 1 linetype 1 linewidth 2 linecolor rgb '#240CC3'
set style line 2 linetype 3 linewidth 2 linecolor rgb '#1149D6'
set style line 3 linetype 2 linewidth 2 linecolor rgb '#0B7FCC'
set style line 4 linetype 6 linewidth 2 linecolor rgb '#37999D'
set style line 5 linetype 7 linewidth 2 linecolor rgb '#248269'
set style line 6 linetype 13 linewidth 2 linecolor rgb '#00C443'
set style line 7 linetype 12 linewidth 2 linecolor rgb '#EBE83E'
set style line 8 linetype 5 linewidth 2 linecolor rgb '#762C14'
set style line 9 linetype 4 linewidth 2 linecolor rgb '#AA0519'
set style line 10 linetype 1 linewidth 1 linecolor rgb '#303030'
set style line 11 linetype 0 linewidth 1 linecolor rgb '#A0A0A0' dashtype 3
#---(End)styles----------------------------------
#
#---axis-and-grid-setup--------------------------
unset border
set tics nomirror
set grid back linestyle 11
set arrow 10 from graph 0,0 to graph 1.04,0 size screen 0.025,15,60 filled ls 10
set arrow 11 from graph 0,0 to graph 0,1.08 size screen 0.025,15,60 filled ls 10
set xlabel 'load size ⟶ number of jobs'
set ylabel 'active time ⟶ ms'
set key autotitle columnheader tmargin
#
stats $RunData using 1:2 nooutput
# regression line function derived from data
regLine(x) = STATS_slope * x + STATS_intercept
#
regLabel = sprintf("Model: %3.2f·p + %3.2f", STATS_slope, STATS_intercept)
set key horizontal width -4
set xtics 5
plots = STATS_columns - 1
# Adjust layout based on number of data sequences;
# additional sequences placed into secondary diagram
#
if (plots > 1) {
set multiplot layout 2,1 # 2 rows 1 column
set lmargin at screen 0.12 # fixed margins to align diagrams
set rmargin at screen 0.88
}
#
#
####---------Scatter-Regression-Plot-------------
plot $RunData using 1:2 with points linestyle 1, \
regLine(x) with line linestyle 9 title regLabel
if (plots > 1) {
# switch off decorations for secondary diagram
unset arrow 10
unset arrow 11
set border 2+8
set key bmargin vertical
unset xlabel
set format x ""
set ylabel 'concurrent threads ⟶'
if (plots <= 2) {
####---------------------------------
plot $RunData using 1:3 with impulses linestyle 3
} else {
# more than one additional data sequence
#
set y2tics
set y2label 'avg job time ⟶ µs' offset -1.5
####---------------------------------------------
plot $RunData using 1:3 with impulses linestyle 3, \
for [i=4:*] $RunData using 1:i with points linestyle 5+(i-4) axes x1y2
}
}

View file

@ -0,0 +1,60 @@
Scheduler Load and Stress Testing
=================================
:date: 2024-04-08
Following the initial integration, an extended series of Load- and Stress-testing
was conducted to determine the limitations and weaknesses of the new Scheduler
implementation. During that time, from December to April, several bugs and problems
were identified, improving the maturity of design and code. In the first phase,
the goal was to subject the implementation to increasingly challenging load patterns.
In the second phase, several instrumentation- and measurement methods were developed,
to establish characteristic traits and boudary conditions quantitatively.
This directory holds a loose collection of material related to these testing efforts.
Trace-dumps were produced by adding print statements at relevant locations; over time,
a change set with a suitable setup of such diagnostic print statements was assembled,
which can be applied by `git cherry-pick`. Moreover, load patterns generated by the
`TestChainLoad` tooling can be visualised as _graphviz diagram_ and the collection
of tools in the `StressTestRig` generate report output and data visualisation as
_Gnuplot_ script. Raw measurment data is stored as CSV (see 'csv.hpp').
Load Peak Testing
-----------------
Dump-10::
Example of a typical clean run working through a homogenous load peak.
With load patterns in this category, contention is not an issue and, after the
initial ramp-up, all workers are fully loaded and immediately comence with the
next job in row, typically requiring ~70µs for the administrative work between
processing jobs (Note: all those measurements were done with *debug builds*,
without compiler optimisation). As an artefact of the measurement setup, a
follow-up job is wired as dependency on each work job; the dependency wiring
and dependency checking is performed outside the active measurement interval,
so that only the additional post of the follow-up check adds a constant
administrative overhead to each job, which can be guessed to be +30µs.
Graph-10::
Plot from a parametric measurement series with the same settings as used for
the Dump-10; settings in these range are known to produce clean processing
with no obivous irregular overhead. In this case here
+
- the series is comprised of 40 measurements, covering a parameter range 10...100
- the free parameter is the number of jobs in a homogenous load peak
- through built-in instrumentation, the job activation can be observed, allowing
to derive the average work job time, average time in full concurrency and amount
of time with limitations (less than two active workers)
+
Notably the concurrency approaches the theoretic limit with increasing peak length,
yet some headroom remains. However, by logical reasoning it becomes clear that there
_must be a startup and shutdown phase_ in each run, and this phase must be calculated
with one Job length each (in this case 2ms startup and 2ms shutdown); startup counts
as _one Job completed,_ while shutdown counts as _N-1 Jobs completed._ Taking these
considerations into account, 4ms of the socket indicated by the linear model can be
explained, so there remains a further socket of 5ms. Various observations seem to
indicate that these *5ms* can be considered a *generic scheduling latency*
+
The actual job times are always slightly above the calibrated value (the load operation
is calibrated before each test on the specific hardware; it could be shown that this
calibration also holds under multithreaded performance, but the behaviour degrades
when contention, lock coordination and cache misses come into play)

View file

@ -112036,9 +112036,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1712238458491" ID="ID_112442438" MODIFIED="1712238472711" TEXT="darauf statistische Auswertungen / lineare Regression"/>
<node COLOR="#435e98" CREATED="1712238473499" ID="ID_109820250" MODIFIED="1712594272496">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Darstellung als <b>Gnuplot</b>-Diagramm aufbereitet
@ -114824,9 +114822,7 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
<icon BUILTIN="button_cancel"/>
<node CREATED="1712593727818" ID="ID_837101544" MODIFIED="1712593992752" TEXT="zum einen: dann m&#xfc;&#xdf;te man die Ordinate explizit kappen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Denn es gibt stets einige wenige <i>ganz dramatische Ausrei&#223;er, </i>die sonst die Skala so verschieben w&#252;rden, da&#223; man die eigentlichen Me&#223;werte nicht mehr sieht; ich m&#252;&#223;te also eigens wieder Anpassungs-Code schreiben, und mir eine Heuristik einfallen lassen, um die Skala zu kappen &#8212; unn&#246;tiger Aufwand f&#252;r eine nebenbei mit aufgenommene Gr&#246;&#223;e
@ -114836,9 +114832,7 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
</node>
<node CREATED="1712593740845" ID="ID_479430012" MODIFIED="1712593891254" TEXT="und au&#xdf;erdem: das sagt wenig &#xfc;ber die &#xbb;Arbeitsphase&#xab; aus">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...denn der Umstand, da&#223; der Overhead / Job weitgehend konstant ist, zeigt, da&#223; wir hier einen separaten Setup-Effekt haben, vermutlich n&#228;mlich vor allem die Job-Planungs-Zeit. Da wir demgegen&#252;ber <i>in der aktiven Phase sehr gut linear sind, </i>kann man diesen zus&#228;tzlichen Overhead zun&#228;chst mal als Artefakt der Me&#223;anordnung beiseite lassen (und sp&#228;ter dann mal eigens untersuchen)
@ -115411,8 +115405,6 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1704915305240" ID="ID_466567694" MODIFIED="1704915313937" TEXT="Untersuchung im Stress-Test-Rig">
<icon BUILTIN="pencil"/>
<node CREATED="1704915315663" ID="ID_1269775708" MODIFIED="1704915353923" TEXT="Standard-Aufbau">
<icon BUILTIN="info"/>
<node CREATED="1712595168957" ID="ID_1322573597" MODIFIED="1712595178892" TEXT="Last-Pattern">
<node CREATED="1712595181747" ID="ID_1751068516" MODIFIED="1712595247094" TEXT="spezielle &#xbb;kleine Graphen&#xab;">
<arrowlink COLOR="#4c5ab8" DESTINATION="ID_49179977" ENDARROW="Default" ENDINCLINATION="-515;1146;" ID="Arrow_ID_640223049" STARTARROW="None" STARTINCLINATION="-64;-3;"/>
@ -115424,16 +115416,13 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
<node CREATED="1712595326353" ID="ID_1705802577" MODIFIED="1712595355025" TEXT="andererseits behindert eine feste (kleine) Breiten-Limitierung die Entfaltung der Struktur"/>
<node CREATED="1712595355774" ID="ID_1016902283" MODIFIED="1712595464915" TEXT="zudem gilt: die Anzahl Kerne ist ein sehr limitierter Parameter">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...denn er ist stark von der Hardware abh&#228;ngig und i.d.R wenig variierbar, und oft gibt es noch weitere, interne Beschr&#228;nkungen (wie z.B. Hyperthreading, das eben doch nicht komplett transparent ist und mit Cache und Pipelining im Prozessor wechselwirkt)
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
</node>
@ -115444,10 +115433,13 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
<node CREATED="1712595518473" ID="ID_1871408755" MODIFIED="1712595524139" TEXT="oder als &#xbb;load bursts&#xab;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1704915323510" ID="ID_1549178834" MODIFIED="1704915348364" TEXT="1.Test">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1704915326966" ID="ID_117301056" MODIFIED="1704915346470" TEXT="8 Kerne gleichm&#xe4;&#xdf;ige Last 500&#xb5;s">
<icon BUILTIN="pencil"/>
<node COLOR="#5b280f" CREATED="1704915323510" ID="ID_1549178834" MODIFIED="1712623136295" TEXT="1.Test">
<icon BUILTIN="button_cancel"/>
<node CREATED="1704915315663" ID="ID_1269775708" MODIFIED="1712623108438" TEXT="Standard-Aufbau f&#xfc;r Breaking-Point">
<icon BUILTIN="info"/>
</node>
<node COLOR="#990000" CREATED="1704915326966" ID="ID_117301056" MODIFIED="1712623154495" TEXT="8 Kerne gleichm&#xe4;&#xdf;ige Last 500&#xb5;s">
<icon BUILTIN="list"/>
<node CREATED="1705011582353" ID="ID_166772872" MODIFIED="1705011589953" TEXT="verwende erst mal Graph-3">
<node CREATED="1707608885510" ID="ID_1295414407" MODIFIED="1707608916339" TEXT="Begr&#xfc;ndung: schneller ramp-up auf maximale Parallelit&#xe4;t (8)"/>
<node CREATED="1707662452588" ID="ID_202070685" MODIFIED="1707662466333" TEXT="zudem ein gewisses Ma&#xdf; an Quer-Abh&#xe4;ngigkeiten"/>
@ -115651,6 +115643,7 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
</node>
<node CREATED="1707666818720" ID="ID_1933904693" MODIFIED="1707667972110" TEXT="mehrere unbekannte Faktoren">
<arrowlink COLOR="#a90153" DESTINATION="ID_1036769514" ENDARROW="Default" ENDINCLINATION="77;0;" ID="Arrow_ID_987506527" STARTARROW="Default" STARTINCLINATION="-10;73;"/>
<linktarget COLOR="#7d4564" DESTINATION="ID_1933904693" ENDARROW="Default" ENDINCLINATION="65;294;" ID="Arrow_ID_1279487627" SOURCE="ID_858690503" STARTARROW="None" STARTINCLINATION="1003;84;"/>
<node CREATED="1707666826381" ID="ID_1139250562" MODIFIED="1707666843801" TEXT="Einflu&#xdf; der Hardware unter Last"/>
<node CREATED="1707666849253" ID="ID_664255294" MODIFIED="1707666903694" TEXT="tats&#xe4;chliches Lastverhalten der Test-ComputationalLoad"/>
<node CREATED="1707666907416" ID="ID_1604585983" MODIFIED="1707666920433" TEXT="tats&#xe4;chlich m&#xf6;gliche Parallelisierung">
@ -115703,6 +115696,225 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
<node CREATED="1707669303428" ID="ID_950395945" MODIFIED="1707669308139" TEXT="StressFac 2.49"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1712623172425" ID="ID_858690503" MODIFIED="1712623282740" TEXT="so noch keine Aussage m&#xf6;glich">
<arrowlink COLOR="#7d4564" DESTINATION="ID_1933904693" ENDARROW="Default" ENDINCLINATION="65;294;" ID="Arrow_ID_1279487627" STARTARROW="None" STARTINCLINATION="1003;84;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1712623199461" ID="ID_1383167720" MODIFIED="1712623213413" TEXT="StressFac weit weg von 1.0"/>
<node CREATED="1712623194390" ID="ID_578497546" MODIFIED="1712623220389" TEXT="fehlende Eichung verhindert Interpretation"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#338800" CREATED="1712623313346" ID="ID_561647220" MODIFIED="1712674080986" TEXT="2.Test">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1712623319005" ID="ID_543347178" MODIFIED="1712623335142" TEXT="Aufbau f&#xfc;r ParamRange / isolierte Einzeljobs"/>
<node CREATED="1712623335874" ID="ID_518625942" MODIFIED="1712623351683" TEXT="4 Kerne gleichm&#xe4;&#xdf;ige Last 500&#xb5;s">
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1712623368930" ID="ID_345206068" MODIFIED="1712623389676" TEXT="Concurrency h&#xf6;chstens 3">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1712623391618" ID="ID_814372354" MODIFIED="1712623400645" TEXT="selbst wenn man 8 Cores bereitstellt"/>
<node CREATED="1712623410638" ID="ID_1278735648" MODIFIED="1712623555030" TEXT="Einzelbeobachtung &#x27f9; Pr&#xe4;ferenz f&#xfc;r aktiven Worker">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Im Schnitt sind 3 Worker losgelaufen, wenn der erste Worker nach 500&#181;s + X wieder zur&#252;ckkehrt. Da ein zur&#252;ckkehrender Worker vorrangig behandelt wird, kommen die restlichen Worker kaum zum Zug und regeln sich herunter
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1712623556019" ID="ID_1359823747" MODIFIED="1712623567438" TEXT="insofern &#xbb;works as designed&#xab;">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1712623593950" ID="ID_1812749743" MODIFIED="1712623610656" TEXT="Jobzeiten sind relativ konsistent um 800&#xb5;s"/>
<node CREATED="1712623630081" ID="ID_210640019" MODIFIED="1712623643565" TEXT="die kurzen L&#xe4;ufe sind generell degradiert">
<node CREATED="1712623644674" ID="ID_71374513" MODIFIED="1712623660673" TEXT="die erreichen oft nur Concurrency &#x2261; 1"/>
<node CREATED="1712623711862" ID="ID_1902997827" MODIFIED="1712623724136" TEXT="und auch die Job-Zeiten sind f&#xfc;r diese noch h&#xf6;her"/>
</node>
<node CREATED="1712623737354" ID="ID_466442520" MODIFIED="1712623768585" TEXT="ab ~ 10 Jobs ist eine lineare Korrelation feststellbar"/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#338800" CREATED="1712623814519" ID="ID_282786901" MODIFIED="1712674092234" TEXT="3.Test">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1712623319005" ID="ID_217903920" MODIFIED="1712623335142" TEXT="Aufbau f&#xfc;r ParamRange / isolierte Einzeljobs"/>
<node CREATED="1712623839453" ID="ID_1404492684" MODIFIED="1712623844207" TEXT="4 Kerne gleichm&#xe4;&#xdf;ige Last 2ms">
<node CREATED="1712623847258" ID="ID_696226492" MODIFIED="1712623855923" TEXT="concurrency n&#xe4;hert sich 4 an"/>
<node CREATED="1712623856617" ID="ID_1415463769" MODIFIED="1712623864077" TEXT="typische Werte: ~ 3.7"/>
<node CREATED="1712623877399" ID="ID_666034121" MODIFIED="1712623884298" TEXT="Jobzeiten ~ 2.3ms"/>
<node CREATED="1712623887421" ID="ID_1898786551" MODIFIED="1712623922532" TEXT="Modell: 0.5&#xb7;p + 9ms"/>
<node CREATED="1712623942198" ID="ID_1345344130" MODIFIED="1712623963268">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
Einzelbeobachtung &#10233; <b>keinerlei auff&#228;lliges Verhalten</b>
</p>
</body>
</html>
</richcontent>
<node CREATED="1712624058565" ID="ID_19403295" MODIFIED="1712624079993" TEXT="Planung und Dependency-Setup sind zu Beginn abgeschlossen"/>
<node CREATED="1712623971169" ID="ID_738756991" MODIFIED="1712623992258" TEXT="Hochlauf zur Vollauslastung: 2ms"/>
<node CREATED="1712624086127" ID="ID_1559594499" MODIFIED="1712624098707" TEXT="regelm&#xe4;&#xdf;iges, gleichverteiltes Arbeiten"/>
<node CREATED="1712624099415" ID="ID_1866014427" MODIFIED="1712624105834" TEXT="nur 2 Contention-Events"/>
<node CREATED="1712624150257" ID="ID_1580916868" MODIFIED="1712624159851" TEXT="Auslauf: 2.3ms">
<node CREATED="1712624161156" ID="ID_1405217053" MODIFIED="1712624178880" TEXT="w&#xe4;hrenddessen arbeitet eine freie Core die wake-up-Dependencies ab"/>
</node>
</node>
<node CREATED="1712624407733" ID="ID_1770640914" MODIFIED="1712625077270" TEXT="Zeitrechnung geht komplett auf">
<node CREATED="1712624420243" ID="ID_1573897287" MODIFIED="1712624440100" TEXT="50*2.3ms / 3.7 = 31ms"/>
<node CREATED="1712624442044" ID="ID_1861791549" MODIFIED="1712624481216" TEXT="Beachte: Concurrency und Jobzeiten sind explizite Me&#xdf;werte">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
sie werden per Instrumentation erfa&#223;t, und nicht aus anderen Beobachtungen errechnet
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1712625101236" ID="ID_465653239" MODIFIED="1712625201546" TEXT="die &#x2205; 3.7 Threads sind erkl&#xe4;rbar durch 4ms mit 1.5 + Rest mit Vollast"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1712625078878" ID="ID_1920144642" MODIFIED="1712625253483" TEXT="ich verstehe nicht ganz woher der Sockel kommt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1712625255135" ID="ID_26658729" MODIFIED="1712625273000" TEXT="2+2ms sind durch Hochlauf/Auslauf erkl&#xe4;rbar"/>
<node CREATED="1712665641252" ID="ID_999688619" MODIFIED="1712665647075" TEXT="genaue Rechnung machen">
<node CREATED="1712665648686" ID="ID_1917207782" MODIFIED="1712665663231" TEXT="berechnet wird: Zeit bis Abschlu&#xdf; Job"/>
<node CREATED="1712665663963" ID="ID_131520694" MODIFIED="1712665666175" TEXT="Zeitachse">
<node CREATED="1712665678321" ID="ID_1554162957" MODIFIED="1712665686764" TEXT=" 243 : Start"/>
<node CREATED="1712665846253" ID="ID_1729924496" MODIFIED="1712665884049" TEXT=" 2713 : Vollast(4) &#x2014; 1 Job abgeschlossen"/>
<node CREATED="1712665936862" ID="ID_778375274" MODIFIED="1712666061930" TEXT="31282 : Shutdown &#x2014; 47 Jobs abgeschlossen"/>
<node CREATED="1712666083570" ID="ID_1089232734" MODIFIED="1712666103852" TEXT="32719 : Ende &#x2014; 3 letzte Jobs abgeschlossen"/>
</node>
<node CREATED="1712666135892" ID="ID_443944403" MODIFIED="1712666142169" TEXT="Arbeitsphase...">
<node CREATED="1712666161600" ID="ID_1731400127" MODIFIED="1712666171411" TEXT="28569 &#xb5;s"/>
<node CREATED="1712666172606" ID="ID_1639539146" MODIFIED="1712666193272" TEXT="w&#xe4;hrenddessen 47 Jobs abgeschlossen"/>
<node CREATED="1712666250253" ID="ID_511077057" MODIFIED="1712666306048" TEXT="&#xd83e;&#xdc32; 607,85 &#xb5;s / Job"/>
</node>
<node CREATED="1712666294607" ID="ID_1240288092" MODIFIED="1712666297701" TEXT="+ Sockel">
<node CREATED="1712666308166" ID="ID_858694931" MODIFIED="1712666320239" TEXT="4 Jobs Anlauf/Auslauf">
<node CREATED="1712666322467" HGAP="24" ID="ID_1658758605" MODIFIED="1712666483409" TEXT="das ist grunds&#xe4;tzlich so" VSHIFT="4">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<ul>
<li>
die Anlauf-Phase ist abgesclossen, wenn der erste Worker einen weiteren Job &#252;bernimmt und zudem alle 4 Worker da sind
</li>
<li>
unter der Annahme, da&#223; alle Worker w&#228;hrend der Anlauf-Phase <i>aktiv werden, </i>z&#228;hlt diese Anlauf-Phase also grunds&#228;tzlich immer einen abgeschlossenen Job
</li>
<li>
die Shutdown-Phase beginnt, wenn der erste Worker <i>idle wird. </i>Damit bleiben noch N-1 Worker &#252;brig, die ihre Arbeit beenden m&#252;ssen. Die Shutdown-Phase z&#228;hlt daher 3 abgeschlossene Jobs
</li>
</ul>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1712666509334" ID="ID_70230671" MODIFIED="1712666648236" TEXT="2470&#xb5;s + 1437&#xb5;s = 3907&#xb5;s"/>
</node>
</node>
<node CREATED="1712671790078" ID="ID_1325611009" MODIFIED="1712671799258" TEXT="Vergleich mit dem linearen Modell">
<node CREATED="1712671859076" ID="ID_1989047195" MODIFIED="1712671868849" TEXT="0.52&#xb7;p + 8.57"/>
<node CREATED="1712671871986" ID="ID_1949070186" MODIFIED="1712671910960" TEXT="da die Einteilung mit 4 Jobs im Anlauf/Auslauf allgemeing&#xfc;ltig ist..."/>
<node CREATED="1712671912150" ID="ID_1699046637" MODIFIED="1712671925085" TEXT="...kann man die Vorhersage des linearen Models darauf anwenden"/>
<node CREATED="1712671925796" ID="ID_1313545557" MODIFIED="1712671972712" TEXT="Demnach w&#xe4;ren nur 23,92ms dem rein-linearen Anteil zuzurechnen"/>
<node CREATED="1712672014607" ID="ID_221075452" MODIFIED="1712672094616" TEXT="&#x27f9; 38.569-23.92 = 4.649ms w&#xe4;ren zus&#xe4;tzlich dem Sockel von 3.9ms zuzuschlagen"/>
<node CREATED="1712672154085" ID="ID_5082633" MODIFIED="1712672539623" TEXT="das sind 100&#xb5;s pro Job">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px">
4,649/46&#160;&#160;( 46= 50 -4)
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1712672235394" ID="ID_1423460333" MODIFIED="1712672276018">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
das entspricht genau dem <b>empirisch beobachteten Scheduling-Overhead</b>
</p>
</body>
</html></richcontent>
</node>
<node COLOR="#5b280f" CREATED="1712672467171" ID="ID_1963600442" MODIFIED="1712672537280" TEXT="STOP das ist Zufall bzw. eine Fehldeutung!">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...rein zuf&#228;llig habe ich hier grade 46 Jobs in der Aktiven Phase, aber das Modell deckt Parameter im Bereich 10...100 Jobs ab
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1712672543176" ID="ID_1298915509" MODIFIED="1712672679291">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
bessere Deutung: es sind ca 5ms &#8212; das enstspricht dem <font face="Monospaced" size="4" color="#6c1010">WORK_HORIZON</font>
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1712672779497" ID="ID_1561617455" MODIFIED="1712672797914" TEXT="Einsicht: auch in der Arbeitsphase steckt ein Overhead">
<node CREATED="1712672798894" ID="ID_579465510" MODIFIED="1712672807020" TEXT="dieser wird nur mit statistischen Methoden sichtbar"/>
<node CREATED="1712672813922" ID="ID_1471864290" MODIFIED="1712672831563" TEXT="auf den Einzeljob heruntergebrochen geht er im &#xbb;Rauschen&#xab; unter (100&#xb5;s)"/>
</node>
<node CREATED="1712672914422" ID="ID_1717070868" MODIFIED="1712672941790" TEXT="Vermutung: die Abweichungen der Job-Zeit nach oben...">
<node CREATED="1712672942970" ID="ID_1065719362" MODIFIED="1712672954541" TEXT="konzentriert sich in der Anfangs- und Schlu&#xdf;phase"/>
<node CREATED="1712672956121" ID="ID_1835761764" MODIFIED="1712672970459" TEXT="das wird untermauert durch die k&#xfc;rzeren L&#xe4;ufe in der Serie"/>
<node CREATED="1712672971589" ID="ID_1781050379" MODIFIED="1712672992063" TEXT="au&#xdf;erdem: in der Arbeitsphase sehe ich hier 600&#xb5;s / Job"/>
<node CREATED="1712672992951" ID="ID_533972815" MODIFIED="1712673009813" TEXT="bekannt ist aber bereits ein Admin-Overhead von 100&#xb5;s"/>
<node CREATED="1712673011682" ID="ID_1316020005" MODIFIED="1712673065390" TEXT="damit w&#xe4;ren wir mit 4 Threads bereits bei der nominellen/geeichten Zeit (2ms)"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1712673109278" ID="ID_72527128" MODIFIED="1712673119027" TEXT="Fazit">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1712673120246" ID="ID_1590385381" MODIFIED="1712673153317">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
sehr sch&#246;ner <i>steady state </i>ohne offensichtliche Inkonsistenzen
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1712673183634" ID="ID_200427956" MODIFIED="1712673219481" TEXT="rein logisch ergibt sich eine Anlauf/Auslauf-Phase, die einen Overhead von 2*JobTime erzeugt"/>
<node CREATED="1712673245754" ID="ID_742162652" MODIFIED="1712673259044" TEXT="der verbleibende Sockel-Overhead sind 5ms">
<node CREATED="1712673259954" ID="ID_1422517037" MODIFIED="1712673267319" TEXT="diesen Wert sehe ich immer wieder"/>
<node CREATED="1712673268106" ID="ID_521334096" MODIFIED="1712673299462" TEXT="er korrespondiert mit der statistischen Streuung der Worker-Wartezeiten"/>
<node CREATED="1712673301266" ID="ID_52767964" MODIFIED="1712673318872">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
man kann ihn also deuten als generische <b>Scheduler-Latenz</b>
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1712673418442" ID="ID_29307844" MODIFIED="1712673442307" TEXT="Dokumentation">
<node CREATED="1712673439464" ID="ID_410748225" MODIFIED="1712673439464" TEXT="devel/dump/2024-04-08.Scheduler-LoadTest"/>
<node CREATED="1712673454974" ID="ID_689662971" MODIFIED="1712673455762" TEXT="Dump-10"/>
<node CREATED="1712673464124" ID="ID_1914229732" MODIFIED="1712673465087" TEXT="Graph-10"/>
</node>
</node>
</node>
</node>
@ -116022,6 +116234,43 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
<node CREATED="1702309058200" ID="ID_1888511103" MODIFIED="1702309098838" TEXT="Abarbeiten der Kette eines &#x201e;praktisch leeren&#x201c; Jobs: 80&#xb5;s"/>
<node CREATED="1702309135573" ID="ID_85007648" MODIFIED="1702309146250" TEXT="Abarbeiten bis zum failed Gate-check: 25&#xb5;s"/>
</node>
<node CREATED="1712674132163" FOLDED="true" ID="ID_1180966664" MODIFIED="1712674427987" TEXT="empirscher Latenz-Overhead: +5ms">
<icon BUILTIN="forward"/>
<node CREATED="1712674156848" ID="ID_1121001776" LINK="#ID_29307844" MODIFIED="1712674424045" TEXT="beobachtet durch Me&#xdf;-Serien mit linearer Regression">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
gemessen wurde das Abarbeiten einer homogenen Lastspitze, welche schlagartig eingebracht wurde, und die ohne Ber&#252;cksichtigung von Abh&#228;ngkeiten verarbeitet werden kann
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1712674175675" ID="ID_1625440294" MODIFIED="1712674191087" TEXT="abgezogen wurde der Aufwand f&#xfc;r Anfahren/Auslauf des Tests"/>
<node CREATED="1712674192156" ID="ID_1137622024" MODIFIED="1712674324675">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
gilt nur bei sauberem Lauf <i>ohne Contention</i>
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1712674287462" ID="ID_358131244" MODIFIED="1712674317130">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
und <i>ohne</i>&#160;Aufwand f&#252;r <b>Job-Planung</b>
</p>
</body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1712674297674" ID="ID_180167484" MODIFIED="1712674306196" TEXT="gemessen mit Debug-Build">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#16515f" CREATED="1701977287887" HGAP="55" ID="ID_860609942" MODIFIED="1701977997582" TEXT="Timings(release)" VSHIFT="56">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>