On 10/09/18 17:46, Eric Dumazet wrote: > > > On 10/09/2018 03:48 PM, Florian Fainelli wrote: >> This is based on Stephen's v4.14 patches, with the necessary merge >> conflicts, and the lack of timer_setup() on the 4.9 baseline. >> >> Perf results on a gigabit capable system, before and after are below. >> >> Series can also be found here: >> >> https://github.com/ffainelli/linux/commits/fragment-stack-v4.9 >> >> >> PerfTop: 457 irqs/sec kernel:74.4% exact: 0.0% [4000Hz cycles], (all, 4 CPUs) >> ------------------------------------------------------------------------------- >> >> 29.62% [kernel] [k] ip_defrag >> 6.57% [kernel] [k] arch_cpu_idle >> 1.72% [kernel] [k] v7_dma_inv_range >> 1.68% [kernel] [k] __netif_receive_skb_core >> 1.43% [kernel] [k] fib_table_lookup >> 1.30% [kernel] [k] finish_task_switch >> 1.08% [kernel] [k] ip_rcv >> 1.01% [kernel] [k] skb_release_data >> 0.99% [kernel] [k] __slab_free >> 0.96% [kernel] [k] bcm_sysport_poll >> 0.88% [kernel] [k] __netdev_alloc_skb >> 0.87% [kernel] [k] tick_nohz_idle_enter >> 0.86% [kernel] [k] dev_gro_receive >> 0.85% [kernel] [k] _raw_spin_unlock_irqrestore >> 0.84% [kernel] [k] __memzero >> 0.74% [kernel] [k] tick_nohz_idle_exit >> 0.73% ld-2.24.so [.] do_lookup_x >> 0.66% [kernel] [k] kmem_cache_free >> 0.66% [kernel] [k] bcm_sysport_rx_refill >> 0.65% [kernel] [k] eth_type_trans >> >> >> After patching: >> >> PerfTop: 170 irqs/sec kernel:86.5% exact: 0.0% [4000Hz cycles], (all, 4 CPUs) >> ------------------------------------------------------------------------------- >> >> 7.79% [kernel] [k] arch_cpu_idle >> 5.14% [kernel] [k] v7_dma_inv_range >> 4.20% [kernel] [k] ip_defrag >> 3.89% [kernel] [k] __netif_receive_skb_core >> 3.65% [kernel] [k] fib_table_lookup >> 2.16% [kernel] [k] finish_task_switch >> 1.93% [kernel] [k] _raw_spin_unlock_irqrestore >> 1.90% [kernel] [k] ip_rcv >> 1.84% [kernel] [k] bcm_sysport_poll >> 1.83% [kernel] [k] __memzero >> 1.65% [kernel] [k] __netdev_alloc_skb >> 1.60% [kernel] [k] __slab_free >> 1.49% [kernel] [k] __do_softirq >> 1.49% [kernel] [k] bcm_sysport_rx_refill >> 1.31% [kernel] [k] dma_cache_maint_page >> 1.25% [kernel] [k] tick_nohz_idle_enter >> 1.24% [kernel] [k] ip_route_input_noref >> 1.17% [kernel] [k] eth_type_trans >> 1.06% [kernel] [k] fib_validate_source >> 1.03% [kernel] [k] inet_frag_find >> >> Dan Carpenter (1): >> ipv4: frags: precedence bug in ip_expire() >> >> Eric Dumazet (22): >> inet: frags: change inet_frags_init_net() return value >> inet: frags: add a pointer to struct netns_frags >> inet: frags: refactor ipfrag_init() >> inet: frags: refactor ipv6_frag_init() >> inet: frags: refactor lowpan_net_frag_init() >> ipv6: export ip6 fragments sysctl to unprivileged users >> rhashtable: add schedule points >> inet: frags: use rhashtables for reassembly units >> inet: frags: remove some helpers >> inet: frags: get rif of inet_frag_evicting() >> inet: frags: remove inet_frag_maybe_warn_overflow() >> inet: frags: break the 2GB limit for frags storage >> inet: frags: do not clone skb in ip_expire() >> ipv6: frags: rewrite ip6_expire_frag_queue() >> rhashtable: reorganize struct rhashtable layout >> inet: frags: reorganize struct netns_frags >> inet: frags: get rid of ipfrag_skb_cb/FRAG_CB >> inet: frags: fix ip6frag_low_thresh boundary >> net: speed up skb_rbtree_purge() >> net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends >> net: add rb_to_skb() and other rb tree helpers >> net: sk_buff rbnode reorg >> >> Florian Westphal (1): >> ipv6: defrag: drop non-last frags smaller than min mtu >> >> Peter Oskolkov (4): >> ip: discard IPv4 datagrams with overlapping segments. >> net: modify skb_rbtree_purge to return the truesize of all purged >> skbs. >> ip: add helpers to process in-order fragments faster. >> ip: process in-order fragments efficiently >> >> Taehee Yoo (1): >> ip: frags: fix crash in ip_do_fragment() >> > > Strange, I do not see "ip: use rb trees for IP frag queue." in this list ? And it was not in Stephen's backport to 4.14 either, wait, looks like it was somehow squashed into "net: sk_buff rbnode reorg". Stephen, was there a reason for that? Let me go back and add bffa72cf7f9df842f0016ba03586039296b4caaf as well as eeea10b83a139451130df1594f26710c8fa390c8 to the rebase todo and see how things go from there. Thanks for taking a look. -- Florian