Real TCP benchmark results — isolated processes (one process per strategy per concurrency level)
Server: Amsterdam VPS, 1 vCPU, 961 MB RAM, Linux 6.8.0-106-generic, GOMAXPROCS=1
Date: 2026-03-28
Binary: benchmarks/cmd/realnet/main.go

=== SUMMARY ===

| Scenario         | Strategy | Duration | Throughput | Peak mem | GC cycles | GC pause total |
|------------------|----------|----------|------------|----------|-----------|----------------|
| 500 conn × 2MB   | stack    | 28.5s    | 70.1 MB/s  | 23.1 MB  | 5         | 342µs          |
| 500 conn × 2MB   | pool     | 31.6s    | 63.2 MB/s  | 31.8 MB  | 4         | 341µs          |
| 1000 conn × 1MB  | stack    | 31.6s    | 63.2 MB/s  | 40.0 MB  | 6         | 352µs          |
| 1000 conn × 1MB  | pool     | 28.9s    | 69.2 MB/s  | 62.9 MB  | 5         | 576µs          |
| 2000 conn × 1MB  | stack    | 2m17s    | 24.0 MB/s  | 61.4 MB  | 7         | 748µs          |
| 2000 conn × 1MB  | pool     | 1m6s     | 60.4 MB/s  | 125.5 MB | 6         | 570µs          |

Notes:
- 2000 conn stack: connection timeouts, only 3.2 GB of 4.0 GB transferred
- 2000 conn pool: clean run, 3.9 GB of 4.0 GB transferred (minor timeouts)
- Peak memory = StackInuse + HeapInuse, sampled every 10ms
- Each strategy runs in a fresh process (no baseline contamination)

=== RAW OUTPUT ===

--- 500 conns: STACK ONLY ---

=== stack strategy, 500 connections, 2.0 MB per conn ===
  [2.0s] 140.9 MB transferred, 70.4 MB/s
  [4.0s] 300.7 MB transferred, 75.2 MB/s
  [6.0s] 447.0 MB transferred, 74.5 MB/s
  [8.0s] 583.9 MB transferred, 73.0 MB/s
  [10.0s] 722.0 MB transferred, 72.2 MB/s
  [12.0s] 868.4 MB transferred, 72.4 MB/s
  [14.0s] 1010.1 MB transferred, 72.2 MB/s
  [16.0s] 1.1 GB transferred, 71.6 MB/s
  [18.0s] 1.3 GB transferred, 71.5 MB/s
  [20.0s] 1.4 GB transferred, 71.1 MB/s
  [22.0s] 1.5 GB transferred, 70.9 MB/s
  [24.0s] 1.7 GB transferred, 70.6 MB/s
  [26.0s] 1.8 GB transferred, 70.1 MB/s
  [28.0s] 1.9 GB transferred, 70.0 MB/s

Results:
  Duration:       28.546s
  Total data:     2.0 GB
  Throughput:     70.1 MB/s
  Peak memory:    23.1 MB (baseline 440.0 KB, delta 22.7 MB)
  Stack (before): 224.0 KB → (after): 1.5 MB
  Heap  (before): 216.0 KB → (after): 1.6 MB
  Goroutines:     3 → 3
  GC cycles:      5
  GC total pause: 341.566µs
  GC avg pause:   68.313µs

--- 500 conns: POOL ONLY ---

=== pool strategy, 500 connections, 2.0 MB per conn ===
  [2.0s] 109.5 MB transferred, 54.8 MB/s
  [4.0s] 233.1 MB transferred, 58.3 MB/s
  [6.0s] 355.3 MB transferred, 59.2 MB/s
  [8.0s] 475.9 MB transferred, 59.5 MB/s
  [10.0s] 592.7 MB transferred, 59.3 MB/s
  [12.0s] 707.9 MB transferred, 59.0 MB/s
  [14.0s] 840.1 MB transferred, 60.0 MB/s
  [16.0s] 977.7 MB transferred, 61.1 MB/s
  [18.0s] 1.1 GB transferred, 62.4 MB/s
  [20.0s] 1.2 GB transferred, 62.8 MB/s
  [22.0s] 1.4 GB transferred, 62.8 MB/s
  [24.0s] 1.5 GB transferred, 63.1 MB/s
  [26.0s] 1.6 GB transferred, 62.8 MB/s
  [28.0s] 1.7 GB transferred, 63.0 MB/s
  [30.0s] 1.9 GB transferred, 63.4 MB/s

