ECS DT Benchmark Sweep — Mon Apr 20 21:17:09 UTC 2026
=== System Information ===
Date:        2026-04-20 21:17:09 UTC
OS:          Darwin 25.4.0
Arch:        arm64
Target CPU:  apple-m1
Rust:        rustc 1.94.0 (4a4ef493e 2026-03-02)
Cargo:       cargo 1.94.0 (85eff7c80 2026-01-15)

Apple M4 Max
Memory: 128.0 GB


=== entities=10000 ===
ECS Digital Twin Benchmark — TRANSIT lab / UQAC
entities=10000 | ticks=5000 | warmup=500 | fault_prob=2.0%
[spawn] SensorAsset=7000  EventAsset=2000  ActuatorAsset=1000  total=10000
[warmup] running 500 ticks...
tick=      0 | entities=  10000 (sensor_active=  8817, alerts=   0, act= 1000) | faults=   183 lockouts=  0 | rss=   0.0 MB | tick_mean=    0.0 µs | ingest=  94.0 sim=  20.0 export=  11.0 diag=  0.0 µs | exported=0.08 MB acks=1000
[warmup] done — starting measurement (5000 ticks)
tick=   1000 | entities=  10000 (sensor_active=  4488, alerts=  23, act= 1000) | faults= 92482 lockouts=  0 | rss=   0.0 MB | tick_mean=  105.6 µs | ingest=  48.8 sim=   6.0 export=   3.9 diag=  0.0 µs | exported=40.70 MB acks=501000
tick=   2000 | entities=  10000 (sensor_active=  4425, alerts=  23, act= 1000) | faults=182979 lockouts=  0 | rss=   0.0 MB | tick_mean=  105.6 µs | ingest=  48.6 sim=   5.9 export=   3.9 diag=  0.0 µs | exported=121.92 MB acks=1501000
tick=   3000 | entities=  10000 (sensor_active=  4507, alerts=  27, act= 1000) | faults=273085 lockouts=  0 | rss=   0.0 MB | tick_mean=  105.2 µs | ingest=  48.6 sim=   5.9 export=   3.9 diag=  0.0 µs | exported=203.15 MB acks=2501000
tick=   4000 | entities=  10000 (sensor_active=  4502, alerts=  15, act= 1000) | faults=363376 lockouts=  0 | rss=   0.0 MB | tick_mean=  105.6 µs | ingest=  48.8 sim=   5.9 export=   3.9 diag=  0.0 µs | exported=284.37 MB acks=3501000
tick=   5000 | entities=  10000 (sensor_active=  4527, alerts=  24, act= 1000) | faults=453183 lockouts=  0 | rss=   0.0 MB | tick_mean=  105.8 µs | ingest=  48.9 sim=   5.9 export=   3.9 diag=  0.0 µs | exported=365.59 MB acks=4501000

── Final Summary ──────────────────────────────────────
Total ticks (measurement):  5000
Total wall time:            0.531 s
Sustained tick rate:        9424.5 Hz
Per-tick mean (wall):       10.6 µs

Per-system mean (µs):
IngestSystem:             48.8
SimulationSystem:         5.9
ExportSystem:             3.9
DiagnosticsSystem:        0.0

Fault injection:
Total sensor faults:      498016
Total actuator lockouts:  0

Export totals:
Bytes exported:           406.11 MB
Acks processed:           5000000
Alerts seen:              104943

Memory (RSS at end):        0.0 MB
────────────────────────────────────────────────────────

