Greetings,
0day kernel testing robot got the below dmesg and the first bad commit is
git://internal_merge_and_test_tree devel-catchup-201604051137
commit 3b24d854cb35383c30642116e5992fd619bdc9bc
Author: Eric Dumazet <edumazet(a)google.com>
AuthorDate: Fri Apr 1 08:52:17 2016 -0700
Commit: David S. Miller <davem(a)davemloft.net>
CommitDate: Mon Apr 4 22:11:20 2016 -0400
tcp/dccp: do not touch listener sk_refcnt under synflood
When a SYNFLOOD targets a non SO_REUSEPORT listener, multiple
cpus contend on sk->sk_refcnt and sk->sk_wmem_alloc changes.
By letting listeners use SOCK_RCU_FREE infrastructure,
we can relax TCP_LISTEN lookup rules and avoid touching sk_refcnt
Note that we still use SLAB_DESTROY_BY_RCU rules for other sockets,
only listeners are impacted by this change.
Peak performance under SYNFLOOD is increased by ~33% :
On my test machine, I could process 3.2 Mpps instead of 2.4 Mpps
Most consuming functions are now skb_set_owner_w() and sock_wfree()
contending on sk->sk_wmem_alloc when cooking SYNACK and freeing them.
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
+---------------------------------------------------------------+------------+------------+------------+
| | 3a5d1c0e7c | 3b24d854cb
| 366ff22c70 |
+---------------------------------------------------------------+------------+------------+------------+
| boot_successes | 468 | 120
| 10 |
| boot_failures | 0 | 40
| 13 |
| BUG:unable_to_handle_kernel | 0 | 17
| 2 |
| Oops | 0 | 39
| 5 |
| RIP:__inet_hash | 0 | 39
| 5 |
| Kernel_panic-not_syncing:Fatal_exception_in_interrupt | 0 | 40
| 5 |
| backtrace:inet_listen | 0 | 40
| 5 |
| backtrace:SyS_listen | 0 | 40
| 5 |
| BUG:unable_to_handle#kernel | 0 | 1
| |
| BUG:unable_to_handl12e_kernel_paging_requestpaging_request_at | 0 | 1
| |
| BUG:unabl[main]Setsockopt(###b000#)on_fd#[#:#:#] | 0 | 1
| |
| BUG | 0 | 1
| |
| IP-Config:Auto-configuration_of_network_failed | 0 | 0
| 8 |
+---------------------------------------------------------------+------------+------------+------------+
[main] Setsockopt(1 c 68b000 4) on fd 32 [26:1:45]
[main] Setsockopt(116 7f 68b000 4) on fd 34 [37:5:5]
[main] Setsockopt(1 23 68b000 7d) on fd 35 [1:1:1]
[ 41.825518] BUG: unabl[main] Setsockopt(0 1 68b000 4) on fd 36 [2:1:0]
[main] Setsockopt(0 d 68b000 4) on fd 38 [10:2:0]
[main] Setsockopt(1 21 68b000 4) on fd 40 [16:3:16]
[main] Setsockopt(116 7f 68b000 4) on fd 43 [37:5:2]
git bisect start 366ff22c7048d89447e3b5e86fb804a99f823dfc
9735a22799b9214d17d3c231fe377fc852f042e9 --
git bisect bad b2457dab739a92d7d648872fc0954d2a34525fa2 # 13:53 6- 8 Merge
'tj-libata/for-next' into devel-spot-201604051227
git bisect bad d6c4bd205e250640f8a60867448c6123534ad732 # 14:06 1- 3 Merge
'net/master' into devel-spot-201604051227
git bisect bad 545f577347719983aa86e69bdd634db371e79050 # 14:16 5- 2 Merge
'linux-review/Masahiro-Yamada/clk-let-clk_disable-return-immediately-if-clk-is-NULL-or-error/20160405-100803'
into devel-spot-201604051227
git bisect bad ded86f7058b0066db52dfd9aaf37902f3c7a3ca3 # 14:43 5- 5 Merge
'linux-review/David-Kershner/staging-unisys-clean-gotos-in-visorchipset/20160405-113613'
into devel-spot-201604051227
git bisect bad 294ae461218046500e36c9ca8239b60df24f6dc2 # 15:08 4- 3 Merge
'linux-review/Shuah-Khan/selftests-media_device_test-fix-to-close-the-fd-before-exit/20160405-114430'
into devel-spot-201604051227
git bisect good e72de1121f51267def9ba4b6317367ad5b0ee8c2 # 15:41 110+ 2 Merge
'linux-review/Vignesh-R/spi-Add-DMA-support-for-spi_flash_read/20160405-115307'
into devel-spot-201604051227
git bisect bad d479077b6b5cae6ba1dfaeffbc673b2d03ed4908 # 15:55 1- 1 Merge
'bpf/master' into devel-spot-201604051227
git bisect good f74df0be82d7d29747bfd68d955f4f573f9e5691 # 16:23 111+ 0 net:
dsa: mv88e6xxx: variable number of databases
git bisect good 43e2dfb23eb8f3698718ec1e3936c76912de1c30 # 16:58 118+ 0 Merge
branch '10GbE' of
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue
git bisect bad 9caad864151e525929d323de96cad382da49c3b2 # 17:06 13- 7 tcp:
increment sk_drops for listeners
git bisect good 2d331915a04144dad738e725769d8fac06ef6155 # 17:38 150+ 0
tcp/dccp: use rcu locking in inet_diag_find_one_icsk()
git bisect bad 3b24d854cb35383c30642116e5992fd619bdc9bc # 17:44 1- 2
tcp/dccp: do not touch listener sk_refcnt under synflood
git bisect good 3a5d1c0e7cb5ba91aabbd7e28626e3cc925f8093 # 18:46 151+ 0 inet:
reqsk_alloc() needs to take care of dead listeners
# first bad commit: [3b24d854cb35383c30642116e5992fd619bdc9bc] tcp/dccp: do not touch
listener sk_refcnt under synflood
git bisect good 3a5d1c0e7cb5ba91aabbd7e28626e3cc925f8093 # 18:54 468+ 0 inet:
reqsk_alloc() needs to take care of dead listeners
# extra tests with DEBUG_INFO
git bisect bad 3b24d854cb35383c30642116e5992fd619bdc9bc # 19:04 10- 13
tcp/dccp: do not touch listener sk_refcnt under synflood
# extra tests on HEAD of linux-devel/devel-spot-201604051227
git bisect bad 366ff22c7048d89447e3b5e86fb804a99f823dfc # 19:04 0- 13 0day
head guard for 'devel-spot-201604051227'
# extra tests on tree/branch linux-devel/devel-catchup-201604051137
git bisect bad e9fbc2f3aac59f628d7fb2b8358b65fcf997a7a6 # 22:31 6- 7 0day
head guard for 'devel-catchup-201604051137'
# extra tests on tree/branch linus/master
git bisect good 1e1e5ce78ff0fb2b1b9296894883c82de29057d0 # 22:44 455+ 8 Merge
tag 'linux-kselftest-4.6-rc3' of
git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
# extra tests on tree/branch linux-next/master
git bisect good aa36efa8b2a4ff33c70ef532ec58d49148f1872a # 22:58 458+ 4 Add
linux-next specific files for 20160405
This script may reproduce the error.
----------------------------------------------------------------------------
#!/bin/bash
kernel=$1
initrd=quantal-core-x86_64.cgz
wget --no-clobber
https://github.com/fengguang/reproduce-kernel-bug/raw/master/initrd/$initrd
kvm=(
qemu-system-x86_64
-enable-kvm
-cpu kvm64
-kernel $kernel
-initrd $initrd
-m 300
-smp 2
-device e1000,netdev=net0
-netdev user,id=net0
-boot order=nc
-no-reboot
-watchdog i6300esb
-rtc base=localtime
-serial stdio
-display none
-monitor null
)
append=(
hung_task_panic=1
earlyprintk=ttyS0,115200
systemd.log_level=err
debug
apic=debug
sysrq_always_enabled
rcupdate.rcu_cpu_stall_timeout=100
panic=-1
softlockup_panic=1
nmi_watchdog=panic
oops=panic
load_ramdisk=2
prompt_ramdisk=0
console=ttyS0,115200
console=tty0
vga=normal
root=/dev/ram0
rw
drbd.minor_count=8
)
"${kvm[@]}" --append "${append[*]}"
----------------------------------------------------------------------------
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/lkp Intel Corporation