Switch TCP congestion control to BBR with fq pacing

Cubic keeps pushing until packets drop, which stands queues up in the path
on fast links. BBR paces to its estimate of bottleneck bandwidth and minimum
RTT instead, cutting queueing latency while keeping throughput. fq is the
qdisc BBR is built to pace through.

tcp_bbr and sch_fq are modules in every kernel Omarchy ships and autoload
when the sysctls are set. The migration re-applies the shipped file so new
connections switch without a reboot, no-ops once the live values match, and
flags a reboot if applying fails.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier HanssonandClaude Fable 5.1 committed 2026-09-13 12:15:27 +02:00
1 parent 93d9d0c859
commit 9246647071
2 files changed
+17

No files matched your search

+6
View File
@@ -1,6 +1,12 @@
# Solve common flakiness with SSH (MTU discovery on flaky links).
net.ipv4.tcp_mtu_probing=1
# BBR estimates bottleneck bandwidth and minimum RTT and paces to them, where
# cubic keeps pushing until packets drop. That cuts queueing latency
# (bufferbloat) on fast links. fq is the qdisc BBR is built to pace through.
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
# Tune reclaim for swap on zram, which is orders of magnitude faster than the
# disk swapfile these defaults assume.
+11
View File
@@ -0,0 +1,11 @@
echo "Switch TCP congestion control to BBR with fq pacing"
# Boot applies the shipped file regardless; this only makes new connections
# use BBR now. Setting the sysctls autoloads tcp_bbr and sch_fq. Qdiscs
# already attached to interfaces stay until they are recreated, normally at
# reboot.
if [[ $(sysctl -n net.ipv4.tcp_congestion_control) == "bbr" && $(sysctl -n net.core.default_qdisc) == "fq" ]]; then
exit 0
fi
sudo sysctl -p /etc/sysctl.d/99-omarchy-sysctl.conf >/dev/null || omarchy-state set reboot-required