On Thu, Aug 13, 2020 at 10:06 AM Willy Tarreau <w...@1wt.eu> wrote: > > On Thu, Aug 13, 2020 at 09:53:11AM +0200, Sedat Dilek wrote: > > On Wed, Aug 12, 2020 at 5:21 AM Willy Tarreau <w...@1wt.eu> wrote: > > > > > > On Tue, Aug 11, 2020 at 12:51:43PM +0200, Sedat Dilek wrote: > > > > Can you share this "rebased to mainline" version of George's patch? > > > > > > You can pick it from there if that helps, but keep in mind that > > > it's just experimental code that we use to explain our ideas and > > > that we really don't care a single second what kernel it's applied > > > to: > > > > > > > > > https://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/cleanups.git/log/?h=20200811-prandom-1 > > > > > > > Thanks Willy. > > > > I disagree: the base for testing should be clear(ly communicated). > > It is. As you can see on the log above, this was applied on top of > fc80c51fd4b2, there's nothing special here. In addition we're not even > talking about testing nor calling for testers, just trying to find a > reasonable solution. Maybe today I'll be able to re-run a few tests by > the way. > > > There are two diffs from Eric to #1: add a trace event for > > prandom_u32() and #2: a removal of prandom_u32() call in > > tcp_conn_request(). > > In case you have not seen. > > I've seen, just not had the time to test yet. >
Now with Eric' patch (see [1]) in mainline... commit 94c7eb54c4b8e81618ec79f414fe1ca5767f9720 "random32: add a tracepoint for prandom_u32()" ...I gave Willy's patches a try and used the Linux Test Project (LTP) for testing. [ PERF SESSION #2 ] Link: https://github.com/linux-test-project/ltp/blob/master/doc/mini-howto-building-ltp-from-git.txt cd /opt/ltp /home/dileks/bin/perf record -a -g -e random:prandom_u32 ./runltp -f net.features -s tcp_fastopen /home/dileks/bin/perf report --no-children --stdio > ./perf-report.txt /home/dileks/bin/perf script > ./perf-script.txt du -h perf* 34M perf.data 20K perf-report.txt 134M perf-script.txt Note: For a first test I used net.features::tcp_fastopen. Attached is my perf-report.txt. - Sedat - [1] https://git.kernel.org/linus/94c7eb54c4b8e81618ec79f414fe1ca5767f9720
# To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 120K of event 'random:prandom_u32' # Event count (approx.): 120452 # # Overhead Command Shared Object Symbol # ........ ............... ................. ............... # 58.22% netstress [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | |--33.22%--tcp_v4_connect | __inet_stream_connect | | | |--22.15%--inet_stream_connect | | __sys_connect | | __x64_sys_connect | | do_syscall_64 | | entry_SYSCALL_64_after_hwframe | | __libc_connect | | 0x65736e7500632e73 | | | --11.07%--tcp_sendmsg_locked | tcp_sendmsg | sock_sendmsg | __sys_sendto | __x64_sys_sendto | do_syscall_64 | entry_SYSCALL_64_after_hwframe | __libc_sendto | |--16.61%--tcp_v6_connect | __inet_stream_connect | | | |--11.07%--inet_stream_connect | | __sys_connect | | __x64_sys_connect | | do_syscall_64 | | entry_SYSCALL_64_after_hwframe | | __libc_connect | | 0x65736e7500632e73 | | | --5.54%--tcp_sendmsg_locked | tcp_sendmsg | sock_sendmsg | __sys_sendto | __x64_sys_sendto | do_syscall_64 | entry_SYSCALL_64_after_hwframe | __libc_sendto | |--5.24%--tcp_conn_request | tcp_rcv_state_process | | | |--3.26%--tcp_v4_do_rcv | | tcp_v4_rcv | | ip_protocol_deliver_rcu | | ip_local_deliver_finish | | __netif_receive_skb_one_core | | process_backlog | | net_rx_action | | __softirqentry_text_start | | asm_call_on_stack | | do_softirq_own_stack | | | | | |--2.03%--irq_exit_rcu | | | sysvec_apic_timer_interrupt | | | asm_sysvec_apic_timer_interrupt | | | | | --1.23%--do_softirq | | __local_bh_enable_ip | | | | | --1.19%--ip_finish_output2 | | __ip_queue_xmit | | __tcp_transmit_skb | | | | | --1.13%--tcp_write_xmit | | __tcp_push_pending_frames | | | | | --0.95%--tcp_sendmsg_locked | | tcp_sendmsg | | sock_sendmsg | | | | | --0.59%--__sys_sendto | | __x64_sys_sendto | | do_syscall_64 | | entry_SYSCALL_64_after_hwframe | | | --1.99%--tcp_v6_do_rcv | tcp_v6_rcv | ip6_protocol_deliver_rcu | ip6_input | __netif_receive_skb_one_core | process_backlog | net_rx_action | __softirqentry_text_start | asm_call_on_stack | do_softirq_own_stack | | | |--1.27%--irq_exit_rcu | | sysvec_apic_timer_interrupt | | asm_sysvec_apic_timer_interrupt | | | --0.71%--do_softirq | __local_bh_enable_ip | | | --0.68%--ip6_finish_output2 | ip6_xmit | inet6_csk_xmit | __tcp_transmit_skb | | | --0.62%--tcp_write_xmit | __tcp_push_pending_frames | | | --0.53%--tcp_sendmsg_locked | tcp_sendmsg | sock_sendmsg | --3.13%--tcp_v4_syn_recv_sock tcp_v6_syn_recv_sock | |--2.61%--tcp_try_fastopen | tcp_conn_request | tcp_rcv_state_process | tcp_v4_do_rcv | tcp_v4_rcv | ip_protocol_deliver_rcu | ip_local_deliver_finish | __netif_receive_skb_one_core | process_backlog | net_rx_action | __softirqentry_text_start | asm_call_on_stack | do_softirq_own_stack | | | |--1.66%--irq_exit_rcu | | sysvec_apic_timer_interrupt | | asm_sysvec_apic_timer_interrupt | | | --0.95%--do_softirq | __local_bh_enable_ip | | | --0.92%--ip_finish_output2 | __ip_queue_xmit | __tcp_transmit_skb | | | --0.87%--tcp_write_xmit | __tcp_push_pending_frames | | | --0.72%--tcp_sendmsg_locked | tcp_sendmsg | sock_sendmsg | --0.52%--tcp_check_req tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver_finish __netif_receive_skb_one_core process_backlog net_rx_action __softirqentry_text_start asm_call_on_stack do_softirq_own_stack 37.93% swapper [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | |--25.55%--tcp_conn_request | tcp_rcv_state_process | | | |--13.54%--tcp_v6_do_rcv | | tcp_v6_rcv | | ip6_protocol_deliver_rcu | | ip6_input | | __netif_receive_skb_one_core | | process_backlog | | net_rx_action | | __softirqentry_text_start | | asm_call_on_stack | | do_softirq_own_stack | | irq_exit_rcu | | sysvec_apic_timer_interrupt | | asm_sysvec_apic_timer_interrupt | | | | | |--12.41%--cpuidle_enter_state | | | cpuidle_enter | | | do_idle | | | cpu_startup_entry | | | | | | | |--9.59%--start_secondary | | | | secondary_startup_64 | | | | | | | --2.82%--start_kernel | | | secondary_startup_64 | | | | | --0.68%--poll_idle | | cpuidle_enter_state | | cpuidle_enter | | do_idle | | cpu_startup_entry | | | | | --0.52%--start_secondary | | secondary_startup_64 | | | --12.02%--tcp_v4_do_rcv | tcp_v4_rcv | ip_protocol_deliver_rcu | ip_local_deliver_finish | __netif_receive_skb_one_core | process_backlog | net_rx_action | __softirqentry_text_start | asm_call_on_stack | do_softirq_own_stack | irq_exit_rcu | sysvec_apic_timer_interrupt | asm_sysvec_apic_timer_interrupt | | | |--10.71%--cpuidle_enter_state | | cpuidle_enter | | do_idle | | cpu_startup_entry | | | | | |--8.21%--start_secondary | | | secondary_startup_64 | | | | | --2.50%--start_kernel | | secondary_startup_64 | | | --0.77%--poll_idle | cpuidle_enter_state | cpuidle_enter | do_idle | cpu_startup_entry | | | --0.60%--start_secondary | secondary_startup_64 | --12.36%--tcp_v4_syn_recv_sock tcp_v6_syn_recv_sock | |--7.54%--tcp_try_fastopen | tcp_conn_request | tcp_rcv_state_process | tcp_v4_do_rcv | tcp_v4_rcv | ip_protocol_deliver_rcu | ip_local_deliver_finish | __netif_receive_skb_one_core | process_backlog | net_rx_action | __softirqentry_text_start | asm_call_on_stack | do_softirq_own_stack | irq_exit_rcu | sysvec_apic_timer_interrupt | asm_sysvec_apic_timer_interrupt | | | --6.76%--cpuidle_enter_state | cpuidle_enter | do_idle | cpu_startup_entry | | | |--5.11%--start_secondary | | secondary_startup_64 | | | --1.65%--start_kernel | secondary_startup_64 | --4.82%--tcp_check_req tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver_finish __netif_receive_skb_one_core process_backlog net_rx_action __softirqentry_text_start asm_call_on_stack do_softirq_own_stack irq_exit_rcu sysvec_apic_timer_interrupt asm_sysvec_apic_timer_interrupt | --4.59%--cpuidle_enter_state cpuidle_enter do_idle cpu_startup_entry | |--3.63%--start_secondary | secondary_startup_64 | --0.95%--start_kernel secondary_startup_64 0.78% ksoftirqd/1 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 0.76% ksoftirqd/0 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 0.76% ksoftirqd/3 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 0.71% ksoftirqd/2 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 0.20% kworker/3:3-eve [kernel.kallsyms] [k] prandom_u32 0.17% kworker/1:1-eve [kernel.kallsyms] [k] prandom_u32 0.15% kworker/2:2-eve [kernel.kallsyms] [k] prandom_u32 0.12% kworker/0:7-eve [kernel.kallsyms] [k] prandom_u32 0.06% Xorg [kernel.kallsyms] [k] prandom_u32 0.04% ip [kernel.kallsyms] [k] prandom_u32 0.03% avahi-daemon [kernel.kallsyms] [k] prandom_u32 0.02% perf [kernel.kallsyms] [k] prandom_u32 0.01% mysqld [kernel.kallsyms] [k] prandom_u32 0.01% tcp_fastopen_ru [kernel.kallsyms] [k] prandom_u32 0.00% irq/35-iwlwifi [kernel.kallsyms] [k] prandom_u32 0.00% rcu_sched [kernel.kallsyms] [k] prandom_u32 0.00% dbus-daemon [kernel.kallsyms] [k] prandom_u32 0.00% ltp-pan [kernel.kallsyms] [k] prandom_u32 0.00% kworker/u16:3-i [kernel.kallsyms] [k] prandom_u32 0.00% mktemp [kernel.kallsyms] [k] prandom_u32 0.00% QSGRenderThread [kernel.kallsyms] [k] prandom_u32 0.00% gdbus [kernel.kallsyms] [k] prandom_u32 0.00% jbd2/sdc2-8 [kernel.kallsyms] [k] prandom_u32 0.00% kded5 [kernel.kallsyms] [k] prandom_u32 0.00% konsole [kernel.kallsyms] [k] prandom_u32 0.00% kworker/1:0-eve [kernel.kallsyms] [k] prandom_u32 0.00% kworker/2:0-eve [kernel.kallsyms] [k] prandom_u32 0.00% runltp [kernel.kallsyms] [k] prandom_u32 0.00% systemd-journal [kernel.kallsyms] [k] prandom_u32 0.00% xdg-desktop-por [kernel.kallsyms] [k] prandom_u32 0.00% sh [kernel.kallsyms] [k] prandom_u32 # Samples: 0 of event 'dummy:HG' # Event count (approx.): 0 # # Overhead Command Shared Object Symbol # ........ ....... ............. ...... # # # (Tip: To show assembler sample contexts use perf record -b / perf script -F +brstackinsn --xed) #