> Latest committed benchmark result from the automated `oxmgr` vs `pm2` workflow. > > Methodology and local repro steps: [docs/BENCHMARKS.md](./docs/BENCHMARKS.md) > > Machine-readable snapshot: [benchmark.json](./benchmark.json) # Oxmgr vs PM2 Benchmarks - Generated: 2026-11-09T13:59:13.799018+00:00 - Host platform: linux (Linux 7.0.0-1019-azure) - Node.js: v20.20.2 - pm2 command: `/opt/hostedtoolcache/node/20.20.2/x64/bin/pm2` - oxmgr binary: `/home/runner/work/OxMgr/OxMgr/target/release/oxmgr` GitHub-hosted runners are noisy. Treat the numbers as trend signals, not absolute lab measurements. ## Empty Daemon Boot | Manager | boot median (ms) | boot p95 (ms) | daemon RSS median (KB) | | --- | ---: | ---: | ---: | | oxmgr | 101.0 | 102.2 | 6856.0 | | pm2 | 362.7 | 439.6 | 58156.0 | ## Scale: Start, Settle, List, RSS | Processes | Manager | start median (ms) | settle median (ms) | list median (ms) | daemon RSS median (KB) | | ---: | --- | ---: | ---: | ---: | ---: | | 1 | oxmgr | 4.4 | 0.2 | 2.3 | 7584.0 | | 1 | pm2 | 173.2 | 175.5 | 122.1 | 67584.0 | | 25 | oxmgr | 190.5 | 0.6 | 3.6 | 8004.0 | | 25 | pm2 | 1351.5 | 230.6 | 185.5 | 121332.0 | | 100 | oxmgr | 816.2 | 1.5 | 3.2 | 10440.0 | | 100 | pm2 | 5366.3 | 339.5 | 271.5 | 167992.0 | ## Single-App Lifecycle | Scenario | Manager | median (ms) | p95 (ms) | | --- | --- | ---: | ---: | | restart command | oxmgr | 206.4 | 207.4 | | restart command | pm2 | 257.6 | 269.8 | | restart -> pid visible | oxmgr | 206.8 | 208.6 | | restart -> pid visible | pm2 | 276.6 | 286.8 | | restart -> ready event emitted | oxmgr | 230.1 | 231.9 | | restart -> ready event emitted | pm2 | 355.3 | 369.2 | | restart -> ready event visible | oxmgr | 237.6 | 239.5 | | restart -> ready event visible | pm2 | 365.4 | 376.7 | | restart -> tcp ready | oxmgr | 239.3 | 241.2 | | restart -> tcp ready | pm2 | 366.4 | 377.6 | | crash -> pid visible | oxmgr | 3.7 | 5.4 | | crash -> pid visible | pm2 | 157.3 | 172.6 | | crash -> ready event emitted | oxmgr | 27.3 | 30.2 | | crash -> ready event emitted | pm2 | 130.4 | 143.3 | | crash -> ready event visible | oxmgr | 34.4 | 36.0 | | crash -> ready event visible | pm2 | 157.4 | 172.7 | | crash -> tcp ready | oxmgr | 36.0 | 37.6 | | crash -> tcp ready | pm2 | 158.4 | 173.8 | ## Quick Read - Empty-daemon boot: oxmgr 3.59x lower vs pm2 - Empty-daemon RSS: oxmgr 8.48x lower vs pm2 - Restart command latency: oxmgr 1.25x lower vs pm2 - Restart TCP-ready latency: oxmgr 1.53x lower vs pm2 - Crash replacement PID visibility: oxmgr 42.76x lower vs pm2 - Crash ready-event emitted latency: oxmgr 4.77x lower vs pm2 - Crash TCP-ready latency: oxmgr 4.40x lower vs pm2 - Daemon RSS at 100 processes: oxmgr 16.09x lower vs pm2