Hi, FYI, we found some performance regressions caused by commit 1ca7d67c ("seqcount: Add lockdep functionality to seqcount/seqlock structures") --- 1ca7d67cf5d5a2aef26a8d9afd789006fa098347 is the first bad commit commit 1ca7d67cf5d5a2aef26a8d9afd789006fa098347 Author: John Stultz Date: Mon Oct 7 15:51:59 2013 -0700 seqcount: Add lockdep functionality to seqcount/seqlock structures Currently seqlocks and seqcounts don't support lockdep. After running across a seqcount related deadlock in the timekeeping code, I used a less-refined and more focused variant of this patch to narrow down the cause of the issue. This is a first-pass attempt to properly enable lockdep functionality on seqlocks and seqcounts. Since seqcounts are used in the vdso gettimeofday code, I've provided non-lockdep accessors for those needs. I've also handled one case where there were nested seqlock writers and there may be more edge cases. Comments and feedback would be appreciated! Signed-off-by: John Stultz Signed-off-by: Peter Zijlstra Cc: Eric Dumazet Cc: Li Zefan Cc: Mathieu Desnoyers Cc: Steven Rostedt Cc: "David S. Miller" Cc: netdev@vger.kernel.org Link: http://lkml.kernel.org/r/1381186321-4906-3-git-send-email-john.stultz@linaro.org Signed-off-by: Ingo Molnar :040000 040000 cfee9d56dac9192e1ff45a0bb1dfb953c87798a8 c99b3921b61be2bac7de96bdc68fa4a3ecbe7ded M arch :040000 040000 9ded4e8cc971a768488ab0041962c1f2edc15927 9fb40a547f803cd36ccadb8f2c03311cbee021b5 M fs :040000 040000 715572039d89ec3c5a61ee96e2b8058291b39d0a 682f4023369ce622b66ffb6a7a3e0d7b478a6c51 M include :040000 040000 fddfb5e3c86bb930bdb979185b059904a469b919 8dd70520aebac4f7abaeaf40a8dfedbbee0029aa M mm bisect run success # bad: [b132a89a2bd3020081e2b9af82af88f2ce7e8065] Merge 'clk/clk-next' into devel-hourly-2013111208 # good: [5e01dc7b26d9f24f39abace5da98ccbd6a5ceb52] Linux 3.12 git bisect start 'b132a89a2bd3020081e2b9af82af88f2ce7e8065' '5e01dc7b26d9f24f39abace5da98ccbd6a5ceb52' '--' # good: [3eb5b6a57cdd494e8e39d8faef0b4f63b8c51e1c] Merge branch 'next/dt' into HEAD git bisect good 3eb5b6a57cdd494e8e39d8faef0b4f63b8c51e1c # bad: [18b43ee507b9383e1dd1b4af9243346aaa3dd488] Merge 'tip/sched/core' into devel-hourly-2013111208 git bisect bad 18b43ee507b9383e1dd1b4af9243346aaa3dd488 # good: [ac51bb09837098c422a8825bc155ccd736b9632d] drm/nouveau/core: Allow asymmetric nouveau_event_get/_put git bisect good ac51bb09837098c422a8825bc155ccd736b9632d # good: [18e30be0b99a9545bc18d131398c45b74ab992d4] Merge remote-tracking branch 'drm-upstream/drm-next' into drm-intel-nightly git bisect good 18e30be0b99a9545bc18d131398c45b74ab992d4 # good: [e5137b50a0640009fd63a3e65c14bc6e1be8796a] ftrace, sched: Add TRACE_FLAG_PREEMPT_RESCHED git bisect good e5137b50a0640009fd63a3e65c14bc6e1be8796a # good: [e78709cd691cd62ce04c9d22f9df1de4c3fd1595] Merge 'shawnguo/staging-3.13' into devel-hourly-2013111208 git bisect good e78709cd691cd62ce04c9d22f9df1de4c3fd1595 # good: [ecf1f014325ba60f4df35edae1a357c67c5d4eb1] Merge branch 'core/rcu' into core/locking, to prepare the kernel/locking/ file move git bisect good ecf1f014325ba60f4df35edae1a357c67c5d4eb1 # good: [3378b7f40d79930f0f447a164c7e8fcbe4480e40] nfsd4: fix discarded security labels on setattr git bisect good 3378b7f40d79930f0f447a164c7e8fcbe4480e40 # good: [32cf7c3c94623514eb882addae307212c1507239] locking: Move the percpu-rwsem code to kernel/locking/ git bisect good 32cf7c3c94623514eb882addae307212c1507239 # bad: [67a6de49bf545c34eb8dee99abbb92d9ea268200] locking/doc: Update references to kernel/mutex.c git bisect bad 67a6de49bf545c34eb8dee99abbb92d9ea268200 # bad: [1ca7d67cf5d5a2aef26a8d9afd789006fa098347] seqcount: Add lockdep functionality to seqcount/seqlock structures git bisect bad 1ca7d67cf5d5a2aef26a8d9afd789006fa098347 # good: [827da44c61419f29ae3be198c342e2147f1a10cb] net: Explicitly initialize u64_stats_sync structures for lockdep git bisect good 827da44c61419f29ae3be198c342e2147f1a10cb # first bad commit: [1ca7d67cf5d5a2aef26a8d9afd789006fa098347] seqcount: Add lockdep functionality to seqcount/seqlock structures Here is a performance regression list we got so far: 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 6156637.80 -27.9% 4439431.60 lkp-sbx04/micro/will-it-scale/pread1 6156637.80 -27.9% 4439431.60 TOTAL will-it-scale.pread1.8.processes 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 13396131.20 -25.8% 9937484.80 lkp-sbx04/micro/will-it-scale/pread2 13396131.20 -25.8% 9937484.80 TOTAL will-it-scale.pread2.16.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 26792262.40 -25.8% 19874969.60 lkp-sbx04/micro/will-it-scale/pread2 26792262.40 -25.8% 19874969.60 TOTAL will-it-scale.pread2.32.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 20094196.80 -25.8% 14906227.20 lkp-sbx04/micro/will-it-scale/pread2 20094196.80 -25.8% 14906227.20 TOTAL will-it-scale.pread2.24.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 53584524.80 -25.8% 39749939.20 lkp-sbx04/micro/will-it-scale/pread2 53584524.80 -25.8% 39749939.20 TOTAL will-it-scale.pread2.64.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 40188393.60 -25.8% 29812454.40 lkp-sbx04/micro/will-it-scale/pread2 40188393.60 -25.8% 29812454.40 TOTAL will-it-scale.pread2.48.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 6698065.60 -25.8% 4968742.40 lkp-sbx04/micro/will-it-scale/pread2 6698065.60 -25.8% 4968742.40 TOTAL will-it-scale.pread2.8.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 837258.20 -25.8% 621092.80 lkp-sbx04/micro/will-it-scale/pread2 837258.20 -25.8% 621092.80 TOTAL will-it-scale.pread2.1.processes 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 837258.20 -25.8% 621092.80 lkp-sbx04/micro/will-it-scale/pread2 837258.20 -25.8% 621092.80 TOTAL will-it-scale.pread2.1.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 40202380.80 -25.8% 29840668.80 lkp-sbx04/micro/will-it-scale/pread1 40202380.80 -25.8% 29840668.80 TOTAL will-it-scale.pread1.48.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 20101190.40 -25.8% 14920334.40 lkp-sbx04/micro/will-it-scale/pread1 20101190.40 -25.8% 14920334.40 TOTAL will-it-scale.pread1.24.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 6700396.80 -25.8% 4973444.80 lkp-sbx04/micro/will-it-scale/pread1 6700396.80 -25.8% 4973444.80 TOTAL will-it-scale.pread1.8.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 53603174.40 -25.8% 39787558.40 lkp-sbx04/micro/will-it-scale/pread1 53603174.40 -25.8% 39787558.40 TOTAL will-it-scale.pread1.64.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 837549.60 -25.8% 621680.60 lkp-sbx04/micro/will-it-scale/pread1 837549.60 -25.8% 621680.60 TOTAL will-it-scale.pread1.1.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 837549.60 -25.8% 621680.60 lkp-sbx04/micro/will-it-scale/pread1 837549.60 -25.8% 621680.60 TOTAL will-it-scale.pread1.1.processes 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 26801587.20 -25.8% 19893779.20 lkp-sbx04/micro/will-it-scale/pread1 26801587.20 -25.8% 19893779.20 TOTAL will-it-scale.pread1.32.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 13400793.60 -25.8% 9946889.60 lkp-sbx04/micro/will-it-scale/pread1 13400793.60 -25.8% 9946889.60 TOTAL will-it-scale.pread1.16.linear 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 16103348.20 -25.2% 12039259.40 lkp-sbx04/micro/will-it-scale/pread1 16103348.20 -25.2% 12039259.40 TOTAL will-it-scale.pread1.64.processes 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 11062366.00 -23.2% 8501004.20 lkp-sbx04/micro/will-it-scale/pread1 11062366.00 -23.2% 8501004.20 TOTAL will-it-scale.pread1.48.processes 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 596765.40 -20.1% 477000.60 lkp-sbx04/micro/will-it-scale/pread1 596765.40 -20.1% 477000.60 TOTAL will-it-scale.pread1.1.threads 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 9155848.00 -17.7% 7538214.20 lkp-sbx04/micro/will-it-scale/pread1 9155848.00 -17.7% 7538214.20 TOTAL will-it-scale.pread1.8.threads 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 595761.80 -19.9% 477296.20 lkp-sbx04/micro/will-it-scale/pread2 595761.80 -19.9% 477296.20 TOTAL will-it-scale.pread2.1.threads 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 5743713.40 -12.2% 5040736.60 lkp-sbx04/micro/will-it-scale/pread1 5743713.40 -12.2% 5040736.60 TOTAL will-it-scale.pread1.24.processes 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 345893.67 -11.3% 306922.00 lkp-a06/crypto/tcrypt/2s-500-504 345893.67 -11.3% 306922.00 TOTAL tcrypt.async_xts_serpent_encryption_2.512_bit_key.256_byte_blocks 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 346216.33 -11.2% 307554.00 lkp-a06/crypto/tcrypt/2s-500-504 346216.33 -11.2% 307554.00 TOTAL tcrypt.async_xts_serpent_encryption_2.256_bit_key.256_byte_blocks 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 415605.00 -11.2% 369082.20 lkp-sbx04/micro/will-it-scale/pread2 415605.00 -11.2% 369082.20 TOTAL will-it-scale.pread2.8.processes 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 7010726.40 -10.4% 6282367.20 lkp-sbx04/micro/will-it-scale/pread1 7010726.40 -10.4% 6282367.20 TOTAL will-it-scale.pread1.16.processes 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 259.18 -10.0% 233.32 lkp-a06/micro/dbench/100% 4387.50 -8.4% 4020.88 nhm8/micro/dbench/100% 4646.68 -8.4% 4254.20 TOTAL dbench.throughput-MB/sec 827da44c61419f29ae3b 1ca7d67cf5d5a2aef26a ------------------------ ------------------------ 243.33 -4.7% 232.00 lkp-a04/micro/netperf/120s-200%-TCP_MAERTS 189.33 -5.3% 179.33 lkp-a04/micro/netperf/120s-200%-TCP_SENDFILE 240.33 -5.3% 227.67 lkp-a04/micro/netperf/120s-200%-TCP_STREAM 3272.33 -10.5% 2928.00 lkp-t410/micro/netperf/120s-200%-TCP_MAERTS 1950.33 -7.1% 1811.00 lkp-t410/micro/netperf/120s-200%-TCP_SENDFILE 3338.67 -11.9% 2941.00 lkp-t410/micro/netperf/120s-200%-TCP_STREAM 9234.33 -9.9% 8319.00 TOTAL netperf.Throughput_Mbps BTW, Kernel config is attached. --yliu