switch from shaped CAKE to FQ for BuyVM servers

These servers originally only had the 1Gbps base bandwidth and shaping
it with CAKE worked well to make the most of it during traffic spikes
for the web servers. It has little value for the nameservers since the
only potentially high throughput service is non-interactive SSH.

These servers now have 10Gbps burst available but are heavily limited by
their single virtual core and unable to use all of it in practice. CAKE
can only provide significant value when it's the bottleneck which isn't
the case when the workload is CPU limited. We don't want to keep around
the artificially low 1Gbps limit and it can't do much more.

Unlike OVH, the practical bottleneck is the CPU and FQ has the lowest
CPU usage in practice due to being very performance-oriented with a FIFO
fast path and offloading TCP pacing from the TCP stack to itself. On the
DNS servers, the fast path is always used in practice. Our OVH servers
have a much lower enforced bandwidth limit and the way they implement it
ruins fairness across flows. We definitely want to stick with CAKE for
our VPS instances on OVH but it doesn't make sense on BuyVM anymore.
This commit is contained in:
Daniel Micay 2025-09-17 23:17:24 -04:00
parent b2c15916cc
commit c6156ebed7
14 changed files with 417 additions and 61 deletions

View file

@ -26,10 +26,3 @@ PreferredSource=2605:6400:10:102e:95bc:89ef:2e7f:49bb
[Route]
Destination=2605:6400:10::1
PreferredSource=2605:6400:10:102e:95bc:89ef:2e7f:49bb
[CAKE]
Handle=1
Bandwidth=1000M
PriorityQueueingPreset=diffserv4
FlowIsolationMode=dual-dst-host
SplitGSO=false

View file

@ -23,10 +23,3 @@ PreferredSource=2605:6400:20:387:72d4:dab9:a369:f351
[Route]
Destination=2605:6400:20::1
PreferredSource=2605:6400:20:387:72d4:dab9:a369:f351
[CAKE]
Handle=1
Bandwidth=1000M
PriorityQueueingPreset=diffserv4
FlowIsolationMode=dual-dst-host
SplitGSO=false

View file

@ -23,10 +23,3 @@ PreferredSource=2605:6400:20:1131:8088:e08:84e6:632
[Route]
Destination=2605:6400:20::1
PreferredSource=2605:6400:20:1131:8088:e08:84e6:632
[CAKE]
Handle=1
Bandwidth=1000M
PriorityQueueingPreset=diffserv4
FlowIsolationMode=dual-dst-host
SplitGSO=false

View file

@ -26,10 +26,3 @@ PreferredSource=2605:6400:20:1c8f:a0c9:372d:482e:945b
[Route]
Destination=2605:6400:20::1
PreferredSource=2605:6400:20:1c8f:a0c9:372d:482e:945b
[CAKE]
Handle=1
Bandwidth=1000M
PriorityQueueingPreset=diffserv4
FlowIsolationMode=dual-dst-host
SplitGSO=false

View file

@ -26,10 +26,3 @@ PreferredSource=2605:6400:30:ec25:102c:af6d:5be:1eb8
[Route]
Destination=2605:6400:30::1
PreferredSource=2605:6400:30:ec25:102c:af6d:5be:1eb8
[CAKE]
Handle=1
Bandwidth=1000M
PriorityQueueingPreset=diffserv4
FlowIsolationMode=dual-dst-host
SplitGSO=false

View file

@ -23,10 +23,3 @@ PreferredSource=2605:6400:10:c41:de92:c534:326a:711a
[Route]
Destination=2605:6400:10::1
PreferredSource=2605:6400:10:c41:de92:c534:326a:711a
[CAKE]
Handle=1
Bandwidth=1000M
PriorityQueueingPreset=diffserv4
FlowIsolationMode=dual-dst-host
SplitGSO=false

View file

@ -23,10 +23,3 @@ PreferredSource=2605:6400:10:aa9:1c0f:44d3:da15:c0ec
[Route]
Destination=2605:6400:10::1
PreferredSource=2605:6400:10:aa9:1c0f:44d3:da15:c0ec
[CAKE]
Handle=1
Bandwidth=1000M
PriorityQueueingPreset=diffserv4
FlowIsolationMode=dual-dst-host
SplitGSO=false

View file

@ -23,10 +23,3 @@ PreferredSource=2605:6400:10:9d6:6d84:e183:acda:16d7
[Route]
Destination=2605:6400:10::1
PreferredSource=2605:6400:10:9d6:6d84:e183:acda:16d7
[CAKE]
Handle=1
Bandwidth=1000M
PriorityQueueingPreset=diffserv4
FlowIsolationMode=dual-dst-host
SplitGSO=false

View file

@ -0,0 +1,10 @@
[Unit]
Requires=sys-subsystem-net-devices-public.device
After=sys-subsystem-net-devices-public.device
[Service]
Type=oneshot
ExecStart=/usr/bin/tc qdisc replace dev public root handle 1 fq bands 3 priomap 1 2 2 2 0 2 0 0 1 1 1 1 1 1 1 1
[Install]
WantedBy=sys-subsystem-net-devices-public.device