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 ────────────────────────────────────────────────────────