Re: [PATCH v2 net-next RFC] Generic XDP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Apr 10, 2017 at 10:12:42PM +0200, Daniel Borkmann wrote:
> On 04/10/2017 08:39 PM, Andy Gospodarek wrote:
> [...]
> > I ran this on a desktop-class system I have (i7-6700 CPU @ 3.40GHz)
> > and used pktgen_sample03_burst_single_flow.sh from another system to
> > throw ~6.5Mpps as a single UDP stream towards the system running XDP.
> > 
> > I just commented out the ndo_xdp op in bnxt.c to test this patch.  The
> > differences were pretty dramatic.
> > 
> > Using the ndo_xdp ndo in bnxt_en, my perf report output looked like
> > this (not sure why X is still running on this system!):
> > 
> >      38.08%  swapper          [sysimgblt]                   [k] 0x0000000000005bd0
> >      11.80%  swapper          [kernel.vmlinux]              [k] intel_idle
> >      10.49%  swapper          [bnxt_en]                     [k] bnxt_rx_pkt
> >       6.31%  swapper          [bnxt_en]                     [k] bnxt_rx_xdp
> >       5.64%  swapper          [bnxt_en]                     [k] bnxt_poll
> >       4.22%  swapper          [kernel.vmlinux]              [k] poll_idle
> >       3.46%  swapper          [kernel.vmlinux]              [k] irq_entries_start
> >       2.95%  swapper          [kernel.vmlinux]              [k] napi_complete_done
> >       1.79%  swapper          [kernel.vmlinux]              [k] cpuidle_enter_state
> >       1.53%  swapper          [kernel.vmlinux]              [k] menu_select
> >       1.19%  swapper          [bnxt_en]                     [k] bnxt_reuse_rx_data
> >       1.00%  swapper          [sysimgblt]                   [k] 0x0000000000005c6f
> >       0.92%  swapper          [kernel.vmlinux]              [k] __next_timer_interrupt
> >       0.71%  swapper          [kernel.vmlinux]              [k] _raw_spin_lock_irqsave
> >       0.71%  swapper          [kernel.vmlinux]              [k] bpf_map_lookup_elem
> > 
> > mpstat reports that the CPU receiving and dropping the traffic is
> > basically running idle.  Dropping this amount of traffic in the driver
> > has very little impact on the system.
> > 
> > With v2 of this patch I see the following from perf report:
> > 
> >      19.69%  ksoftirqd/3      [kernel.vmlinux]              [k] memcpy_erms
> >      16.30%  ksoftirqd/3      [kernel.vmlinux]              [k] __bpf_prog_run
> 
> Forgot echo 1 > /proc/sys/net/core/bpf_jit_enable? Was it disabled in both cases?
> 

Good catch.  This must have been a run I did with it off.

Results with bpf_git_enable=1 and gro off, still only 7.5Mpps.

    26.34%  ksoftirqd/5      [kernel.vmlinux]              [k] memcpy_erms
    14.79%  ksoftirqd/5      [bnxt_en]                     [k] bnxt_rx_pkt
    10.11%  ksoftirqd/5      [kernel.vmlinux]              [k] __build_skb
     5.01%  ksoftirqd/5      [kernel.vmlinux]              [k] page_frag_free
     4.66%  ksoftirqd/5      [kernel.vmlinux]              [k] kmem_cache_alloc
     4.19%  ksoftirqd/5      [kernel.vmlinux]              [k] kmem_cache_free
     3.67%  ksoftirqd/5      [bnxt_en]                     [k] bnxt_poll
     2.97%  ksoftirqd/5      [kernel.vmlinux]              [k] netif_receive_skb_internal
     2.24%  ksoftirqd/5      [kernel.vmlinux]              [k] __napi_alloc_skb
     1.92%  ksoftirqd/5      [kernel.vmlinux]              [k] eth_type_trans
     1.78%  ksoftirqd/5      [bnxt_en]                     [k] bnxt_rx_xdp
     1.62%  ksoftirqd/5      [kernel.vmlinux]              [k] net_rx_action
     1.61%  ksoftirqd/5      [kernel.vmlinux]              [k] kfree_skb
     1.58%  ksoftirqd/5      [kernel.vmlinux]              [k] dev_gro_receive
     1.51%  ksoftirqd/5      [bnxt_en]                     [k] bnxt_reuse_rx_data
     1.44%  ksoftirqd/5      [kernel.vmlinux]              [k] skb_release_data
     1.42%  ksoftirqd/5      [kernel.vmlinux]              [k] page_frag_alloc
     1.29%  ksoftirqd/5      [kernel.vmlinux]              [k] napi_gro_receive
     1.21%  ksoftirqd/5      [kernel.vmlinux]              [k] skb_release_head_state
     0.82%  ksoftirqd/5      [kernel.vmlinux]              [k] skb_free_head
     0.81%  ksoftirqd/5      [kernel.vmlinux]              [k] swiotlb_sync_single
     0.77%  ksoftirqd/5      [kernel.vmlinux]              [k] skb_gro_reset_offset
     0.76%  ksoftirqd/5      [kernel.vmlinux]              [k] skb_release_all
     0.73%  ksoftirqd/5      [kernel.vmlinux]              [k] kfree_skbmem




> >      10.11%  ksoftirqd/3      [bnxt_en]                     [k] bnxt_rx_pkt
> >       7.69%  ksoftirqd/3      [kernel.vmlinux]              [k] __build_skb
> >       4.25%  ksoftirqd/3      [kernel.vmlinux]              [k] inet_gro_receive
> >       3.74%  ksoftirqd/3      [kernel.vmlinux]              [k] kmem_cache_alloc
> >       3.53%  ksoftirqd/3      [kernel.vmlinux]              [k] dev_gro_receive
> >       3.43%  ksoftirqd/3      [kernel.vmlinux]              [k] page_frag_free
> >       3.12%  ksoftirqd/3      [kernel.vmlinux]              [k] kmem_cache_free
> >       2.56%  ksoftirqd/3      [bnxt_en]                     [k] bnxt_poll
> >       2.46%  ksoftirqd/3      [kernel.vmlinux]              [k] netif_receive_skb_internal
> >       2.13%  ksoftirqd/3      [kernel.vmlinux]              [k] __udp4_lib_lookup
> >       1.63%  ksoftirqd/3      [kernel.vmlinux]              [k] __napi_alloc_skb
> >       1.51%  ksoftirqd/3      [kernel.vmlinux]              [k] eth_type_trans
> >       1.42%  ksoftirqd/3      [kernel.vmlinux]              [k] udp_gro_receive
> >       1.29%  ksoftirqd/3      [kernel.vmlinux]              [k] napi_gro_receive
> >       1.25%  ksoftirqd/3      [kernel.vmlinux]              [k] udp4_gro_receive
> >       1.18%  ksoftirqd/3      [bnxt_en]                     [k] bnxt_rx_xdp
> >       1.17%  ksoftirqd/3      [kernel.vmlinux]              [k] skb_release_data
> >       1.11%  ksoftirqd/3      [bnxt_en]                     [k] bnxt_reuse_rx_data
> >       1.07%  ksoftirqd/3      [kernel.vmlinux]              [k] net_rx_action
> 



[Index of Archives]     [Linux Networking Development]     [Fedora Linux Users]     [Linux SCTP]     [DCCP]     [Gimp]     [Yosemite Campsites]

  Powered by Linux