Performance
Oxmgr vs PM2 — Benchmarks
Automated benchmarks run on every push. Numbers reflect real-world process management workloads, not synthetic microbenchmarks.
| Metric | Oxmgr | PM2 | Ratio |
|---|---|---|---|
| Boot time | 100.7 ms | 382.8 ms | 3.80× faster |
| Daemon RSS (idle) | 5,892 KB | 56,932 KB | 9.66× lower |
| Daemon RSS (100 procs) | 6,880 KB | 145,532 KB | 21.15× lower |
| Start 1 process | 3.9 ms | 184.0 ms | 47.67× faster |
| Start 100 processes | 773.3 ms | 5.82 s | 7.53× faster |
| Restart → TCP ready | 238.3 ms | 380.9 ms | 1.60× faster |
| Crash → PID visible | 3.7 ms | 157.2 ms | 41.97× faster |
| Crash → TCP ready | 36.0 ms | 158.3 ms | 4.40× faster |
Methodology
Benchmarks are executed automatically via GitHub Actions on Ubuntu runners for every push to the main branch. The workload simulates real process management scenarios: starting, stopping, and restarting Node.js HTTP servers.
- — Environment: GitHub Actions Ubuntu (latest), Linux 6.14 on Azure
- — Workload: Idle Node.js HTTP server — single process and fleet of 100
- — Measurement: Median of 5 runs for each metric
- — TCP readiness: Polling localhost:3000 until first successful connection
Important caveat
GitHub-hosted runners share infrastructure and exhibit non-trivial measurement noise. Treat these numbers as directional trend signals, not absolute lab measurements. The relative differences are consistent across runs, but absolute timing values will vary depending on host load.
Run it yourself
The benchmark script is included in the repository. Requires Python 3, Node.js, and both oxmgr and pm2 installed.