From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753999AbbGQX3M (ORCPT ); Fri, 17 Jul 2015 19:29:12 -0400 Received: from e35.co.us.ibm.com ([32.97.110.153]:56681 "EHLO e35.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753730AbbGQX3H (ORCPT ); Fri, 17 Jul 2015 19:29:07 -0400 X-Helo: d03dlp02.boulder.ibm.com X-MailFrom: paulmck@linux.vnet.ibm.com X-RcptTo: linux-kernel@vger.kernel.org Date: Fri, 17 Jul 2015 16:29:01 -0700 From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: mingo@kernel.org, jiangshanlai@gmail.com, dipankar@in.ibm.com, akpm@linux-foundation.org, mathieu.desnoyers@efficios.com, josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org, rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com, dvhart@linux.intel.com, fweisbec@gmail.com, oleg@redhat.com, bobby.prani@gmail.com Subject: [PATCH tip/core/rcu 0/19] Expedited grace period changes for 4.3 Message-ID: <20150717232901.GA22511@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15071723-0013-0000-0000-0000144D0801 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello! This series contains a series of optimizations for RCU's expedited grace periods that reduce the jitter they induce in other CPUs. There is more work to be done here, but this should introduce a good and sufficient level of instability for 4.3. :-/ 1. Stop disabling CPU hotplug in synchronize_rcu_expedited(). Longer term, synchronize_sched_expedited() will get the same treatment. 2. Remove CONFIG_RCU_CPU_STALL_INFO, so that kernels are always built as if CONFIG_RCU_CPU_STALL_INFO=y. A bit off-topic, but remains in this series due to conflicts. 3. Switch synchronize_sched_expedited() to stop_one_cpu(), courtesy of Peter Zijlstra. 4. Simplify synchronize_sched_expedited() counter handling. 5. Get rid of synchronize_sched_expedited()'s polling loop in favor of tree-based funnel locking. 6. Make expedited GP CPU stoppage asynchronous, courtesy of Peter Zijlstra. This repairs a performance regression in #3. 7. Abstract sequence counting from synchronize_sched_expedited(). 8. Make synchronize_rcu_expedited() use sequence-counter scheme. 9. Abstract funnel locking from synchronize_sched_expedited(). 10. Fix synchronize_sched_expedited() type error for variable "s". 11. Use funnel locking for synchronize_rcu_expedited()'s polling loop. 12. Apply rcu_seq operations to _rcu_barrier(). 13. Consolidate last open-coded expedited memory barrier. 14. Extend expedited funnel locking to rcu_data structure, allowing full parallel handling of expedited grace periods. 15. Add stall warnings to synchronize_sched_expedited(). 16. Document new expedited stall warnings. 17. Pull out wait_event*() condition into helper function. 18. Rename RCU_GP_DONE_FQS to RCU_GP_DOING_FQS. 19. Add fastpath bypassing funnel locking to speed up the common case where only one expedited grace period happens at a time across the full system. Thanx, Paul ------------------------------------------------------------------------ b/Documentation/RCU/stallwarn.txt | 29 b/Documentation/RCU/trace.txt | 36 b/include/trace/events/rcu.h | 1 b/kernel/rcu/tree.c | 625 +++++----- b/kernel/rcu/tree.h | 39 b/kernel/rcu/tree_plugin.h | 123 - b/kernel/rcu/tree_trace.c | 29 b/lib/Kconfig.debug | 14 b/tools/testing/selftests/rcutorture/configs/rcu/TREE01 | 1 b/tools/testing/selftests/rcutorture/configs/rcu/TREE02 | 1 b/tools/testing/selftests/rcutorture/configs/rcu/TREE02-T | 1 b/tools/testing/selftests/rcutorture/configs/rcu/TREE03 | 1 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04 | 1 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05 | 1 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06 | 1 b/tools/testing/selftests/rcutorture/configs/rcu/TREE07 | 1 b/tools/testing/selftests/rcutorture/configs/rcu/TREE08 | 1 b/tools/testing/selftests/rcutorture/configs/rcu/TREE08-T | 1 b/tools/testing/selftests/rcutorture/configs/rcu/TREE09 | 1 b/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt | 1 20 files changed, 425 insertions(+), 483 deletions(-)