From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752877AbbF3WZj (ORCPT ); Tue, 30 Jun 2015 18:25:39 -0400 Received: from e33.co.us.ibm.com ([32.97.110.151]:56079 "EHLO e33.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752503AbbF3WZg (ORCPT ); Tue, 30 Jun 2015 18:25:36 -0400 X-Helo: d03dlp01.boulder.ibm.com X-MailFrom: paulmck@linux.vnet.ibm.com X-RcptTo: linux-kernel@vger.kernel.org Date: Tue, 30 Jun 2015 15:25:30 -0700 From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: mingo@kernel.org, laijs@cn.fujitsu.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 RFC tip/core/rcu 0/14] Rework expedited grace periods Message-ID: <20150630222530.GA12044@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: 15063022-0009-0000-0000-00000C2260DE Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello! This RFC series reworks the handling of expedited grace periods, eliminating the previous use of try_stop_cpus(), improving scalability, and adding an RCU CPU stall-warning capability. This series is as follows: 1. Replace try_stop_cpus() with stop_one_cpu(), courtesy of Peter Zijlstra. 2. Improve counter handling to more efficiently detect that some other task has already done the required work. 3. Replace synchronize_sched_expedited()'s polling loop with funnel locking. 4. Replace stop_one_cpu() with stop_one_cpu_nowait() to avoid the latency hit from #1 above, also courtesy of Peter Zijlstra. 5. Abstract the counter handling. 6. Apply the newly abstracted counter handling to synchronize_rcu_expedited(). 7. Abstract the funnel locking. 8. Fix a stupid type error in synchronize_sched_expedited(). 9. Replace synchronize_rcu_expedited()'s polling with the newly abstracted funnel locking. 10. Apply the abstracted counter handling to _rcu_barrier(). 11. Consolidate the last expedited open-coded expedited memory barrier into the counter handling. 12. Extend the funnel locking to the rcu_data structure in order to further increase scalability. 13. Add stall warnings to synchronize_sched_expedited(). 14. Document the newly added stall warnings. Thanx, Paul ------------------------------------------------------------------------ b/Documentation/RCU/stallwarn.txt | 17 + b/include/trace/events/rcu.h | 1 b/kernel/rcu/tree.c | 581 +++++++++++++++++++------------------- b/kernel/rcu/tree.h | 31 +- b/kernel/rcu/tree_plugin.h | 53 +-- b/kernel/rcu/tree_trace.c | 25 - 6 files changed, 369 insertions(+), 339 deletions(-)