On Thu, Aug 20, 2020 at 10:05 AM Willy Tarreau <w...@1wt.eu> wrote: > > On Thu, Aug 20, 2020 at 08:58:38AM +0200, Willy Tarreau wrote: > > I've just pushed a new branch "20200820-siphash-noise" that I also > > rebased onto latest master. It's currently running make allmodconfig > > here, so that will take a while, but I think it's OK as random32.o is > > already OK. I've also addressed a strange build issue caused by having > > an array instead of 4 ints in siprand_state. > > > > Please just let me know if that's OK for you now. > > At least it worked for me now (built with no errors on x86_64): > > $ time make -j 8 bzImage modules > (...) > real 65m7.986s > user 477m22.477s > sys 38m0.545s > $ find . -name '*.ko' |wc -l > 7983 >
Runs fine here. Thanks Willy for the "20200820-siphash-noise" [1] patchset and including/fixing all my reported issues. [1] Staging driver build failures fixed by... WIP: random32: rename the K0/K1 SipHash constants to PRND_K* [2] modpost undefined "net_rand_noise" errors fixed by... WIP: random32: export net_rand_noise [3] Consolidate/move/cleanup stuff in random32.c and prandom.h WIP: random32: keep a single macro definition for sipround This patchset looks very good to me :-). [ TESTING WITH LTP ] I run another perf-session by running "LTP::net.features::tcp_fastopen" test only. Unsure if there exist some more appropriate LTP tests. For example there exists "net_stress.*" (see [2]). [ PERF-SESSION ] Link: https://github.com/ClangBuiltLinux/linux/issues/1086#issuecomment-675783804 /home/dileks/bin/perf list | grep prandom_u32 | column -t random:prandom_u32 [Tracepoint event] cd /opt/ltp echo 0 | tee /proc/sys/kernel/kptr_restrict /proc/sys/kernel/perf_event_paranoid /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 echo 1 | tee /proc/sys/kernel/kptr_restrict /proc/sys/kernel/perf_event_paranoid [ /PERF-SESSION ] For a "comparison" (?) I attached two perf-reports - the newer one includes Willy's latest patchset. - Sedat - [1] https://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/prandom.git/log/?h=20200820-siphash-noise [2] https://github.com/linux-test-project/ltp/tree/master/runtest
# 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.): 120473 # # Overhead Command Shared Object Symbol # ........ ............... ................. ............... # 59.67% netstress [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | |--33.21%--tcp_v4_connect | __inet_stream_connect | | | |--22.14%--inet_stream_connect | | __sys_connect | | __x64_sys_connect | | __noinstr_text_start | | entry_SYSCALL_64_after_hwframe | | __libc_connect | | 0x65736e7500632e73 | | | --11.07%--tcp_sendmsg_locked | tcp_sendmsg | __sys_sendto | __x64_sys_sendto | __noinstr_text_start | 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 | | __noinstr_text_start | | entry_SYSCALL_64_after_hwframe | | __libc_connect | | 0x65736e7500632e73 | | | --5.54%--tcp_sendmsg_locked | tcp_sendmsg | __sys_sendto | __x64_sys_sendto | __noinstr_text_start | entry_SYSCALL_64_after_hwframe | __libc_sendto | |--6.64%--tcp_conn_request | tcp_rcv_state_process | | | |--3.35%--tcp_v4_do_rcv | | tcp_v4_rcv | | ip_protocol_deliver_rcu | | ip_local_deliver | | ip_rcv | | __netif_receive_skb | | process_backlog | | napi_poll | | net_rx_action | | __softirqentry_text_start | | asm_call_on_stack | | do_softirq_own_stack | | | | | |--2.05%--__irq_exit_rcu | | | | | | | --2.04%--sysvec_apic_timer_interrupt | | | asm_sysvec_apic_timer_interrupt | | | | | --1.30%--do_softirq | | __local_bh_enable_ip | | | | | --1.27%--ip_finish_output2 | | ip_output | | __ip_queue_xmit | | __tcp_transmit_skb | | | | | --1.20%--tcp_write_xmit | | | | | --1.02%--__tcp_push_pending_frames | | tcp_sendmsg_locked | | tcp_sendmsg | | | | | --0.63%--__sys_sendto | | __x64_sys_sendto | | __noinstr_text_start | | entry_SYSCALL_64_after_hwframe | | | --3.29%--tcp_v6_do_rcv | tcp_v6_rcv | ip6_protocol_deliver_rcu | ip6_input | ipv6_rcv | __netif_receive_skb | process_backlog | napi_poll | net_rx_action | __softirqentry_text_start | asm_call_on_stack | do_softirq_own_stack | | | |--2.02%--__irq_exit_rcu | | sysvec_apic_timer_interrupt | | asm_sysvec_apic_timer_interrupt | | | --1.28%--do_softirq | __local_bh_enable_ip | | | --1.23%--ip6_finish_output2 | ip6_output | ip6_xmit | inet6_csk_xmit | __tcp_transmit_skb | | | --1.14%--tcp_write_xmit | | | --0.98%--__tcp_push_pending_frames | tcp_sendmsg_locked | tcp_sendmsg | | | --0.60%--__sys_sendto | __x64_sys_sendto | __noinstr_text_start | entry_SYSCALL_64_after_hwframe | --3.19%--tcp_v4_syn_recv_sock tcp_v6_syn_recv_sock | --2.70%--tcp_try_fastopen tcp_conn_request tcp_rcv_state_process tcp_v4_do_rcv tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver ip_rcv __netif_receive_skb process_backlog napi_poll net_rx_action __softirqentry_text_start asm_call_on_stack do_softirq_own_stack | |--1.71%--__irq_exit_rcu | | | --1.70%--sysvec_apic_timer_interrupt | asm_sysvec_apic_timer_interrupt | --0.99%--do_softirq __local_bh_enable_ip | --0.97%--ip_finish_output2 ip_output __ip_queue_xmit __tcp_transmit_skb | --0.92%--tcp_write_xmit | --0.78%--__tcp_push_pending_frames tcp_sendmsg_locked tcp_sendmsg 36.09% swapper [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | |--23.84%--tcp_conn_request | tcp_rcv_state_process | | | |--11.94%--tcp_v6_do_rcv | | tcp_v6_rcv | | ip6_protocol_deliver_rcu | | ip6_input | | ipv6_rcv | | __netif_receive_skb | | process_backlog | | napi_poll | | 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.49%--cpuidle_enter_state | | | cpuidle_enter | | | do_idle | | | cpu_startup_entry | | | | | | | |--7.92%--secondary_startup_64 | | | | | | | --2.57%--start_kernel | | | secondary_startup_64 | | | | | --0.92%--poll_idle | | cpuidle_enter_state | | cpuidle_enter | | do_idle | | cpu_startup_entry | | | | | --0.68%--secondary_startup_64 | | | --11.90%--tcp_v4_do_rcv | tcp_v4_rcv | ip_protocol_deliver_rcu | ip_local_deliver | ip_rcv | __netif_receive_skb | process_backlog | napi_poll | 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.61%--cpuidle_enter_state | | cpuidle_enter | | do_idle | | cpu_startup_entry | | | | | |--7.92%--secondary_startup_64 | | | | | --2.69%--start_kernel | | secondary_startup_64 | | | --0.78%--poll_idle | cpuidle_enter_state | cpuidle_enter | do_idle | cpu_startup_entry | | | --0.60%--secondary_startup_64 | --12.23%--tcp_v4_syn_recv_sock tcp_v6_syn_recv_sock | |--7.45%--tcp_try_fastopen | tcp_conn_request | tcp_rcv_state_process | tcp_v4_do_rcv | tcp_v4_rcv | ip_protocol_deliver_rcu | ip_local_deliver | ip_rcv | __netif_receive_skb | process_backlog | napi_poll | 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.62%--cpuidle_enter_state | cpuidle_enter | do_idle | cpu_startup_entry | | | |--4.85%--secondary_startup_64 | | | --1.77%--start_kernel | secondary_startup_64 | --4.78%--tcp_check_req tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver ip_rcv __netif_receive_skb process_backlog napi_poll 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.53%--cpuidle_enter_state cpuidle_enter do_idle cpu_startup_entry | |--3.48%--secondary_startup_64 | --1.05%--start_kernel secondary_startup_64 0.92% ksoftirqd/3 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | --0.59%--tcp_conn_request tcp_rcv_state_process 0.90% ksoftirqd/1 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | --0.62%--tcp_conn_request tcp_rcv_state_process 0.84% ksoftirqd/0 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | --0.56%--tcp_conn_request tcp_rcv_state_process 0.77% ksoftirqd/2 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | --0.51%--tcp_conn_request tcp_rcv_state_process 0.17% kworker/3:7-eve [kernel.kallsyms] [k] prandom_u32 0.15% kworker/1:2-eve [kernel.kallsyms] [k] prandom_u32 0.14% kworker/2:0-eve [kernel.kallsyms] [k] prandom_u32 0.13% kworker/0:5-eve [kernel.kallsyms] [k] prandom_u32 0.07% Xorg [kernel.kallsyms] [k] prandom_u32 0.04% avahi-daemon [kernel.kallsyms] [k] prandom_u32 0.04% ip [kernel.kallsyms] [k] prandom_u32 0.02% perf [kernel.kallsyms] [k] prandom_u32 0.01% rcu_sched [kernel.kallsyms] [k] prandom_u32 0.00% kworker/u16:2-i [kernel.kallsyms] [k] prandom_u32 0.00% ltp-pan [kernel.kallsyms] [k] prandom_u32 0.00% awk [kernel.kallsyms] [k] prandom_u32 0.00% mktemp [kernel.kallsyms] [k] prandom_u32 0.00% mysqld [kernel.kallsyms] [k] prandom_u32 0.00% systemd-journal [kernel.kallsyms] [k] prandom_u32 0.00% NetworkManager [kernel.kallsyms] [k] prandom_u32 0.00% QDBusConnection [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% kworker/2:2-eve [kernel.kallsyms] [k] prandom_u32 0.00% kworker/3:0-eve [kernel.kallsyms] [k] prandom_u32 0.00% runltp [kernel.kallsyms] [k] prandom_u32 0.00% tcp_fastopen_ru [kernel.kallsyms] [k] prandom_u32 0.00% gnome-software [kernel.kallsyms] [k] prandom_u32 0.00% irq/35-iwlwifi [kernel.kallsyms] [k] prandom_u32 0.00% kworker/u16:1-p [kernel.kallsyms] [k] prandom_u32 0.00% org_kde_powerde [kernel.kallsyms] [k] prandom_u32 0.00% pool-org.gnome. [kernel.kallsyms] [k] prandom_u32 0.00% tst_net_iface_p [kernel.kallsyms] [k] prandom_u32 0.00% upowerd [kernel.kallsyms] [k] prandom_u32 0.00% xdg-desktop-por [kernel.kallsyms] [k] prandom_u32 # Samples: 0 of event 'dummy:HG' # Event count (approx.): 0 # # Overhead Command Shared Object Symbol # ........ ....... ............. ...... # # # (Tip: Customize output of perf script with: perf script -F event,ip,sym) #
# 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.): 120542 # # Overhead Command Shared Object Symbol # ........ ............... ................. ............... # 59.66% netstress [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | |--33.20%--tcp_v4_connect | __inet_stream_connect | | | |--22.13%--inet_stream_connect | | __sys_connect | | __x64_sys_connect | | __noinstr_text_start | | entry_SYSCALL_64_after_hwframe | | __libc_connect | | 0x65736e7500632e73 | | | --11.07%--tcp_sendmsg_locked | tcp_sendmsg | __sys_sendto | __x64_sys_sendto | __noinstr_text_start | entry_SYSCALL_64_after_hwframe | __libc_sendto | |--16.60%--tcp_v6_connect | __inet_stream_connect | | | |--11.07%--inet_stream_connect | | __sys_connect | | __x64_sys_connect | | __noinstr_text_start | | entry_SYSCALL_64_after_hwframe | | __libc_connect | | 0x65736e7500632e73 | | | --5.53%--tcp_sendmsg_locked | tcp_sendmsg | __sys_sendto | __x64_sys_sendto | __noinstr_text_start | entry_SYSCALL_64_after_hwframe | __libc_sendto | |--6.69%--tcp_conn_request | tcp_rcv_state_process | | | |--3.41%--tcp_v6_do_rcv | | tcp_v6_rcv | | ip6_protocol_deliver_rcu | | ip6_input | | ipv6_rcv | | __netif_receive_skb | | process_backlog | | napi_poll | | net_rx_action | | __softirqentry_text_start | | asm_call_on_stack | | do_softirq_own_stack | | | | | |--2.15%--__irq_exit_rcu | | | sysvec_apic_timer_interrupt | | | asm_sysvec_apic_timer_interrupt | | | | | --1.26%--do_softirq | | __local_bh_enable_ip | | | | | --1.22%--ip6_finish_output2 | | ip6_output | | ip6_xmit | | inet6_csk_xmit | | __tcp_transmit_skb | | | | | --1.13%--tcp_write_xmit | | | | | --0.99%--__tcp_push_pending_frames | | tcp_sendmsg_locked | | tcp_sendmsg | | | | | --0.56%--__sys_sendto | | __x64_sys_sendto | | __noinstr_text_start | | entry_SYSCALL_64_after_hwframe | | | --3.27%--tcp_v4_do_rcv | tcp_v4_rcv | ip_protocol_deliver_rcu | ip_local_deliver | ip_rcv | __netif_receive_skb | process_backlog | napi_poll | net_rx_action | __softirqentry_text_start | asm_call_on_stack | do_softirq_own_stack | | | |--1.94%--__irq_exit_rcu | | sysvec_apic_timer_interrupt | | asm_sysvec_apic_timer_interrupt | | | --1.33%--do_softirq | __local_bh_enable_ip | | | --1.29%--ip_finish_output2 | ip_output | __ip_queue_xmit | __tcp_transmit_skb | | | --1.21%--tcp_write_xmit | | | --1.02%--__tcp_push_pending_frames | tcp_sendmsg_locked | tcp_sendmsg | | | --0.67%--__sys_sendto | __x64_sys_sendto | __noinstr_text_start | entry_SYSCALL_64_after_hwframe | --3.16%--tcp_v4_syn_recv_sock tcp_v6_syn_recv_sock | --2.68%--tcp_try_fastopen tcp_conn_request tcp_rcv_state_process tcp_v4_do_rcv tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver ip_rcv __netif_receive_skb process_backlog napi_poll net_rx_action __softirqentry_text_start asm_call_on_stack do_softirq_own_stack | |--1.62%--__irq_exit_rcu | sysvec_apic_timer_interrupt | asm_sysvec_apic_timer_interrupt | --1.07%--do_softirq __local_bh_enable_ip | --1.03%--ip_finish_output2 ip_output __ip_queue_xmit __tcp_transmit_skb | --0.98%--tcp_write_xmit | --0.82%--__tcp_push_pending_frames tcp_sendmsg_locked tcp_sendmsg | --0.53%--__sys_sendto __x64_sys_sendto __noinstr_text_start entry_SYSCALL_64_after_hwframe 36.30% swapper [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | |--23.99%--tcp_conn_request | tcp_rcv_state_process | | | |--12.11%--tcp_v4_do_rcv | | tcp_v4_rcv | | ip_protocol_deliver_rcu | | ip_local_deliver | | ip_rcv | | __netif_receive_skb | | process_backlog | | napi_poll | | 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.79%--cpuidle_enter_state | | | cpuidle_enter | | | do_idle | | | cpu_startup_entry | | | | | | | |--8.20%--secondary_startup_64 | | | | | | | --2.59%--start_kernel | | | secondary_startup_64 | | | | | --0.80%--poll_idle | | cpuidle_enter_state | | cpuidle_enter | | do_idle | | cpu_startup_entry | | | | | --0.62%--secondary_startup_64 | | | --11.88%--tcp_v6_do_rcv | tcp_v6_rcv | ip6_protocol_deliver_rcu | ip6_input | ipv6_rcv | __netif_receive_skb | process_backlog | napi_poll | 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.46%--cpuidle_enter_state | | cpuidle_enter | | do_idle | | cpu_startup_entry | | | | | |--7.92%--secondary_startup_64 | | | | | --2.55%--start_kernel | | secondary_startup_64 | | | --0.89%--poll_idle | cpuidle_enter_state | cpuidle_enter | do_idle | cpu_startup_entry | | | --0.69%--secondary_startup_64 | --12.30%--tcp_v4_syn_recv_sock tcp_v6_syn_recv_sock | |--7.52%--tcp_try_fastopen | tcp_conn_request | tcp_rcv_state_process | tcp_v4_do_rcv | tcp_v4_rcv | ip_protocol_deliver_rcu | ip_local_deliver | ip_rcv | __netif_receive_skb | process_backlog | napi_poll | 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.67%--cpuidle_enter_state | cpuidle_enter | do_idle | cpu_startup_entry | | | |--4.94%--secondary_startup_64 | | | --1.73%--start_kernel | secondary_startup_64 | --4.79%--tcp_check_req tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver ip_rcv __netif_receive_skb process_backlog napi_poll 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.52%--cpuidle_enter_state cpuidle_enter do_idle cpu_startup_entry | |--3.59%--secondary_startup_64 | --0.93%--start_kernel secondary_startup_64 0.89% ksoftirqd/3 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | --0.58%--tcp_conn_request tcp_rcv_state_process 0.87% ksoftirqd/1 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | --0.58%--tcp_conn_request tcp_rcv_state_process 0.76% ksoftirqd/0 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 | --0.52%--tcp_conn_request tcp_rcv_state_process 0.71% ksoftirqd/2 [kernel.kallsyms] [k] prandom_u32 | ---prandom_u32 prandom_u32 0.16% kworker/3:3-eve [kernel.kallsyms] [k] prandom_u32 0.14% kworker/1:2-eve [kernel.kallsyms] [k] prandom_u32 0.12% Xorg [kernel.kallsyms] [k] prandom_u32 0.12% kworker/0:5-eve [kernel.kallsyms] [k] prandom_u32 0.11% kworker/2:0-eve [kernel.kallsyms] [k] prandom_u32 0.03% avahi-daemon [kernel.kallsyms] [k] prandom_u32 0.03% ip [kernel.kallsyms] [k] prandom_u32 0.03% systemd-udevd [kernel.kallsyms] [k] prandom_u32 0.02% perf [kernel.kallsyms] [k] prandom_u32 0.01% rcu_sched [kernel.kallsyms] [k] prandom_u32 0.00% ltp-pan [kernel.kallsyms] [k] prandom_u32 0.00% NetworkManager [kernel.kallsyms] [k] prandom_u32 0.00% irq/35-iwlwifi [kernel.kallsyms] [k] prandom_u32 0.00% mktemp [kernel.kallsyms] [k] prandom_u32 0.00% mysqld [kernel.kallsyms] [k] prandom_u32 0.00% tcp_fastopen_ru [kernel.kallsyms] [k] prandom_u32 0.00% DiscoverNotifie [kernel.kallsyms] [k] prandom_u32 0.00% QSGRenderThread [kernel.kallsyms] [k] prandom_u32 0.00% kworker/1:0-eve [kernel.kallsyms] [k] prandom_u32 0.00% migration/3 [kernel.kallsyms] [k] prandom_u32 0.00% ns_create [kernel.kallsyms] [k] prandom_u32 0.00% ns_ifmove [kernel.kallsyms] [k] prandom_u32 0.00% runltp [kernel.kallsyms] [k] prandom_u32 0.00% QXcbEventQueue [kernel.kallsyms] [k] prandom_u32 0.00% Thread (pooled) [kernel.kallsyms] [k] prandom_u32 0.00% akonadi_followu [kernel.kallsyms] [k] prandom_u32 0.00% gnome-software [kernel.kallsyms] [k] prandom_u32 0.00% ln [kernel.kallsyms] [k] prandom_u32 0.00% mkdir [kernel.kallsyms] [k] prandom_u32 # Samples: 0 of event 'dummy:HG' # Event count (approx.): 0 # # Overhead Command Shared Object Symbol # ........ ....... ............. ...... # # # (Tip: Generate a script for your data: perf script -g <lang>) #