• Eric Dumazet's avatar
    net_sched: generalize bulk dequeue · 4d202a0d
    Eric Dumazet authored
    When qdisc bulk dequeue was added in linux-3.18 (commit
    5772e9a3 "qdisc: bulk dequeue support for qdiscs
    with TCQ_F_ONETXQUEUE"), it was constrained to some
    specific qdiscs.
    
    With some extra care, we can extend this to all qdiscs,
    so that typical traffic shaping solutions can benefit from
    small batches (8 packets in this patch).
    
    For example, HTB is often used on some multi queue device.
    And bonding/team are multi queue devices...
    
    Idea is to bulk-dequeue packets mapping to the same transmit queue.
    
    This brings between 35 and 80 % performance increase in HTB setup
    under pressure on a bonding setup :
    
    1) NUMA node contention :   610,000 pps -> 1,110,000 pps
    2) No node contention   : 1,380,000 pps -> 1,930,000 pps
    
    Now we should work to add batches on the enqueue() side ;)
    Signed-off-by: 's avatarEric Dumazet <edumazet@google.com>
    Cc: John Fastabend <john.r.fastabend@intel.com>
    Cc: Jesper Dangaard Brouer <brouer@redhat.com>
    Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Cc: Florian Westphal <fw@strlen.de>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: 's avatarJesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: 's avatarDavid S. Miller <davem@davemloft.net>
    4d202a0d
sch_generic.h 20 KB