Files
linux/include/uapi/linux
Eric Dumazet 9d18562a22 fq_codel: add batch ability to fq_codel_drop()
In presence of inelastic flows and stress, we can call
fq_codel_drop() for every packet entering fq_codel qdisc.

fq_codel_drop() is quite expensive, as it does a linear scan
of 4 KB of memory to find a fat flow.
Once found, it drops the oldest packet of this flow.

Instead of dropping a single packet, try to drop 50% of the backlog
of this fat flow, with a configurable limit of 64 packets per round.

TCA_FQ_CODEL_DROP_BATCH_SIZE is the new attribute to make this
limit configurable.

With this strategy the 4 KB search is amortized to a single cache line
per drop [1], so fq_codel_drop() no longer appears at the top of kernel
profile in presence of few inelastic flows.

[1] Assuming a 64byte cache line, and 1024 buckets

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Dave Taht <dave.taht@gmail.com>
Cc: Jonathan Morton <chromatix99@gmail.com>
Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
Acked-by: Dave Taht
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-05-03 12:47:09 -04:00
..
2014-10-20 10:30:15 +08:00
2015-10-13 17:42:34 +02:00
2014-09-23 23:15:46 -07:00
2016-01-30 16:27:17 +00:00
2015-04-21 16:16:02 -04:00
2015-10-05 03:16:46 -07:00
2016-03-15 16:55:16 -07:00
2013-04-26 16:08:16 +10:00
2014-07-01 10:48:05 -06:00
2014-03-20 14:55:18 +01:00
2015-08-25 14:41:50 -05:00
2014-11-19 14:48:02 -06:00
2012-10-16 18:49:15 -07:00
2016-03-22 15:45:44 -04:00
2016-01-20 17:09:18 -08:00
2014-08-08 15:57:31 -07:00
2015-04-12 21:25:13 -04:00
2015-12-14 12:19:37 -06:00
2016-03-10 16:02:52 +07:00
2013-12-11 12:57:55 -08:00
2016-04-15 17:06:48 -04:00
2013-08-13 15:10:22 -07:00
2016-03-18 19:40:27 -04:00
2015-05-25 13:25:35 -04:00
2016-04-11 21:33:44 -04:00
2014-12-02 13:52:53 -07:00
2016-03-22 15:36:02 -07:00
2015-02-17 14:34:51 -08:00
2016-04-25 15:09:10 -04:00
2016-01-12 08:21:18 -07:00
2015-08-03 17:30:00 -07:00
2014-08-08 15:57:31 -07:00
2015-07-21 10:39:05 -07:00
2015-11-23 15:06:38 -05:00
2015-01-20 13:51:06 +01:00
2014-12-13 12:42:52 -08:00
2015-05-05 13:40:44 -06:00
2015-08-27 19:44:53 -04:00
2015-04-23 15:16:14 -04:00
2015-07-20 14:58:46 -04:00
2016-04-25 15:09:11 -04:00
2012-11-16 10:15:35 -08:00
2015-09-04 16:54:41 -07:00
2016-04-26 12:00:48 -04:00
2016-04-04 22:11:20 -04:00
2014-12-10 17:41:10 -08:00
2014-12-09 14:10:41 +08:00
2013-03-22 16:19:59 -07:00
2015-03-05 22:08:42 -05:00
2014-04-26 12:13:24 -04:00
2015-05-24 12:49:16 -07:00
2015-06-11 23:37:37 +02:00
2015-12-18 17:48:51 -08:00
2015-10-27 18:55:31 -07:00
2016-03-11 02:18:53 +02:00
2015-03-29 12:13:52 +10:30
2014-12-09 12:05:24 +02:00
2016-04-23 20:13:25 -04:00