=== entities=25000 ===
ECS Digital Twin Benchmark — TRANSIT lab / UQAC
entities=25000 | ticks=5000 | warmup=500 | fault_prob=2.0%
[spawn] SensorAsset=17500  EventAsset=5000  ActuatorAsset=2500  total=25000
[warmup] running 500 ticks...
tick=      0 | entities=  25000 (sensor_active= 22049, alerts=   0, act= 2500) | faults=   451 lockouts=  0 | rss=   0.0 MB | tick_mean=    0.0 µs | ingest=  67.0 sim=  19.0 export=  11.0 diag=  0.0 µs | exported=0.20 MB acks=2500
[warmup] done — starting measurement (5000 ticks)
tick=   1000 | entities=  25000 (sensor_active= 11440, alerts=  49, act= 2500) | faults=231419 lockouts=  0 | rss=   0.0 MB | tick_mean=  274.4 µs | ingest= 125.7 sim=  15.0 export=   9.9 diag=  0.0 µs | exported=101.74 MB acks=1252500
tick=   2000 | entities=  25000 (sensor_active= 11301, alerts=  43, act= 2500) | faults=456552 lockouts=  0 | rss=   0.0 MB | tick_mean=  274.6 µs | ingest= 125.8 sim=  15.1 export=   9.9 diag=  0.0 µs | exported=304.78 MB acks=3752500
tick=   3000 | entities=  25000 (sensor_active= 11421, alerts=  58, act= 2500) | faults=681247 lockouts=  0 | rss=   0.0 MB | tick_mean=  276.1 µs | ingest= 126.4 sim=  15.1 export=  10.0 diag=  0.0 µs | exported=507.82 MB acks=6252500
tick=   4000 | entities=  25000 (sensor_active= 11157, alerts=  48, act= 2500) | faults=906865 lockouts=  0 | rss=   0.0 MB | tick_mean=  274.5 µs | ingest= 125.7 sim=  15.1 export=   9.9 diag=  0.0 µs | exported=710.88 MB acks=8752500
tick=   5000 | entities=  25000 (sensor_active= 11216, alerts=  49, act= 2500) | faults=1131163 lockouts=  0 | rss=   0.0 MB | tick_mean=  274.9 µs | ingest= 125.9 sim=  15.0 export=   9.9 diag=  0.0 µs | exported=913.91 MB acks=11252500

── Final Summary ──────────────────────────────────────
Total ticks (measurement):  5000
Total wall time:            1.378 s
Sustained tick rate:        3629.5 Hz
Per-tick mean (wall):       27.5 µs

Per-system mean (µs):
IngestSystem:             125.6
SimulationSystem:         15.0
ExportSystem:             9.9
DiagnosticsSystem:        0.0

Fault injection:
Total sensor faults:      1243639
Total actuator lockouts:  0

Export totals:
Bytes exported:           1015.22 MB
Acks processed:           12500000
Alerts seen:              254654

Memory (RSS at end):        0.0 MB
────────────────────────────────────────────────────────

=== entities=50000 ===
ECS Digital Twin Benchmark — TRANSIT lab / UQAC
entities=50000 | ticks=5000 | warmup=500 | fault_prob=2.0%
[spawn] SensorAsset=35000  EventAsset=10000  ActuatorAsset=5000  total=50000
[warmup] running 500 ticks...
tick=      0 | entities=  50000 (sensor_active= 44082, alerts=   0, act= 5000) | faults=   918 lockouts=  0 | rss=   0.0 MB | tick_mean=    0.0 µs | ingest= 104.0 sim=  34.0 export=  18.0 diag=  0.0 µs | exported=0.41 MB acks=5000
[warmup] done — starting measurement (5000 ticks)
tick=   1000 | entities=  50000 (sensor_active= 22364, alerts= 118, act= 5000) | faults=462345 lockouts=  0 | rss=   0.0 MB | tick_mean=  548.8 µs | ingest= 254.6 sim=  30.7 export=  20.0 diag=  0.0 µs | exported=203.46 MB acks=2505000
tick=   2000 | entities=  50000 (sensor_active= 22510, alerts=  97, act= 5000) | faults=912440 lockouts=  0 | rss=   0.0 MB | tick_mean=  546.7 µs | ingest= 253.0 sim=  30.3 export=  19.9 diag=  0.0 µs | exported=609.56 MB acks=7505000
tick=   3000 | entities=  50000 (sensor_active= 22512, alerts=  90, act= 5000) | faults=1361728 lockouts=  0 | rss=   0.0 MB | tick_mean=  549.3 µs | ingest= 254.3 sim=  30.6 export=  20.1 diag=  0.0 µs | exported=1015.66 MB acks=12505000
tick=   4000 | entities=  50000 (sensor_active= 22519, alerts=  98, act= 5000) | faults=1812084 lockouts=  0 | rss=   0.0 MB | tick_mean=  549.2 µs | ingest= 254.1 sim=  30.5 export=  20.0 diag=  0.0 µs | exported=1421.74 MB acks=17505000
tick=   5000 | entities=  50000 (sensor_active= 22355, alerts= 101, act= 5000) | faults=2261407 lockouts=  0 | rss=   0.0 MB | tick_mean=  545.8 µs | ingest= 252.6 sim=  30.4 export=  19.9 diag=  0.0 µs | exported=1827.82 MB acks=22505000

