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-06 15:16:18 -05:00
2012-02-03 01:21:25 +01:00
2012-03-28 10:01:29 -07:00
2012-01-04 17:30:20 -02: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-03-17 12:20:44 -07:00
2012-02-15 00:19:48 -05: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-02-21 13:29:06 +01: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-03-13 11:21:23 +11: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-16 10:38:24 -04:00
2012-01-17 04:35:20 -05:00
2012-03-30 16:45:39 -07:00
2012-01-08 19:14:59 -05:00
2012-02-20 12:48:48 -08:00
2012-02-09 09:04:23 -08:00
2012-03-01 16:14:48 +01:00
2012-03-22 09:31:55 -04:00
2012-03-24 10:41:37 -07:00
2012-03-01 13:38:49 +01:00
2012-03-07 17:06:08 +11:00
2012-03-16 10:38:24 -04: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-04 17:54:34 -05:00
2012-03-23 16:58:34 -07:00
2012-03-30 12:33:28 +02:00
2012-03-04 17:54:35 -05:00
2012-03-16 10:38:24 -04:00
2012-01-14 18:36:33 -08:00
2012-03-24 10:41:37 -07:00
2012-03-21 17:55:01 -07:00
2012-01-23 16:06:37 -05:00
2012-03-16 20:35:02 +00:00
2012-03-16 20:35:02 +00:00
2012-03-16 20:35:01 +00:00
2012-02-01 18:37:39 -08: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-01-10 16:30:42 -08:00
2012-03-23 16:58:36 -07:00
2012-02-28 16:02:54 +01:00
2012-01-03 22:54:57 -05:00
2012-02-02 15:30:47 -08:00
2012-01-13 09:32:20 +10:30
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-16 10:38:24 -04:00
2012-03-23 16:58:38 -07:00
2012-01-05 18:52:59 -05: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-17 21:51:34 +01:00
2012-03-21 18:55:10 -07:00
2012-02-20 19:46:36 +11:00
2012-01-04 08:56:31 -06: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-02-22 18:15:39 +05:30
2012-01-24 12:48:54 -08:00
2012-03-28 14:24:40 -07:00
2012-04-30 15:30:18 -07:00
2012-02-08 09:19:42 +01:00
2012-03-04 17:54:34 -05:00
2012-03-08 11:53:13 -08:00
2012-05-10 23:33:01 -04:00
2012-05-10 02:22:17 +01:00
2012-01-12 20:13:04 -08:00
2012-03-31 16:03:16 -04:00
2012-03-24 10:41:37 -07:00
2012-02-19 10:30:57 -08:00
2012-03-20 21:29:32 -04:00
2012-04-03 18:36:20 -04:00
2012-03-18 22:15:39 +01:00
2012-04-02 14:41:27 -07:00
2012-01-29 20:35:52 +01:00
2012-04-05 15:30:34 -07:00
2012-03-04 17:54:34 -05:00
2012-03-14 08:47:58 -04:00
2012-02-21 11:08:30 -05:00
2012-04-12 12:57:08 +02:00
2012-03-02 10:38:33 +01:00
2012-01-10 16:30:43 -08:00
2012-02-28 17:10:21 +00: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-01-09 11:24:59 +01: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-03-16 10:38:24 -04:00
2012-03-16 10:38:24 -04:00
2012-03-16 10:38:24 -04: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-04 17:54:34 -05: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-03-04 20:41:38 -05: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-02-24 01:37:35 -08:00
2012-02-08 15:52:45 -05:00
2012-02-08 15:52:45 -05:00
2012-01-11 12:56:06 -08:00
2012-03-16 23:00:20 -07:00
2012-03-21 17:54:59 -07:00
2012-01-13 09:32:18 +10:30
2012-03-09 10:56:35 -08:00
2012-03-28 18:30:03 +01:00
2012-03-04 17:54:34 -05:00
2012-02-15 09:45:53 +01:00
2012-01-09 13:06:28 +01:00
2012-02-14 08:44:55 -08:00
2012-05-08 19:38:31 +02:00
2012-01-03 22:55:17 -05:00
2012-03-16 10:38:24 -04:00
2012-03-16 10:38:24 -04:00
2012-02-13 00:46:41 -05:00
2012-04-23 11:04:29 +10:00
2012-04-12 00:37:48 -06:00
2012-01-03 22:54:55 -05:00
2012-03-04 20:41:38 -05:00
2012-02-14 13:45:56 -02:00
2012-03-13 22:45:38 -04:00
2012-01-09 13:52:09 +01:00
2012-03-13 22:45:25 -04:00
2012-02-28 20:01:08 +01:00
2012-03-16 10:38:24 -04:00
2012-03-08 10:50:35 -08: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-01-23 08:38:48 -08:00
2012-03-23 08:53:47 -07:00
2012-03-08 10:50:35 -08:00
2012-03-29 17:41:25 -05:00
2012-03-28 23:30:28 +02:00
2012-03-05 15:49:42 -08:00
2012-03-04 17:54:34 -05:00
2012-01-17 15:40:51 -08:00
2012-04-11 22:55:25 -03:00
2012-03-08 14:11:36 +02: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-01-10 16:30:49 -08:00
2012-04-23 12:11:47 +01:00
2012-01-12 20:13:03 -08: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-03-16 10:38:24 -04:00
2012-03-15 21:41:34 +01:00
2012-05-07 22:58:09 -04:00
2012-03-03 15:04:45 -05:00
2012-03-21 17:55:02 -07:00
2012-03-04 17:54:34 -05:00
2012-01-10 16:30:45 -08:00
2012-01-23 08:38:47 -08:00
2012-03-21 17:54:57 -07:00
2012-01-13 10:12:23 -08:00
2012-05-04 11:55:05 -04:00
2012-05-04 11:56:19 -04:00
2012-01-12 20:13:10 -08:00
2012-01-12 20:13:03 -08:00
2012-04-21 01:58:20 -04:00
2012-03-21 17:54:56 -07:00
2012-01-03 22:57:13 -05: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-01-03 22:57:12 -05:00
2012-02-02 00:23:14 +11:00
2012-01-06 12:10:25 -08:00
2012-03-27 08:26:34 +01:00
2012-04-15 13:06:04 -04:00
2012-02-21 15:03:48 -05:00
2012-02-24 01:42:07 -08: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-01-31 18:20:28 -05:00
2012-03-02 17:18:10 -05:00
2012-03-21 09:31:44 -04:00
2012-03-05 15:26:47 -05:00
2012-02-16 14:55:27 -05:00
2012-03-17 11:09:33 -04:00
2012-04-20 23:14:28 -04:00
2012-01-31 18:20:25 -05:00
2012-03-04 17:54:34 -05:00
2012-04-11 16:23:59 -04:00
2012-03-23 16:58:31 -07:00
2012-02-16 06:11:23 -07:00
2012-03-24 10:41:37 -07:00
2012-02-05 23:08:30 -07:00
2012-02-26 16:48:06 -07:00
2012-05-07 22:58:09 -04:00
2012-03-15 23:28:19 +08:00
2012-03-05 08:09:09 -07:00
2012-03-28 14:41:36 -07:00
2012-02-23 09:39:23 +02:00
2012-03-21 17:54:58 -07:00
2012-03-16 10:38:24 -04:00
2012-03-14 17:25:56 +08:00
2012-03-21 17:55:01 -07:00
2012-01-10 16:30:42 -08:00
2012-03-24 10:08:39 -07:00
2012-01-12 20:13:10 -08:00
2012-03-28 18:30:03 +01:00
2012-03-04 20:54:01 -05:00
2012-02-23 12:05:21 -08:00
2012-01-06 12:10:26 -08:00
2012-03-23 14:02:12 -07:00
2012-03-04 09:34:15 -08: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-01-08 13:10:57 -08:00
2012-03-24 10:41:37 -07:00
2012-03-28 23:31:24 +02:00
2012-03-04 23:08:46 +01:00
2012-03-16 21:49:24 +01:00
2012-03-23 16:58:38 -07:00
2012-03-04 17:54:34 -05:00
2012-03-16 10:38:24 -04:00
2012-03-04 20:41:38 -05:00
2012-03-04 20:41:38 -05:00
2012-03-04 20:41:38 -05:00
2012-03-23 16:58:32 -07:00
2012-03-01 10:28:04 +01:00
2012-03-20 11:16:20 -07:00
2012-01-10 16:30:54 -08:00
2012-02-01 16:53:46 +08: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-01-12 13:09:09 +01:00
2012-03-28 17:14:37 -07:00
2012-01-03 22:55:07 -05:00
2012-03-24 10:08:39 -07:00
2012-02-21 09:03:41 -08:00
2012-02-21 09:06:08 -08: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-04 17:54:34 -05:00
2012-03-06 19:14:37 +02:00
2012-01-22 15:08:46 -05:00
2012-03-16 10:38:24 -04:00
2012-02-22 15:50:28 -05:00
2012-03-16 10:38:24 -04:00
2012-03-21 17:54:57 -07:00
2012-05-12 15:15:20 -04:00
2012-02-08 22:53:58 +02:00
2012-03-15 18:23:10 -07:00
2012-04-15 13:06:04 -04:00
2012-03-28 18:30:03 +01:00
2012-01-06 06:13:35 +04:00
2012-03-07 11:32:21 +00:00
2012-03-04 17:54:34 -05: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-03-16 10:38:24 -04:00
2012-03-08 11:38:50 -08:00
2012-03-12 22:19:13 +01:00
2012-02-01 22:23:53 +05:30
2012-02-16 17:08:09 -05:00
2012-01-25 20:37:48 -06:00
2012-01-09 09:33:57 +09:00
2012-01-23 08:38:48 -08:00
2012-01-10 16:30:54 -08:00
2012-02-24 11:42:50 -08:00
2012-05-07 23:35:40 -04:00
2012-01-09 14:19:33 -08:00
2012-03-06 11:01:33 +02:00
2012-03-28 15:04:26 -07:00
2012-03-28 17:14:35 -07:00
2012-03-19 16:53:08 -04: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-02-21 09:06:09 -08:00
2012-02-24 10:05:59 +01: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-02-10 10:44:35 -08:00
2012-02-17 23:36:23 +01:00
2012-04-05 15:25:51 -07:00
2012-03-04 17:54:34 -05:00
2012-02-10 11:42:25 -08:00
2012-03-04 17:54:34 -05:00
2012-01-24 16:40:30 -08:00
2012-01-03 22:54:56 -05:00
2012-02-20 12:48:47 -08:00
2012-03-13 14:06:33 -04:00
2012-05-02 20:56:10 -04:00
2012-01-23 03:15:25 -05: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-02-24 10:05:59 +01:00
2012-03-04 17:54:34 -05:00
2012-03-08 11:38:51 -08:00
2012-03-28 18:30:03 +01:00
2012-04-10 22:39:17 -06:00
2012-01-04 22:19:55 -08:00
2012-03-13 14:24:07 -07:00
2012-04-11 09:36:00 +01:00
2012-03-19 15:33:24 -03:00
2012-03-04 17:54:34 -05:00
2012-03-27 16:30:09 -07:00
2012-04-15 03:23:31 -04:00
2012-01-12 15:44:42 +10:30
2012-02-19 09:50:20 -06:00
2012-03-31 08:09:50 +05:30
2012-04-25 21:26:33 -07:00
2012-03-08 10:50:35 -08:00
2012-03-28 18:30:03 +01:00
2012-03-27 20:15:37 +02:00
2012-03-02 10:51:00 +01:00
2012-03-07 16:08:46 +01:00