Results:
  Duration:       31.631s
  Total data:     2.0 GB
  Throughput:     63.2 MB/s
  Peak memory:    31.8 MB (baseline 440.0 KB, delta 31.4 MB)
  Stack (before): 224.0 KB → (after): 1.5 MB
  Heap  (before): 216.0 KB → (after): 17.3 MB
  Goroutines:     3 → 3
  GC cycles:      4
  GC total pause: 341.071µs
  GC avg pause:   85.267µs

--- 1000 conns: STACK ONLY ---

=== stack strategy, 1000 connections, 1.0 MB per conn ===
  [2.0s] 109.6 MB transferred, 54.8 MB/s
  [4.0s] 252.7 MB transferred, 63.2 MB/s
  [6.0s] 401.2 MB transferred, 66.9 MB/s
  [8.0s] 524.8 MB transferred, 65.6 MB/s
  [10.0s] 638.9 MB transferred, 63.9 MB/s
  [12.0s] 763.2 MB transferred, 63.6 MB/s
  [14.0s] 900.3 MB transferred, 64.3 MB/s
  [16.0s] 1.0 GB transferred, 65.2 MB/s
  [18.0s] 1.1 GB transferred, 65.2 MB/s
  [20.0s] 1.3 GB transferred, 64.3 MB/s
  [22.0s] 1.4 GB transferred, 63.7 MB/s
  [24.0s] 1.5 GB transferred, 63.4 MB/s
  [26.0s] 1.6 GB transferred, 63.1 MB/s
  [28.0s] 1.7 GB transferred, 63.1 MB/s
  [30.0s] 1.9 GB transferred, 63.3 MB/s

Results:
  Duration:       31.629s
  Total data:     2.0 GB
  Throughput:     63.2 MB/s
  Peak memory:    40.0 MB (baseline 440.0 KB, delta 39.6 MB)
  Stack (before): 224.0 KB → (after): 1.2 MB
  Heap  (before): 216.0 KB → (after): 2.8 MB
  Goroutines:     3 → 3
  GC cycles:      6
  GC total pause: 352.22µs
  GC avg pause:   58.703µs

--- 1000 conns: POOL ONLY ---

=== pool strategy, 1000 connections, 1.0 MB per conn ===
  [2.0s] 113.3 MB transferred, 56.6 MB/s
  [4.0s] 253.0 MB transferred, 63.3 MB/s
  [6.0s] 398.7 MB transferred, 66.4 MB/s
  [8.0s] 548.1 MB transferred, 68.5 MB/s
  [10.0s] 693.0 MB transferred, 69.3 MB/s
  [12.0s] 833.5 MB transferred, 69.5 MB/s
  [14.0s] 980.1 MB transferred, 70.0 MB/s
  [16.0s] 1.1 GB transferred, 70.4 MB/s
  [18.0s] 1.2 GB transferred, 70.2 MB/s
  [20.0s] 1.4 GB transferred, 70.2 MB/s
  [22.0s] 1.5 GB transferred, 70.2 MB/s
  [24.0s] 1.6 GB transferred, 69.9 MB/s
  [26.0s] 1.8 GB transferred, 69.7 MB/s
  [28.0s] 1.9 GB transferred, 69.5 MB/s

Results:
  Duration:       28.899s
  Total data:     2.0 GB
  Throughput:     69.2 MB/s
  Peak memory:    62.9 MB (baseline 440.0 KB, delta 62.5 MB)
  Stack (before): 224.0 KB → (after): 320.0 KB
  Heap  (before): 216.0 KB → (after): 34.2 MB
  Goroutines:     3 → 3
  GC cycles:      5
  GC total pause: 575.835µs
  GC avg pause:   115.167µs

--- 2000 conns: STACK ONLY ---

