lkml.org 
[lkml]   [2009]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    Subject[PATCH -tip/core/rcu 1/6] Cleanups and fixes for RCU in face of heavy CPU-hotplug stress
    This patch set provides the following cleanups and fixes for RCU in
    workloads that involve lots of CPU hotplugging. Ingo, please reset
    core/rcu to 240ebbf before applying these patches.

    o Split Hierarchical RCU initialization into boot-time and
    CPU-hotplug pieces, so that other CPUs never see the data
    structures in the act of being stitched together.

    o Introduce a cpu_notifier() that works as does the current
    hotcpu_notifier(), but also notifies during boot time even
    if !HOTPLUG_CPU.

    o Make RCU use the new cpu_notifier() to simplify hotplug code
    and reduce the number of notifiers in use. (This also fixes
    the problem Ingo and Hugh found.)

    o Preemptable RCU had a bug due to its overly clever attempt
    to move counts from CPUs going offline. This is "unsafe
    at any speed", so remove the cleverness.

    o Since offline CPUs now can have non-zero counts, they must
    now be included in the tracing.

    o Fix typo in preemptable RCU's rcu_irq_enter() comment
    submitted by Josh Triplett.

    These pass tests combining rcutorture and continuous CPU-hotplug
    operations, in other words, no sleeping between successive CPU-hotplug
    operations. This set does not fix the bug involving deadlocks through
    rcutorture, kthread_stop(), and migration threads. However, this bug
    does not affect production systems, so should not stand in the way of
    applying these patches.

    Thanx, Paul

    b/include/linux/cpu.h | 18 +++++++++-----
    b/kernel/rcupdate.c | 16 ++++++++++++-
    b/kernel/rcupreempt.c | 25 +-------------------
    b/kernel/rcupreempt_trace.c | 6 ++--
    b/kernel/rcutree.c | 54 ++++++++++++++++++++++++++------------------
    kernel/rcupreempt.c | 12 +--------
    kernel/rcutree.c | 18 ++++----------
    7 files changed, 72 insertions(+), 77 deletions(-)


    \
     
     \ /
      Last update: 2009-08-15 18:55    [W:4.137 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site