|
|
|
|
|
by atomt
3251 days ago
|
|
A warning if you want to try out BBR yourself: Due to how BBR relies on pacing in the network stack make sure you do not combine BBR with any other qdisc ("packet scheduler") than FQ. You will get very bad performance, lots of retransmits and in general not very neighbourly behaviour if you use it with any of the other schedulers. This requirement is going away in Linux 4.13, but until then blindly selecting BBR can be quite damaging. Easiest way to ensure fq is used: set the net.core.default_qdisc sysctl parameter to "fq" using /etc/sysctl.d/ or /etc/sysctl.conf, then reboot. Check by running "tc qdisc show" Source: bottom note of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... |
|
Prior to 4.12 the VIRTIO Net driver always orphans skbs when they're transmitted (see start_xmit()). This causes the qdisc layer to believe packets are leaving the NIC immediately until you've completely filled your Tx queue (at which point you will now be paced at line rate, but with a queue-depth delay between the kernel's view of when the packet hit the wire and when the packet actually hit the wire).
After looking at the code -- even in 4.12 enabling Tx NAPI still seems to be a module parameter.
(I'm not sure which other drivers might have the same issue -- my day job is limited to a handful of devices, and mostly on the device side rather than the driver side)