── Final Summary ──────────────────────────────────────
Total ticks (measurement):  5000
Total wall time:            2.743 s
Sustained tick rate:        1822.8 Hz
Per-tick mean (wall):       54.9 µs

Per-system mean (µs):
IngestSystem:             254.0
SimulationSystem:         30.5
ExportSystem:             19.9
DiagnosticsSystem:        0.0

Fault injection:
Total sensor faults:      2486121
Total actuator lockouts:  0

Export totals:
Bytes exported:           2030.46 MB
Acks processed:           25000000
Alerts seen:              511654

Memory (RSS at end):        0.0 MB
────────────────────────────────────────────────────────

=== entities=75000 ===
ECS Digital Twin Benchmark — TRANSIT lab / UQAC
entities=75000 | ticks=5000 | warmup=500 | fault_prob=2.0%
[spawn] SensorAsset=52500  EventAsset=15000  ActuatorAsset=7500  total=75000
[warmup] running 500 ticks...
tick=      0 | entities=  75000 (sensor_active= 66146, alerts=   0, act= 7500) | faults=  1354 lockouts=  0 | rss=   0.0 MB | tick_mean=    0.0 µs | ingest= 188.0 sim=  62.0 export=  32.0 diag=  0.0 µs | exported=0.61 MB acks=7500
[warmup] done — starting measurement (5000 ticks)
tick=   1000 | entities=  75000 (sensor_active= 33877, alerts= 133, act= 7500) | faults=693165 lockouts=  0 | rss=   0.0 MB | tick_mean=  818.6 µs | ingest= 378.8 sim=  45.8 export=  30.8 diag=  0.0 µs | exported=305.18 MB acks=3757500
tick=   2000 | entities=  75000 (sensor_active= 33696, alerts= 163, act= 7500) | faults=1367793 lockouts=  0 | rss=   0.0 MB | tick_mean=  817.4 µs | ingest= 377.4 sim=  45.7 export=  30.6 diag=  0.0 µs | exported=914.34 MB acks=11257500
tick=   3000 | entities=  75000 (sensor_active= 33889, alerts= 145, act= 7500) | faults=2042643 lockouts=  0 | rss=   0.0 MB | tick_mean=  817.6 µs | ingest= 377.7 sim=  45.8 export=  30.6 diag=  0.0 µs | exported=1523.51 MB acks=18757500
tick=   4000 | entities=  75000 (sensor_active= 33657, alerts= 169, act= 7500) | faults=2717674 lockouts=  0 | rss=   0.0 MB | tick_mean=  815.9 µs | ingest= 376.7 sim=  45.6 export=  30.5 diag=  0.0 µs | exported=2132.66 MB acks=26257500
tick=   5000 | entities=  75000 (sensor_active= 33573, alerts= 162, act= 7500) | faults=3393495 lockouts=  0 | rss=   0.0 MB | tick_mean=  820.1 µs | ingest= 377.7 sim=  45.7 export=  30.7 diag=  0.0 µs | exported=2741.78 MB acks=33757500

── Final Summary ──────────────────────────────────────
Total ticks (measurement):  5000
Total wall time:            4.094 s
Sustained tick rate:        1221.3 Hz
Per-tick mean (wall):       82.0 µs

Per-system mean (µs):
IngestSystem:             377.6
SimulationSystem:         45.7
ExportSystem:             30.6
DiagnosticsSystem:        0.0

Fault injection:
Total sensor faults:      3730093
Total actuator lockouts:  0

Export totals:
Bytes exported:           3045.72 MB
Acks processed:           37500000
Alerts seen:              771425

Memory (RSS at end):        0.0 MB
────────────────────────────────────────────────────────

