Re: SO_REUSEPORT - can it be done in kernel?

Thomas Graf
2011-03-01T15:08:05Z

On Tue, Mar 01, 2011 at 03:52:40PM +0100, Eric Dumazet wrote:
> Le mardi 01 mars 2011 à 09:30 -0500, Thomas Graf a écrit :
> > On Tue, Mar 01, 2011 at 09:22:35AM -0500, Thomas Graf wrote:
> > > On Tue, Mar 01, 2011 at 03:06:59PM +0100, Eric Dumazet wrote:
> > > > Would be nice to cpu affine named to _not_ run on CPU11, just to
> > > > specialize it for TX completions and have softirq time percentage and
> > > > "perf top -C 11 " results
> >
> > CPU 1 isolated as well (named running with mask 0,2-10)
> >
> > ----------------------------------------------------------------------------------------------------------------------
> > PerfTop: 580 irqs/sec kernel:100.0% exact: 0.0% [1000Hz cpu-clock-msecs], (all, CPU: 1)
> > ----------------------------------------------------------------------------------------------------------------------
> >
> > samples pcnt function DSO
> > _______ _____ ___________________________ ___________________________________________________________
> >
> > 283.00 9.2% get_rx_page_info /lib/modules/2.6.38-rc5+/kernel/drivers/net/benet/be2net.ko
> > 256.00 8.4% _raw_spin_unlock_irqrestore /lib/modules/2.6.38-rc5+/build/vmlinux
> > 190.00 6.2% be_poll_rx /lib/modules/2.6.38-rc5+/kernel/drivers/net/benet/be2net.ko
> > 182.00 5.9% get_page_from_freelist /lib/modules/2.6.38-rc5+/build/vmlinux
> > 157.00 5.1% intel_idle /lib/modules/2.6.38-rc5+/build/vmlinux
> > 143.00 4.7% __do_softirq /lib/modules/2.6.38-rc5+/build/vmlinux
> > 133.00 4.3% sock_queue_rcv_skb /lib/modules/2.6.38-rc5+/build/vmlinux
> > 133.00 4.3% __udp4_lib_lookup /lib/modules/2.6.38-rc5+/build/vmlinux
> > 131.00 4.3% sk_run_filter /lib/modules/2.6.38-rc5+/build/vmlinux
>
> sk_run_filter ? Do you have a packet filter running ?

dhclient was running. With dhclient killed:

----------------------------------------------------------------------------------------------------------------------
PerfTop: 726 irqs/sec kernel:99.9% exact: 0.0% [1000Hz cpu-clock-msecs], (all, CPU: 1)
----------------------------------------------------------------------------------------------------------------------

samples pcnt function DSO
_______ _____ ___________________________ ___________________________________________________________

