• Eric Dumazet's avatar
    net_sched: sch_fq: enable use of hrtimer slack · 583396f4
    Eric Dumazet authored
    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: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    583396f4
sch_fq.c 24.5 KB