=== entities=100000 ===
ECS Digital Twin Benchmark — TRANSIT lab / UQAC
entities=100000 | ticks=5000 | warmup=500 | fault_prob=2.0%
[spawn] SensorAsset=70000  EventAsset=20000  ActuatorAsset=10000  total=100000
[warmup] running 500 ticks...
tick=      0 | entities= 100000 (sensor_active= 88228, alerts=   0, act=10000) | faults=  1772 lockouts=  0 | rss=   0.0 MB | tick_mean=    0.0 µs | ingest= 202.0 sim=  75.0 export=  41.0 diag=  0.0 µs | exported=0.81 MB acks=10000
[warmup] done — starting measurement (5000 ticks)
tick=   1000 | entities= 100000 (sensor_active= 45396, alerts= 218, act=10000) | faults=924085 lockouts=  0 | rss=   0.0 MB | tick_mean= 1101.8 µs | ingest= 500.9 sim=  61.2 export=  40.6 diag=  0.0 µs | exported=406.92 MB acks=5010000
tick=   2000 | entities= 100000 (sensor_active= 44998, alerts= 212, act=10000) | faults=1823730 lockouts=  0 | rss=   0.0 MB | tick_mean= 1105.1 µs | ingest= 501.0 sim=  61.1 export=  40.6 diag=  0.0 µs | exported=1219.14 MB acks=15010000
tick=   3000 | entities= 100000 (sensor_active= 45132, alerts= 187, act=10000) | faults=2723608 lockouts=  0 | rss=   0.0 MB | tick_mean= 1114.2 µs | ingest= 504.7 sim=  61.5 export=  40.8 diag=  0.0 µs | exported=2031.31 MB acks=25010000
tick=   4000 | entities= 100000 (sensor_active= 45039, alerts= 226, act=10000) | faults=3624295 lockouts=  0 | rss=   0.0 MB | tick_mean= 1112.0 µs | ingest= 505.0 sim=  61.7 export=  40.9 diag=  0.0 µs | exported=2843.48 MB acks=35010000
tick=   5000 | entities= 100000 (sensor_active= 45069, alerts= 206, act=10000) | faults=4525217 lockouts=  0 | rss=   0.0 MB | tick_mean= 1112.9 µs | ingest= 504.7 sim=  61.8 export=  40.9 diag=  0.0 µs | exported=3655.68 MB acks=45010000

── Final Summary ──────────────────────────────────────
Total ticks (measurement):  5000
Total wall time:            5.555 s
Sustained tick rate:        900.2 Hz
Per-tick mean (wall):       111.2 µs

Per-system mean (µs):
IngestSystem:             504.2
SimulationSystem:         61.8
ExportSystem:             41.0
DiagnosticsSystem:        0.0

Fault injection:
Total sensor faults:      4974449
Total actuator lockouts:  0

Export totals:
Bytes exported:           4060.96 MB
Acks processed:           50000000
Alerts seen:              1028407

Memory (RSS at end):        0.0 MB
────────────────────────────────────────────────────────

=== entities=150000 ===
ECS Digital Twin Benchmark — TRANSIT lab / UQAC
entities=150000 | ticks=5000 | warmup=500 | fault_prob=2.0%
[spawn] SensorAsset=105000  EventAsset=30000  ActuatorAsset=15000  total=150000
[warmup] running 500 ticks...
tick=      0 | entities= 150000 (sensor_active=132379, alerts=   0, act=15000) | faults=  2621 lockouts=  0 | rss=   0.0 MB | tick_mean=    0.0 µs | ingest= 306.0 sim= 113.0 export=  61.0 diag=  0.0 µs | exported=1.22 MB acks=15000
[warmup] done — starting measurement (5000 ticks)
tick=   1000 | entities= 150000 (sensor_active= 67721, alerts= 326, act=15000) | faults=1385323 lockouts=  0 | rss=   0.0 MB | tick_mean= 1717.3 µs | ingest= 755.7 sim=  92.9 export=  61.8 diag=  0.0 µs | exported=610.34 MB acks=7515000
tick=   2000 | entities= 150000 (sensor_active= 67238, alerts= 278, act=15000) | faults=2736064 lockouts=  0 | rss=   0.0 MB | tick_mean= 1721.7 µs | ingest= 755.2 sim=  93.0 export=  61.8 diag=  0.0 µs | exported=1828.59 MB acks=22515000
tick=   3000 | entities= 150000 (sensor_active= 67728, alerts= 330, act=15000) | faults=4087020 lockouts=  0 | rss=   0.0 MB | tick_mean= 1719.6 µs | ingest= 753.9 sim=  93.0 export=  61.5 diag=  0.0 µs | exported=3046.89 MB acks=37515000
tick=   4000 | entities= 150000 (sensor_active= 67533, alerts= 323, act=15000) | faults=5437256 lockouts=  0 | rss=   0.0 MB | tick_mean= 1715.2 µs | ingest= 753.4 sim=  92.6 export=  61.5 diag=  0.0 µs | exported=4265.19 MB acks=52515000
tick=   5000 | entities= 150000 (sensor_active= 67700, alerts= 334, act=15000) | faults=6786973 lockouts=  0 | rss=   0.0 MB | tick_mean= 1726.7 µs | ingest= 755.2 sim=  93.0 export=  61.8 diag=  0.0 µs | exported=5483.51 MB acks=67515000