472.00 10.6% get_rx_page_info /lib/modules/2.6.38-rc5+/kernel/drivers/net/benet/be2net.ko
419.00 9.4% _raw_spin_unlock_irqrestore /lib/modules/2.6.38-rc5+/build/vmlinux
280.00 6.3% be_poll_rx /lib/modules/2.6.38-rc5+/kernel/drivers/net/benet/be2net.ko
259.00 5.8% get_page_from_freelist /lib/modules/2.6.38-rc5+/build/vmlinux
248.00 5.6% __do_softirq /lib/modules/2.6.38-rc5+/build/vmlinux
238.00 5.4% intel_idle /lib/modules/2.6.38-rc5+/build/vmlinux
204.00 4.6% sock_queue_rcv_skb /lib/modules/2.6.38-rc5+/build/vmlinux
189.00 4.3% __udp4_lib_lookup /lib/modules/2.6.38-rc5+/build/vmlinux
178.00 4.0% getnstimeofday /lib/modules/2.6.38-rc5+/build/vmlinux
169.00 3.8% __alloc_skb /lib/modules/2.6.38-rc5+/build/vmlinux
144.00 3.2% read_tsc /lib/modules/2.6.38-rc5+/build/vmlinux
143.00 3.2% sock_def_readable /lib/modules/2.6.38-rc5+/build/vmlinux
138.00 3.1% udp_queue_rcv_skb /lib/modules/2.6.38-rc5+/build/vmlinux
115.00 2.6% kmem_cache_alloc_node_trace /lib/modules/2.6.38-rc5+/build/vmlinux
114.00 2.6% __netif_receive_skb /lib/modules/2.6.38-rc5+/build/vmlinux
109.00 2.5% _raw_spin_lock /lib/modules/2.6.38-rc5+/build/vmlinux
100.00 2.3% is_swiotlb_buffer /lib/modules/2.6.38-rc5+/build/vmlinux
90.00 2.0% __phys_addr /lib/modules/2.6.38-rc5+/build/vmlinux
82.00 1.8% __udp4_lib_rcv /lib/modules/2.6.38-rc5+/build/vmlinux
80.00 1.8% kmem_cache_alloc_node /lib/modules/2.6.38-rc5+/build/vmlinux
73.00 1.6% ip_route_input_common /lib/modules/2.6.38-rc5+/build/vmlinux
60.00 1.4% memcpy /lib/modules/2.6.38-rc5+/build/vmlinux
59.00 1.3% dma_issue_pending_all /lib/modules/2.6.38-rc5+/build/vmlinux
58.00 1.3% ip_rcv /lib/modules/2.6.38-rc5+/build/vmlinux
57.00 1.3% be_post_rx_frags /lib/modules/2.6.38-rc5+/kernel/drivers/net/benet/be2net.ko
49.00 1.1% __alloc_pages_nodemask /lib/modules/2.6.38-rc5+/build/vmlinux
45.00 1.0% alloc_pages_current /lib/modules/2.6.38-rc5+/build/vmlinux
27.00 0.6% get_rps_cpu /lib/modules/2.6.38-rc5+/build/vmlinux
23.00 0.5% napi_complete /lib/modules/2.6.38-rc5+/build/vmlinux
22.00 0.5% ip_local_deliver /lib/modules/2.6.38-rc5+/build/vmlinux
18.00 0.4% selinux_socket_sock_rcv_skb /lib/modules/2.6.38-rc5+/build/vmlinux
17.00 0.4% native_read_tsc /lib/modules/2.6.38-rc5+/build/vmlinux
16.00 0.4% local_bh_enable /lib/modules/2.6.38-rc5+/build/vmlinux
16.00 0.4% next_zones_zonelist /lib/modules/2.6.38-rc5+/build/vmlinux
14.00 0.3% sk_filter /lib/modules/2.6.38-rc5+/build/vmlinux
13.00 0.3% eth_type_trans /lib/modules/2.6.38-rc5+/build/vmlinux
10.00 0.2% __kmalloc_node_track_caller /lib/modules/2.6.38-rc5+/build/vmlinux
10.00 0.2% _raw_spin_lock_irqsave /lib/modules/2.6.38-rc5+/build/vmlinux
9.00 0.2% raw_local_deliver /lib/modules/2.6.38-rc5+/build/vmlinux
8.00 0.2% __udp_queue_rcv_skb /lib/modules/2.6.38-rc5+/build/vmlinux
8.00 0.2% netif_receive_skb /lib/modules/2.6.38-rc5+/build/vmlinux
8.00 0.2% ip_queue_rcv_skb /lib/modules/2.6.38-rc5+/build/vmlinux
7.00 0.2% net_rx_action /lib/modules/2.6.38-rc5+/build/vmlinux
6.00 0.1% swiotlb_map_page /lib/modules/2.6.38-rc5+/build/vmlinux
6.00 0.1% __sk_mem_schedule /lib/modules/2.6.38-rc5+/build/vmlinux
6.00 0.1% dso__find_symbol /usr/bin/perf
6.00 0.1% __netdev_alloc_skb /lib/modules/2.6.38-rc5+/build/vmlinux