• Matteo Croce's avatar
    mvneta: recycle buffers · e4017570
    Matteo Croce authored
    Use the new recycling API for page_pool.
    In a drop rate test, the packet rate increased by 10%,
    from 296 Kpps to 326 Kpps.
    
    perf top on a stock system shows:
    
    Overhead  Shared Object     Symbol
      23.66%  [kernel]          [k] __pi___inval_dcache_area
      22.85%  [mvneta]          [k] mvneta_rx_swbm
       7.54%  [kernel]          [k] kmem_cache_alloc
       6.49%  [kernel]          [k] eth_type_trans
       3.94%  [kernel]          [k] dev_gro_receive
       3.91%  [kernel]          [k] __netif_receive_skb_core
       3.91%  [kernel]          [k] kmem_cache_free
       3.76%  [kernel]          [k] page_pool_release_page
       3.56%  [kernel]          [k] free_unref_page
       2.40%  [kernel]          [k] build_skb
       1.49%  [kernel]          [k] skb_release_data
       1.45%  [kernel]          [k] __alloc_pages_bulk
       1.30%  [kernel]          [k] page_frag_free
    
    And this is the same output with recycling enabled:
    
    Overhead  Shared Object     Symbol
      26.41%  [kernel]          [k] __pi___inval_dcache_area
      25.00%  [mvneta]          [k] mvneta_rx_swbm
       8.14%  [kernel]          [k] kmem_cache_alloc
       6.84%  [kernel]          [k] eth_type_trans
       4.44%  [kernel]          [k] __netif_receive_skb_core
       4.38%  [kernel]          [k] kmem_cache_free
       4.16%  [kernel]          [k] dev_gro_receive
       3.21%  [kernel]          [k] page_pool_put_page
       2.41%  [kernel]          [k] build_skb
       1.82%  [kernel]          [k] skb_release_data
       1.61%  [kernel]          [k] napi_gro_receive
       1.25%  [kernel]          [k] page_pool_refill_alloc_cache
       1.16%  [kernel]          [k] __netif_receive_skb_list_core
    
    We can see that page_pool_release_page(), free_unref_page() and
    __alloc_pages_bulk() are no longer on top of the list when receiving
    traffic.
    
    The test was done with mausezahn on the TX side with 64 byte raw
    ethernet frames.
    Signed-off-by: default avatarMatteo Croce <mcroce@microsoft.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e4017570
mvneta.c 150 KB