Eric Dumazet
583396f4ca
net_sched: sch_fq: enable use of hrtimer slack
Add a new attribute to control the fq qdisc hrtimer slack.
Default is set to 10 usec.
When/if packets are throttled, fq set up an hrtimer that can
lead to one interrupt per packet in the throttled queue.
By using a timer slack, we allow better use of timer interrupts,
by giving them a chance to call multiple timer callbacks
at each hardware interrupt.
Also, giving a slack allows FQ to dequeue batches of packets
instead of a single one, thus increasing xmit_more efficiency.
This has no negative effect on the rate a TCP flow can sustain,
since each TCP flow maintains its own precise vtime (tp->tcp_wstamp_ns)
v2: added strict netlink checking (as feedback from Jakub Kicinski)
Tested:
1000 concurrent flows all using paced packets.
1,000,000 packets sent per second.
Before the patch :
$ vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 60726784 23628 3485992 0 0 138 1 977 535 0 12 87 0 0
0 0 0 60714700 23628 3485628 0 0 0 0 1568827 26462 0 22 78 0 0
1 0 0 60716012 23628 3485656 0 0 0 0 1570034 26216 0 22 78 0 0
0 0 0 60722420 23628 3485492 0 0 0 0 1567230 26424 0 22 78 0 0
0 0 0 60727484 23628 3485556 0 0 0 0 1568220 26200 0 22 78 0 0
2 0 0 60718900 23628 3485380 0 0 0 40 1564721 26630 0 22 78 0 0
2 0 0 60718096 23628 3485332 0 0 0 0 1562593 26432 0 22 78 0 0
0 0 0 60719608 23628 3485064 0 0 0 0 1563806 26238 0 22 78 0 0
1 0 0 60722876 23628 3485236 0 0 0 130 1565874 26566 0 22 78 0 0
1 0 0 60722752 23628 3484908 0 0 0 0 1567646 26247 0 22 78 0 0
After the patch, slack of 10 usec, we can see a reduction of interrupts
per second, and a small decrease of reported cpu usage.
$ vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 60722564 23628 3484728 0 0 133 1 696 545 0 13 87 0 0
1 0 0 60722568 23628 3484824 0 0 0 0 977278 25469 0 20 80 0 0
0 0 0 60716396 23628 3484764 0 0 0 0 979997 25326 0 20 80 0 0
0 0 0 60713844 23628 3484960 0 0 0 0 981394 25249 0 20 80 0 0
2 0 0 60720468 23628 3484916 0 0 0 0 982860 25062 0 20 80 0 0
1 0 0 60721236 23628 3484856 0 0 0 0 982867 25100 0 20 80 0 0
1 0 0 60722400 23628 3484456 0 0 0 8 982698 25303 0 20 80 0 0
0 0 0 60715396 23628 3484428 0 0 0 0 981777 25176 0 20 80 0 0
0 0 0 60716520 23628 3486544 0 0 0 36 978965 27857 0 21 79 0 0
0 0 0 60719592 23628 3486516 0 0 0 22 977318 25106 0 20 80 0 0
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-03-17 21:16:35 -07:00
..
2019-07-06 12:50:01 +02:00
2019-09-27 15:10:34 -07:00
2020-02-24 13:02:53 -08:00
2020-02-17 14:30:54 -08:00
2019-09-24 16:37:18 +02:00
2020-02-04 03:05:26 +00:00
2020-01-09 18:41:40 -08:00
2020-03-12 22:34:48 -07:00
2020-01-26 10:34:17 +02:00
2020-03-04 13:41:06 -08:00
2020-02-04 01:53:07 +09:00
2020-02-24 11:11:19 -08:00
2020-03-11 22:55:25 -07:00
2019-12-08 11:52:02 +01:00
2020-02-08 13:26:41 -08:00
2020-03-17 20:56:58 -07:00
2020-02-29 15:53:35 -08:00
2020-01-09 18:41:40 -08:00
2019-07-10 18:43:43 -07:00
2020-03-17 21:12:39 -07:00
2020-01-27 11:09:31 +01:00
2020-03-17 20:56:58 -07:00
2020-03-05 11:59:47 -08:00
2020-03-03 13:28:48 -08:00
2019-09-26 08:56:17 +02:00
2020-03-16 18:26:55 -07:00
2020-03-12 22:34:48 -07:00
2019-12-09 10:36:44 -08:00
2020-03-16 17:14:02 -07:00
2019-07-08 19:48:57 -07:00
2020-02-28 12:08:37 -08:00
2019-06-23 13:24:17 -07:00
2019-06-17 20:20:36 -07:00
2020-02-26 20:38:13 -08:00
2020-03-12 22:34:48 -07:00
2020-02-28 12:08:37 -08:00
2020-03-15 00:19:03 -07:00
2020-01-09 18:36:22 -08:00
2020-03-12 22:34:48 -07:00
2020-02-18 12:44:23 -08:00
2020-03-12 22:34:48 -07:00
2020-02-24 13:26:49 -08:00
2020-03-12 22:34:48 -07:00
2019-06-19 17:09:55 +02:00
2020-03-12 22:34:48 -07:00
2020-03-11 23:12:16 -07:00
2020-01-03 12:25:50 -08:00
2019-11-26 14:40:13 -08:00
2020-03-03 17:52:21 -08:00
2020-02-16 18:37:09 -08:00
2019-12-16 10:15:49 +01:00
2020-01-26 10:40:21 +01:00
2020-02-07 11:20:57 +01:00
2020-03-17 21:16:35 -07:00
2020-03-12 22:34:48 -07:00
2020-03-12 22:34:48 -07:00
2019-06-22 08:59:24 -04:00
2020-02-13 15:35:33 -05:00
2020-02-26 20:58:33 -08:00
2020-03-15 00:07:00 -07:00
2020-02-21 15:22:45 -08:00
2020-02-28 12:12:53 -08:00
2020-02-27 18:31:39 -08:00
2019-08-10 15:25:47 -07:00
2020-03-12 22:34:48 -07:00
2020-02-16 18:59:42 -08:00
2020-02-28 12:08:37 -08:00
2020-02-28 12:12:53 -08:00
2019-11-15 14:38:29 +01:00
2020-02-20 15:02:02 -08:00
2020-01-24 13:44:07 +01:00
2020-01-08 15:02:21 -08:00