── Final Summary ──────────────────────────────────────
Total ticks (measurement):  5000
Total wall time:            8.604 s
Sustained tick rate:        581.1 Hz
Per-tick mean (wall):       171.6 µs

Per-system mean (µs):
IngestSystem:             754.2
SimulationSystem:         92.5
ExportSystem:             61.7
DiagnosticsSystem:        0.0

Fault injection:
Total sensor faults:      7460636
Total actuator lockouts:  0

Export totals:
Bytes exported:           6091.45 MB
Acks processed:           75000000
Alerts seen:              1543036

Memory (RSS at end):        0.0 MB
────────────────────────────────────────────────────────

=== entities=200000 ===
ECS Digital Twin Benchmark — TRANSIT lab / UQAC
entities=200000 | ticks=5000 | warmup=500 | fault_prob=2.0%
[spawn] SensorAsset=140000  EventAsset=40000  ActuatorAsset=20000  total=200000
[warmup] running 500 ticks...
tick=      0 | entities= 200000 (sensor_active=176493, alerts=   0, act=20000) | faults=  3507 lockouts=  0 | rss=   0.0 MB | tick_mean=    0.0 µs | ingest= 415.0 sim= 160.0 export=  84.0 diag=  0.0 µs | exported=1.62 MB acks=20000
[warmup] done — starting measurement (5000 ticks)
tick=   1000 | entities= 200000 (sensor_active= 90145, alerts= 390, act=20000) | faults=1847083 lockouts=  0 | rss=   0.0 MB | tick_mean= 2413.0 µs | ingest=1003.2 sim= 125.4 export=  83.3 diag=  0.0 µs | exported=813.81 MB acks=10020000
tick=   2000 | entities= 200000 (sensor_active= 90392, alerts= 385, act=20000) | faults=3647521 lockouts=  0 | rss=   0.0 MB | tick_mean= 2409.9 µs | ingest=1003.2 sim= 125.4 export=  83.1 diag=  0.0 µs | exported=2438.20 MB acks=30020000
tick=   3000 | entities= 200000 (sensor_active= 90372, alerts= 391, act=20000) | faults=5447700 lockouts=  0 | rss=   0.0 MB | tick_mean= 2380.4 µs | ingest= 998.3 sim= 124.5 export=  82.8 diag=  0.0 µs | exported=4062.57 MB acks=50020000
tick=   4000 | entities= 200000 (sensor_active= 89452, alerts= 451, act=20000) | faults=7247668 lockouts=  0 | rss=   0.0 MB | tick_mean= 2380.1 µs | ingest= 998.7 sim= 124.7 export=  82.5 diag=  0.0 µs | exported=5686.95 MB acks=70020000
tick=   5000 | entities= 200000 (sensor_active= 89914, alerts= 424, act=20000) | faults=9047286 lockouts=  0 | rss=   0.0 MB | tick_mean= 2386.7 µs | ingest= 999.0 sim= 124.7 export=  82.8 diag=  0.0 µs | exported=7311.35 MB acks=90020000

── Final Summary ──────────────────────────────────────
Total ticks (measurement):  5000
Total wall time:            11.966 s
Sustained tick rate:        417.9 Hz
Per-tick mean (wall):       239.4 µs

Per-system mean (µs):
IngestSystem:             1001.3
SimulationSystem:         125.2
ExportSystem:             83.1
DiagnosticsSystem:        0.0

Fault injection:
Total sensor faults:      9946420
Total actuator lockouts:  0

Export totals:
Bytes exported:           8121.92 MB
Acks processed:           100000000
Alerts seen:              2056796

Memory (RSS at end):        0.0 MB
────────────────────────────────────────────────────────
