chiark / gitweb /
sysctl.d: default to fq_codel, fight bufferbloat
authorMichal Schmidt <mschmidt@redhat.com>
Thu, 16 Oct 2014 11:49:04 +0000 (13:49 +0200)
committerMichal Schmidt <mschmidt@redhat.com>
Mon, 20 Oct 2014 16:19:00 +0000 (18:19 +0200)
Quoting from Jon Corbet's report of Stephen Hemminger's talk at Linux
Plumbers Conference 2014 (https://lwn.net/Articles/616241/):

    [...] So Stephen encouraged everybody to run a command like:

    sysctl -w net.core.default_qdisc=fq_codel

    That will cause fq_codel to be used for all future connections
    [Qdiscs apply to interfaces, not connections. Pointed out by TomH
    in the article comments. -- mschmidt] (up to the next reboot).
    Unfortunately, the default queuing discipline cannot be changed,
    since it will certainly disturb some user's workload somewhere.

Let's have the recommended default in systemd.

Thanks to Dave Täht for advice and the summary at
https://lists.bufferbloat.net/pipermail/cerowrt-devel/2014-October/003701.html

NEWS
sysctl.d/50-default.conf

diff --git a/NEWS b/NEWS
index c18ceaac5e31b7b56c39fb205c25634e978ec278..6e2b9615974d07f8ff74b16a4663076412838066 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -74,6 +74,18 @@ CHANGES WITH 217:
           systemd-ask-password gained a new --echo option to turn
           that on.
 
           systemd-ask-password gained a new --echo option to turn
           that on.
 
+        * The default sysctl.d/ snippets will now set:
+
+                net.core.default_qdisc = fq_codel
+
+          This selects Fair Queueing Controlled Delay as the default
+          queueing discipline for network interfaces. fq_codel helps
+          fight the network bufferbloat problem. It is believed to be
+          a good default with no tuning required for most workloads.
+          Downstream distributions may override this choice. On 10Gbit
+          servers that do not do forwarding, "fq" may perform better.
+          Systems without a good clocksource should use "pfifo_fast".
+
 CHANGES WITH 216:
 
         * timedated no longer reads NTP implementation unit names from
 CHANGES WITH 216:
 
         * timedated no longer reads NTP implementation unit names from
index 8fc9ab77a95fe931729bc856023ae6b8eb4f173b..f18923399bc4c75a77a97a85a7f390dc7a7595f6 100644 (file)
@@ -25,6 +25,9 @@ net.ipv4.conf.all.accept_source_route = 0
 net.ipv4.conf.default.promote_secondaries = 1
 net.ipv4.conf.all.promote_secondaries = 1
 
 net.ipv4.conf.default.promote_secondaries = 1
 net.ipv4.conf.all.promote_secondaries = 1
 
+# Fair Queue CoDel packet scheduler to fight bufferbloat
+net.core.default_qdisc = fq_codel
+
 # Enable hard and soft link protection
 fs.protected_hardlinks = 1
 fs.protected_symlinks = 1
 # Enable hard and soft link protection
 fs.protected_hardlinks = 1
 fs.protected_symlinks = 1