Eric Dumazet
4b549a2ef4
fq_codel: Fair Queue Codel AQM
Fair Queue Codel packet scheduler
Principles :
- Packets are classified (internal classifier or external) on flows.
- This is a Stochastic model (as we use a hash, several flows might
be hashed on same slot)
- Each flow has a CoDel managed queue.
- Flows are linked onto two (Round Robin) lists,
so that new flows have priority on old ones.
- For a given flow, packets are not reordered (CoDel uses a FIFO)
- head drops only.
- ECN capability is on by default.
- Very low memory footprint (64 bytes per flow)
tc qdisc ... fq_codel [ limit PACKETS ] [ flows number ]
[ target TIME ] [ interval TIME ] [ noecn ]
[ quantum BYTES ]
defaults : 1024 flows, 10240 packets limit, quantum : device MTU
target : 5ms (CoDel default)
interval : 100ms (CoDel default)
Impressive results on load :
class htb 1:1 root leaf 10: prio 0 quantum 1514 rate 200000Kbit ceil 200000Kbit burst 1475b/8 mpu 0b overhead 0b cburst 1475b/8 mpu 0b overhead 0b level 0
Sent 43304920109 bytes 33063109 pkt (dropped 0, overlimits 0 requeues 0)
rate 201691Kbit 28595pps backlog 0b 312p requeues 0
lended: 33063109 borrowed: 0 giants: 0
tokens: -912 ctokens: -912
class fq_codel 10:1735 parent 10:
(dropped 1292, overlimits 0 requeues 0)
backlog 15140b 10p requeues 0
deficit 1514 count 1 lastcount 1 ldelay 7.1ms
class fq_codel 10:4524 parent 10:
(dropped 1291, overlimits 0 requeues 0)
backlog 16654b 11p requeues 0
deficit 1514 count 1 lastcount 1 ldelay 7.1ms
class fq_codel 10:4e74 parent 10:
(dropped 1290, overlimits 0 requeues 0)
backlog 6056b 4p requeues 0
deficit 1514 count 1 lastcount 1 ldelay 6.4ms dropping drop_next 92.0ms
class fq_codel 10:628a parent 10:
(dropped 1289, overlimits 0 requeues 0)
backlog 7570b 5p requeues 0
deficit 1514 count 1 lastcount 1 ldelay 5.4ms dropping drop_next 90.9ms
class fq_codel 10:a4b3 parent 10:
(dropped 302, overlimits 0 requeues 0)
backlog 16654b 11p requeues 0
deficit 1514 count 1 lastcount 1 ldelay 7.1ms
class fq_codel 10:c3c2 parent 10:
(dropped 1284, overlimits 0 requeues 0)
backlog 13626b 9p requeues 0
deficit 1514 count 1 lastcount 1 ldelay 5.9ms
class fq_codel 10:d331 parent 10:
(dropped 299, overlimits 0 requeues 0)
backlog 15140b 10p requeues 0
deficit 1514 count 1 lastcount 1 ldelay 7.0ms
class fq_codel 10:d526 parent 10:
(dropped 12160, overlimits 0 requeues 0)
backlog 35870b 211p requeues 0
deficit 1508 count 12160 lastcount 1 ldelay 15.3ms dropping drop_next 247us
class fq_codel 10:e2c6 parent 10:
(dropped 1288, overlimits 0 requeues 0)
backlog 15140b 10p requeues 0
deficit 1514 count 1 lastcount 1 ldelay 7.1ms
class fq_codel 10:eab5 parent 10:
(dropped 1285, overlimits 0 requeues 0)
backlog 16654b 11p requeues 0
deficit 1514 count 1 lastcount 1 ldelay 5.9ms
class fq_codel 10:f220 parent 10:
(dropped 1289, overlimits 0 requeues 0)
backlog 15140b 10p requeues 0
deficit 1514 count 1 lastcount 1 ldelay 7.1ms
qdisc htb 1: root refcnt 6 r2q 10 default 1 direct_packets_stat 0 ver 3.17
Sent 43331086547 bytes 33092812 pkt (dropped 0, overlimits 66063544 requeues 71)
rate 201697Kbit 28602pps backlog 0b 260p requeues 71
qdisc fq_codel 10: parent 1:1 limit 10240p flows 65536 target 5.0ms interval 100.0ms ecn
Sent 43331086547 bytes 33092812 pkt (dropped 949359, overlimits 0 requeues 0)
rate 201697Kbit 28602pps backlog 189352b 260p requeues 0
maxpacket 1514 drop_overlimit 0 new_flow_count 5582 ecn_mark 125593
new_flows_len 0 old_flows_len 11
PING 172.30.42.18 (172.30.42.18) 56(84) bytes of data.
64 bytes from 172.30.42.18: icmp_req=1 ttl=64 time=0.227 ms
64 bytes from 172.30.42.18: icmp_req=2 ttl=64 time=0.165 ms
64 bytes from 172.30.42.18: icmp_req=3 ttl=64 time=0.166 ms
64 bytes from 172.30.42.18: icmp_req=4 ttl=64 time=0.151 ms
64 bytes from 172.30.42.18: icmp_req=5 ttl=64 time=0.164 ms
64 bytes from 172.30.42.18: icmp_req=6 ttl=64 time=0.172 ms
64 bytes from 172.30.42.18: icmp_req=7 ttl=64 time=0.175 ms
64 bytes from 172.30.42.18: icmp_req=8 ttl=64 time=0.183 ms
64 bytes from 172.30.42.18: icmp_req=9 ttl=64 time=0.158 ms
64 bytes from 172.30.42.18: icmp_req=10 ttl=64 time=0.200 ms
10 packets transmitted, 10 received, 0% packet loss, time 8999ms
rtt min/avg/max/mdev = 0.151/0.176/0.227/0.022 ms
Much better than SFQ because of priority given to new flows, and fast
path dirtying less cache lines.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-05-12 15:53:42 -04:00
..
2012-04-15 17:35:19 -07:00
2012-03-28 10:01:29 -07:00
2012-03-27 00:37:23 +01:00
2012-04-23 14:23:32 +03:00
2012-04-16 16:45:34 +02:00
2012-04-16 21:27:07 +02:00
2012-04-05 05:08:03 -04:00
2012-04-20 20:30:19 -04:00
2012-03-30 17:31:56 -07:00
2012-05-09 13:04:57 +02:00
2012-05-08 20:25:42 +02:00
2012-05-09 12:53:47 +02:00
2012-04-16 15:19:12 -04:00
2012-04-11 09:31:01 +02:00
2012-04-10 14:30:45 -04:00
2012-03-26 20:41:01 +04:00
2012-04-04 10:09:30 -07:00
2012-04-27 11:03:38 -06:00
2012-03-24 10:08:39 -07:00
2012-03-26 11:48:54 -04:00
2012-05-12 15:02:22 -04:00
2012-03-30 16:45:39 -07:00
2012-03-22 09:31:55 -04:00
2012-03-24 10:41:37 -07:00
2012-03-20 21:29:40 -04:00
2012-03-20 21:29:46 -04:00
2012-03-24 10:08:39 -07:00
2012-03-23 16:58:34 -07:00
2012-03-30 12:33:28 +02:00
2012-03-24 10:41:37 -07:00
2012-03-21 17:55:01 -07:00
2012-03-28 18:30:03 +01:00
2012-03-21 17:54:56 -07:00
2012-03-29 18:12:23 -07:00
2012-03-23 16:58:36 -07:00
2012-03-24 10:41:37 -07:00
2012-03-24 10:41:37 -07:00
2012-03-30 03:23:30 -04:00
2012-03-29 15:38:31 +10:30
2012-03-29 14:46:05 -07:00
2012-03-23 16:58:38 -07:00
2012-03-24 10:08:39 -07:00
2012-03-29 19:52:48 +08:00
2012-03-20 21:29:37 -04:00
2012-04-05 05:08:04 -04:00
2012-04-14 15:24:26 -04:00
2012-03-28 15:58:21 -07:00
2012-03-20 21:29:53 -04:00
2012-03-21 18:55:10 -07:00
2012-03-28 16:36:44 +02:00
2012-03-28 15:02:41 -07:00
2012-04-04 17:13:43 -07:00
2012-04-10 15:30:16 -07:00
2012-03-28 14:24:40 -07:00
2012-04-30 15:30:18 -07:00
2012-05-10 23:33:01 -04:00
2012-05-10 02:22:17 +01:00
2012-03-31 16:03:16 -04:00
2012-03-24 10:41:37 -07:00
2012-03-20 21:29:32 -04:00
2012-04-03 18:36:20 -04:00
2012-04-02 14:41:27 -07:00
2012-04-05 15:30:34 -07:00
2012-04-12 12:57:08 +02:00
2012-03-19 17:56:18 -07:00
2012-04-27 10:46:45 +08:00
2012-03-28 14:08:46 -07:00
2012-03-24 10:08:39 -07:00
2012-03-21 17:55:02 -07:00
2012-03-21 17:54:59 -07:00
2012-04-03 17:47:15 -04:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-28 15:58:21 -07:00
2012-04-16 14:19:29 -04:00
2012-03-27 22:45:26 -04:00
2012-04-15 13:06:05 -04:00
2012-04-15 13:06:05 -04:00
2012-04-28 22:21:51 -04:00
2012-05-01 09:30:55 -04:00
2012-04-21 16:26:33 -04:00
2012-03-24 10:08:39 -07:00
2012-03-21 17:54:59 -07:00
2012-03-28 18:30:03 +01:00
2012-05-08 19:38:31 +02:00
2012-04-23 11:04:29 +10:00
2012-04-12 00:37:48 -06:00
2012-04-02 09:50:40 -07:00
2012-04-12 18:35:58 -07:00
2012-03-21 17:54:57 -07:00
2012-03-31 13:34:04 -07:00
2012-03-23 08:53:47 -07:00
2012-03-29 17:41:25 -05:00
2012-03-28 23:30:28 +02:00
2012-04-11 22:55:25 -03:00
2012-05-01 09:30:55 -04:00
2012-03-23 16:58:35 -07:00
2012-03-23 16:58:34 -07:00
2012-04-23 12:11:47 +01:00
2012-03-28 18:30:03 +01:00
2012-03-23 16:58:33 -07:00
2012-03-26 20:40:59 +04:00
2012-04-03 09:49:59 -07:00
2012-03-23 16:58:31 -07:00
2012-05-07 22:58:09 -04:00
2012-03-21 17:55:02 -07:00
2012-03-21 17:54:57 -07:00
2012-05-04 11:55:05 -04:00
2012-05-04 11:56:19 -04:00
2012-04-21 01:58:20 -04:00
2012-03-21 17:54:56 -07:00
2012-03-27 16:30:09 -07:00
2012-03-26 12:50:52 +10:30
2012-03-26 12:50:51 +10:30
2012-03-27 08:26:34 +01:00
2012-04-15 13:06:04 -04:00
2012-04-30 21:35:49 -04:00
2012-04-24 00:16:24 -04:00
2012-04-20 21:22:30 -04:00
2012-05-08 20:25:42 +02:00
2012-04-12 15:10:33 -04:00
2012-03-26 11:48:54 -04:00
2012-03-21 09:31:44 -04:00
2012-04-20 23:14:28 -04:00
2012-04-11 16:23:59 -04:00
2012-03-23 16:58:31 -07:00
2012-03-24 10:41:37 -07:00
2012-05-07 22:58:09 -04:00
2012-03-28 14:41:36 -07:00
2012-03-21 17:54:58 -07:00
2012-03-21 17:55:01 -07:00
2012-03-24 10:08:39 -07:00
2012-03-28 18:30:03 +01:00
2012-03-23 14:02:12 -07:00
2012-03-24 08:46:59 +01:00
2012-04-04 05:28:45 -04:00
2012-03-28 17:14:36 -07:00
2012-04-29 13:12:42 -07:00
2012-05-12 15:53:42 -04:00
2012-03-24 10:41:37 -07:00
2012-03-28 23:31:24 +02:00
2012-03-23 16:58:38 -07:00
2012-03-23 16:58:32 -07:00
2012-03-20 11:16:20 -07:00
2012-04-04 05:28:45 -04:00
2012-03-24 10:08:39 -07:00
2012-03-20 21:29:38 -04:00
2012-03-28 17:14:37 -07:00
2012-03-24 10:08:39 -07:00
2012-03-24 10:41:37 -07:00
2012-03-24 10:08:39 -07:00
2012-03-20 21:29:43 -04:00
2012-03-20 21:29:42 -04:00
2012-03-21 17:54:57 -07:00
2012-05-12 15:15:20 -04:00
2012-04-15 13:06:04 -04:00
2012-03-28 18:30:03 +01:00
2012-03-28 15:58:21 -07:00
2012-03-21 13:25:04 -07:00
2012-03-24 10:08:39 -07:00
2012-04-09 10:38:30 -07:00
2012-05-07 23:35:40 -04:00
2012-03-28 15:04:26 -07:00
2012-03-28 17:14:35 -07:00
2012-04-25 20:46:59 -04:00
2012-04-15 12:44:40 -04:00
2012-03-23 13:18:57 +01:00
2012-03-28 15:58:21 -07:00
2012-04-14 07:47:49 -07:00
2012-04-19 20:08:44 -04:00
2012-03-28 18:30:03 +01:00
2012-04-05 15:25:51 -07:00
2012-05-02 20:56:10 -04:00
2012-03-29 18:12:23 -07:00
2012-03-22 19:43:43 -07:00
2012-03-20 21:29:40 -04:00
2012-03-23 16:58:40 -07:00
2012-03-28 18:30:03 +01:00
2012-04-10 22:39:17 -06:00
2012-04-11 09:36:00 +01:00
2012-03-27 16:30:09 -07:00
2012-04-15 03:23:31 -04:00
2012-03-31 08:09:50 +05:30
2012-04-25 21:26:33 -07:00
2012-03-28 18:30:03 +01:00
2012-03-27 20:15:37 +02:00