=== stack strategy, 2000 connections, 1.0 MB per conn ===
  [2.0s] 90.0 MB transferred, 45.0 MB/s
  [4.0s] 96.0 MB transferred, 24.0 MB/s
  [6.0s] 102.0 MB transferred, 17.0 MB/s
  [8.0s] 106.0 MB transferred, 13.2 MB/s
  [10.0s] 108.0 MB transferred, 10.8 MB/s
  [12.0s] 169.1 MB transferred, 14.1 MB/s
  [14.0s] 246.0 MB transferred, 17.6 MB/s
  [16.0s] 246.0 MB transferred, 15.4 MB/s
  [18.0s] 246.0 MB transferred, 13.7 MB/s
  [20.0s] 266.0 MB transferred, 13.3 MB/s
  [22.0s] 274.0 MB transferred, 12.5 MB/s
  [24.0s] 274.0 MB transferred, 11.4 MB/s
  [26.0s] 274.0 MB transferred, 10.5 MB/s
  [28.0s] 276.0 MB transferred, 9.9 MB/s
  [30.0s] 276.0 MB transferred, 9.2 MB/s
  [32.0s] 302.0 MB transferred, 9.4 MB/s
  [34.0s] 302.0 MB transferred, 8.9 MB/s
  [36.0s] 302.0 MB transferred, 8.4 MB/s
  [38.0s] 437.0 MB transferred, 11.5 MB/s
  [40.0s] 578.4 MB transferred, 14.5 MB/s
  [42.0s] 719.2 MB transferred, 17.1 MB/s
  [44.0s] 859.6 MB transferred, 19.5 MB/s
  [46.0s] 996.6 MB transferred, 21.7 MB/s
  [48.0s] 1.1 GB transferred, 23.7 MB/s
  [50.0s] 1.2 GB transferred, 25.5 MB/s
  [52.0s] 1.4 GB transferred, 27.2 MB/s
  [54.0s] 1.5 GB transferred, 28.8 MB/s
  [56.0s] 1.6 GB transferred, 30.2 MB/s
  [58.0s] 1.8 GB transferred, 31.6 MB/s
  [60.0s] 1.9 GB transferred, 31.8 MB/s
  [62.0s] 1.9 GB transferred, 30.8 MB/s
  [64.0s] 1.9 GB transferred, 29.8 MB/s
  [66.0s] 1.9 GB transferred, 29.6 MB/s
  [68.0s] 1.9 GB transferred, 28.7 MB/s
  [70.0s] 2.0 GB transferred, 29.6 MB/s
  [72.0s] 2.2 GB transferred, 30.8 MB/s
  [74.0s] 2.3 GB transferred, 31.9 MB/s
  [76.0s] 2.4 GB transferred, 32.9 MB/s
  [78.0s] 2.6 GB transferred, 33.9 MB/s
  [80.0s] 2.7 GB transferred, 34.8 MB/s
  [82.0s] 2.8 GB transferred, 35.6 MB/s
  [84.0s] 3.0 GB transferred, 36.5 MB/s
  [86.0s] 3.1 GB transferred, 37.3 MB/s
  [88.0s] 3.2 GB transferred, 36.8 MB/s
  [90.0s] 3.2 GB transferred, 36.0 MB/s
  [92.0s] 3.2 GB transferred, 35.2 MB/s
  [94.0s] 3.2 GB transferred, 34.6 MB/s
  [96.0s] 3.2 GB transferred, 33.9 MB/s
  [98.0s] 3.2 GB transferred, 33.2 MB/s
  [100.0s] 3.2 GB transferred, 32.5 MB/s
  [102.0s] 3.2 GB transferred, 31.9 MB/s
  [104.0s] 3.2 GB transferred, 31.3 MB/s
  [106.0s] 3.2 GB transferred, 31.1 MB/s
  [108.0s] 3.2 GB transferred, 30.6 MB/s
  [110.0s] 3.2 GB transferred, 30.0 MB/s
  [112.0s] 3.2 GB transferred, 29.5 MB/s
  [114.0s] 3.2 GB transferred, 28.9 MB/s
  [116.0s] 3.2 GB transferred, 28.4 MB/s
  [118.0s] 3.2 GB transferred, 28.0 MB/s
  [120.0s] 3.2 GB transferred, 27.5 MB/s
  [122.0s] 3.2 GB transferred, 27.0 MB/s
  [124.0s] 3.2 GB transferred, 26.6 MB/s
  [126.0s] 3.2 GB transferred, 26.2 MB/s
  [128.0s] 3.2 GB transferred, 25.8 MB/s
  [130.0s] 3.2 GB transferred, 25.4 MB/s
  [132.0s] 3.2 GB transferred, 25.0 MB/s
