Eric Dumazet
1c0d32fde5
net_sched: gen_estimator: complete rewrite of rate estimators
...
1) Old code was hard to maintain, due to complex lock chains.
(We probably will be able to remove some kfree_rcu() in callers)
2) Using a single timer to update all estimators does not scale.
3) Code was buggy on 32bit kernel (WRITE_ONCE() on 64bit quantity
is not supposed to work well)
In this rewrite :
- I removed the RB tree that had to be scanned in
gen_estimator_active(). qdisc dumps should be much faster.
- Each estimator has its own timer.
- Estimations are maintained in net_rate_estimator structure,
instead of dirtying the qdisc. Minor, but part of the simplification.
- Reading the estimator uses RCU and a seqcount to provide proper
support for 32bit kernels.
- We reduce memory need when estimators are not used, since
we store a pointer, instead of the bytes/packets counters.
- xt_rateest_mt() no longer has to grab a spinlock.
(In the future, xt_rateest_tg() could be switched to per cpu counters)
Signed-off-by: Eric Dumazet <edumazet@google.com >
Signed-off-by: David S. Miller <davem@davemloft.net >
2016-12-05 15:21:59 -05:00
..
2016-11-18 10:59:15 -05:00
2016-11-18 10:59:15 -05:00
2016-11-03 11:53:00 +01:00
2016-11-01 20:50:31 +01:00
2016-11-01 20:50:31 +01:00
2015-03-18 10:51:35 +01:00
2015-02-22 15:59:54 -05:00
2016-11-15 10:54:36 -05:00
2016-08-30 11:43:08 +02:00
2016-08-09 10:38:46 +02:00
2016-07-11 11:47:50 +02:00
2016-09-07 10:38:00 +02:00
2016-07-11 12:32:45 +02:00
2016-09-24 21:29:53 +02:00
2016-11-08 23:53:37 +01:00
2016-07-21 02:31:53 +02:00
2014-11-05 14:10:33 -05:00
2016-07-22 17:05:10 +02:00
2016-09-12 19:59:39 +02:00
2016-08-30 11:43:09 +02:00
2016-11-18 10:59:15 -05:00
2016-08-13 13:27:13 +02:00
2016-11-18 10:59:15 -05:00
2016-11-18 10:59:15 -05:00
2016-08-13 13:27:13 +02:00
2016-08-13 13:27:13 +02:00
2016-11-18 10:59:15 -05:00
2016-11-09 23:49:25 +01:00
2016-07-21 02:31:53 +02:00
2016-09-25 14:54:01 +02:00
2016-10-27 18:27:59 +02:00
2016-09-25 14:54:08 +02:00
2016-07-21 02:31:53 +02:00
2015-12-14 12:48:58 +01:00
2016-11-03 11:52:34 +01:00
2016-11-03 11:52:59 +01:00
2016-11-01 20:50:30 +01:00
2016-11-01 20:50:30 +01:00
2016-10-04 08:41:06 +02:00
2016-11-24 14:43:34 +01:00
2015-08-17 21:33:06 -07:00
2015-08-17 21:33:06 -07:00
2015-08-17 21:33:06 -07:00
2015-08-17 21:33:06 -07:00
2015-10-27 06:54:56 +01:00
2014-10-14 02:18:24 +02:00
2016-11-03 11:52:59 +01:00
2014-08-08 16:47:23 +02:00
2016-11-18 10:59:15 -05:00
2016-11-24 14:43:34 +01:00
2016-11-09 23:42:23 +01:00
2016-09-12 19:54:45 +02:00
2016-09-12 19:54:45 +02:00
2016-11-03 11:52:34 +01:00
2016-08-25 13:11:00 +02:00
2016-09-24 21:29:53 +02:00
2016-08-25 13:11:30 +02:00
2016-11-18 10:59:15 -05:00
2016-11-18 10:59:15 -05:00
2016-02-23 00:09:14 -05:00
2016-11-09 23:42:23 +01:00
2016-11-09 23:42:23 +01:00
2016-11-09 23:42:23 +01:00
2016-07-23 12:25:00 +02:00
2016-04-23 20:13:24 -04:00
2016-10-26 16:35:16 +02:00
2016-01-03 21:04:23 +01:00
2016-11-15 10:54:36 -05:00
2016-10-17 17:43:54 +02:00
2016-11-03 11:52:34 +01:00
2016-11-03 11:52:34 +01:00
2016-01-04 17:48:38 +01:00
2016-12-03 12:29:53 -05:00
2016-11-09 23:42:23 +01:00
2016-10-04 08:59:03 +02:00
2016-11-03 11:52:34 +01:00
2016-11-09 23:42:23 +01:00
2016-03-02 20:05:27 +01:00
2016-11-03 11:52:34 +01:00
2015-04-13 17:17:29 +02:00
2016-10-26 16:35:16 +02:00
2016-11-09 23:42:23 +01:00
2016-11-03 11:52:34 +01:00
2016-09-07 11:02:06 +02:00
2016-12-03 12:29:53 -05:00
2015-04-13 17:17:28 +02:00
2016-11-03 11:52:34 +01:00
2016-08-25 12:55:34 +02:00
2016-11-03 11:52:34 +01:00
2016-10-27 18:22:02 +02:00
2016-10-27 18:20:45 +02:00
2016-11-13 22:26:13 +01:00
2016-11-03 10:56:21 +01:00
2016-11-03 10:56:21 +01:00
2014-08-02 15:03:58 -07:00
2015-12-14 20:34:55 +01:00
2016-11-03 10:56:21 +01:00
2014-09-10 12:40:10 -07:00
2016-07-22 17:05:10 +02:00
2016-11-03 10:56:21 +01:00
2016-11-08 23:53:36 +01:00
2016-11-03 10:56:21 +01:00
2015-12-14 12:48:58 +01:00
2016-11-03 10:56:21 +01:00
2016-11-03 10:56:21 +01:00
2014-11-13 12:14:42 +01:00
2016-11-18 10:59:15 -05:00
2016-09-24 21:29:53 +02:00
2014-08-23 12:21:21 -07:00
2016-04-29 14:28:48 +02:00
2016-10-17 17:38:19 +02:00
2016-11-03 10:56:21 +01:00
2014-08-05 18:46:26 -07:00
2016-11-03 10:56:21 +01:00
2015-05-14 13:00:27 +02:00
2016-10-26 16:35:15 +02:00
2016-11-03 10:56:21 +01:00
2016-11-03 10:56:21 +01:00
2016-11-03 10:56:21 +01:00
2016-11-03 10:56:21 +01:00
2016-11-03 10:56:21 +01:00
2016-11-03 10:56:21 +01:00
2016-08-12 00:42:14 +02:00
2016-11-03 10:56:21 +01:00
2016-11-03 10:56:21 +01:00
2016-12-05 15:21:59 -05:00
2016-12-05 15:21:59 -05:00
2016-11-18 10:59:15 -05:00
2016-11-03 10:56:21 +01:00
2016-09-22 03:13:26 -04:00
2016-11-10 13:28:42 +01:00
2016-11-03 10:56:21 +01:00
2015-02-22 15:59:54 -05:00
2016-11-03 10:56:21 +01:00
2015-08-17 21:33:06 -07:00
2016-07-03 10:55:07 +02:00
2016-11-03 10:56:21 +01:00
2016-11-03 10:56:21 +01:00
2016-06-23 13:26:49 +02:00