• Brenden Blanco's avatar
    Add sample for adding simple drop program to link · 86af8b41
    Brenden Blanco authored
    Add a sample program that only drops packets at the BPF_PROG_TYPE_XDP_RX
    hook of a link. With the drop-only program, observed single core rate is
    ~20Mpps.
    
    Other tests were run, for instance without the dropcnt increment or
    without reading from the packet header, the packet rate was mostly
    unchanged.
    
    $ perf record -a samples/bpf/xdp1 $(</sys/class/net/eth0/ifindex)
    proto 17:   20403027 drops/s
    
    ./pktgen_sample03_burst_single_flow.sh -i $DEV -d $IP -m $MAC -t 4
    Running... ctrl^C to stop
    Device: eth4@0
    Result: OK: 11791017(c11788327+d2689) usec, 59622913 (60byte,0frags)
      5056638pps 2427Mb/sec (2427186240bps) errors: 0
    Device: eth4@1
    Result: OK: 11791012(c11787906+d3106) usec, 60526944 (60byte,0frags)
      5133311pps 2463Mb/sec (2463989280bps) errors: 0
    Device: eth4@2
    Result: OK: 11791019(c11788249+d2769) usec, 59868091 (60byte,0frags)
      5077431pps 2437Mb/sec (2437166880bps) errors: 0
    Device: eth4@3
    Result: OK: 11795039(c11792403+d2636) usec, 59483181 (60byte,0frags)
      5043067pps 2420Mb/sec (2420672160bps) errors: 0
    
    perf report --no-children:
     26.05%  ksoftirqd/0  [mlx4_en]         [k] mlx4_en_process_rx_cq
     17.84%  ksoftirqd/0  [mlx4_en]         [k] mlx4_en_alloc_frags
      5.52%  ksoftirqd/0  [mlx4_en]         [k] mlx4_en_free_frag
      4.90%  swapper      [kernel.vmlinux]  [k] poll_idle
      4.14%  ksoftirqd/0  [kernel.vmlinux]  [k] get_page_from_freelist
      2.78%  ksoftirqd/0  [kernel.vmlinux]  [k] __free_pages_ok
      2.57%  ksoftirqd/0  [kernel.vmlinux]  [k] bpf_map_lookup_elem
      2.51%  swapper      [mlx4_en]         [k] mlx4_en_process_rx_cq
      1.94%  ksoftirqd/0  [kernel.vmlinux]  [k] percpu_array_map_lookup_elem
      1.45%  swapper      [mlx4_en]         [k] mlx4_en_alloc_frags
      1.35%  ksoftirqd/0  [kernel.vmlinux]  [k] free_one_page
      1.33%  swapper      [kernel.vmlinux]  [k] intel_idle
      1.04%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c5c5
      0.96%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c58d
      0.93%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c6ee
      0.92%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c6b9
      0.89%  ksoftirqd/0  [kernel.vmlinux]  [k] __alloc_pages_nodemask
      0.83%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c686
      0.83%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c5d5
      0.78%  ksoftirqd/0  [mlx4_en]         [k] mlx4_alloc_pages.isra.23
      0.77%  ksoftirqd/0  [mlx4_en]         [k] 0x000000000001c5b4
      0.77%  ksoftirqd/0  [kernel.vmlinux]  [k] net_rx_action
    
    machine specs:
     receiver - Intel E5-1630 v3 @ 3.70GHz
     sender - Intel E5645 @ 2.40GHz
     Mellanox ConnectX-3 @40G
    Signed-off-by: 's avatarBrenden Blanco <bblanco@plumgrid.com>
    Acked-by: 's avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: 's avatarDavid S. Miller <davem@davemloft.net>
    86af8b41