rts gbps perf drop
- C 44.2%
- Haskell 39.3%
- Shell 16.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| app | ||
| cbits | ||
| docs | ||
| scripts | ||
| cabal.project | ||
| README.md | ||
| rts-way-tcp.cabal | ||
rts-way-tcp Repro
Self-contained repro for a large throughput gap between:
- non-profiled threaded RTS:
rts_thr - profiled threaded RTS:
rts_thr_p
on the same Haskell TCP sink server code.
What It Tests
- Haskell server: accept loop + per-connection
recvBufdrain loop. - C client: multi-thread sender to avoid Haskell-client effects.
- Same workload for both binaries:
connections=12buf=262144seconds=2
Run
cd repro/rts-way-tcp
bash scripts/repro.sh
Expected output shape:
thr rts_way=rts_thr
TCP_SINK_CLIENT ... gbps=<lower>
thrp rts_way=rts_thr_p
TCP_SINK_CLIENT ... gbps=<much higher>
Current Observed Behavior (host-dependent)
rts_thr: about ~116-121 Gbit/srts_thr_p: about ~222-226 Gbit/s
Why This Matters
This is a large performance split with identical app logic and identical external load generator. It points to RTS-way-specific behavior (or codegen/runtime interaction), not business logic.
Notes
- Server logs are written to
/tmp/rts_way_thr.logand/tmp/rts_way_thrp.log. - Build logs:
/tmp/rts_way_build_thr.log/tmp/rts_way_build_thrp.log