# Host-side perf baseline for left4me — see # docs/superpowers/specs/2026-05-09-l4d2-server-host-perf-baseline-design.md # # UDP socket buffers: distro defaults of ~128 KiB are too small for sustained # Source-engine UDP across multiple instances. 8 MiB matches the standard # 1 Gbit recommendation; rmem_default/wmem_default protect sockets that don't # explicitly enlarge their buffers. net.core.rmem_max = 8388608 net.core.wmem_max = 8388608 net.core.rmem_default = 524288 net.core.wmem_default = 524288 # Kernel softirq UDP path: the per-CPU backlog queue starts dropping packets # at the default 1000 under multi-instance burst; 5000 absorbs realistic peaks. # netdev_budget = 600 gives softirq more drain headroom per pass. net.core.netdev_max_backlog = 5000 net.core.netdev_budget = 600 # Latency-sensitive default: avoid swap unless the box is really under # pressure. Harmless on swapless hosts. vm.swappiness = 10 # Per-socket UDP buffer floors: protect game-server sockets that don't bump # their own SO_RCVBUF/SO_SNDBUF when softirq drains lag briefly. net.ipv4.udp_rmem_min = 16384 net.ipv4.udp_wmem_min = 16384 # Default qdisc for ifaces we don't explicitly shape with CAKE. Debian Trixie # already defaults to fq_codel; setting it explicitly is belt-and-suspenders # and survives kernel-default churn. net.core.default_qdisc = fq_codel # TCP congestion control: BBR for any bulk TCP egress on the host (admin SSH, # backups, package fetches, web-app responses) so a long flow does not push # the bottleneck queue ahead of game UDP. UDP srcds is unaffected. net.ipv4.tcp_congestion_control = bbr