lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170410214131.GE4730@C02RW35GFVH8.dhcp.broadcom.net>
Date:   Mon, 10 Apr 2017 17:41:31 -0400
From:   Andy Gospodarek <andy@...yhouse.net>
To:     Daniel Borkmann <daniel@...earbox.net>
Cc:     David Miller <davem@...emloft.net>, netdev@...r.kernel.org,
        xdp-newbies@...r.kernel.org
Subject: Re: [PATCH v2 net-next RFC] Generic XDP

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
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