client dial: dial tcp 127.0.0.1:36981: connect: connection timed out (x9)

Results:
  Duration:       2m17.37s
  Total data:     3.2 GB
  Throughput:     24.0 MB/s
  Peak memory:    61.4 MB (baseline 440.0 KB, delta 61.0 MB)
  Stack (before): 224.0 KB → (after): 1.7 MB
  Heap  (before): 216.0 KB → (after): 3.4 MB
  Goroutines:     3 → 3
  GC cycles:      7
  GC total pause: 747.714µs
  GC avg pause:   106.816µs

--- 2000 conns: POOL ONLY ---

=== pool strategy, 2000 connections, 1.0 MB per conn ===
  [2.0s] 44.2 MB transferred, 22.1 MB/s
  [4.0s] 165.1 MB transferred, 41.3 MB/s
  [6.0s] 294.2 MB transferred, 49.0 MB/s
  [8.0s] 420.4 MB transferred, 52.5 MB/s
  [10.0s] 542.3 MB transferred, 54.2 MB/s
  [12.0s] 665.4 MB transferred, 55.5 MB/s
  [14.0s] 794.3 MB transferred, 56.7 MB/s
  [16.0s] 924.0 MB transferred, 57.7 MB/s
  [18.0s] 1.0 GB transferred, 58.2 MB/s
  [20.0s] 1.1 GB transferred, 58.1 MB/s
  [22.0s] 1.2 GB transferred, 58.1 MB/s
  [24.0s] 1.4 GB transferred, 58.3 MB/s
  [26.0s] 1.5 GB transferred, 58.5 MB/s
  [28.0s] 1.6 GB transferred, 58.9 MB/s
  [30.0s] 1.7 GB transferred, 59.0 MB/s
  [32.0s] 1.8 GB transferred, 59.1 MB/s
  [34.0s] 2.0 GB transferred, 59.4 MB/s
  [36.0s] 2.1 GB transferred, 59.5 MB/s
  [38.0s] 2.2 GB transferred, 59.5 MB/s
  [40.0s] 2.3 GB transferred, 59.6 MB/s
  [42.0s] 2.4 GB transferred, 59.6 MB/s
  [44.0s] 2.6 GB transferred, 59.9 MB/s
  [46.0s] 2.7 GB transferred, 60.1 MB/s
  [48.0s] 2.8 GB transferred, 60.4 MB/s
  [50.0s] 3.0 GB transferred, 60.5 MB/s
  [52.0s] 3.1 GB transferred, 60.6 MB/s
  [54.0s] 3.2 GB transferred, 60.7 MB/s
  [56.0s] 3.3 GB transferred, 60.9 MB/s
  [58.0s] 3.4 GB transferred, 60.5 MB/s
  [60.0s] 3.5 GB transferred, 60.4 MB/s
  [62.0s] 3.7 GB transferred, 60.4 MB/s
  [64.0s] 3.8 GB transferred, 60.5 MB/s
  [66.0s] 3.9 GB transferred, 60.5 MB/s

Results:
  Duration:       1m6.189s
  Total data:     3.9 GB
  Throughput:     60.4 MB/s
  Peak memory:    125.5 MB (baseline 440.0 KB, delta 125.0 MB)
  Stack (before): 224.0 KB → (after): 1.3 MB
  Heap  (before): 216.0 KB → (after): 68.0 MB
  Goroutines:     3 → 3
  GC cycles:      6
  GC total pause: 570.3µs
  GC avg pause:   95.05µs
