lkml.org 
[lkml]   [2010]   [Mar]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCHSET] cpuhog: implement and use cpuhog
    Date
    Hello, all.

    This patchset implements cpuhog which is a simplistic cpu
    monopolization mechanism and reimplements stop_machine() and replaces
    migration_thread with it.

    This allows stop_machine() to be simpler and much more efficient on
    very large machines without using more resources while also making the
    rather messy overloaded migration_thread usages cleaner.

    This should solve the slow boot problem[1] caused by repeated
    stop_machine workqueue creation/destruction reported by Dimitri
    Sivanich.

    The patchset is currently on top of v2.6.33 and contains the following
    patches.

    0001-cpuhog-implement-cpuhog.patch
    0002-stop_machine-reimplement-using-cpuhog.patch
    0003-scheduler-replace-migration_thread-with-cpuhog.patch
    0004-scheduler-kill-paranoia-check-in-synchronize_sched_e.patch

    0001 implements cpuhog. 0002 converts stop_machine. 0003 converts
    migration users and 0004 removes paranoia checks in
    synchronize_sched_expedited(). 0004 is done separately so that 0003
    can serve as a debug/bisection point.

    Tested cpu on/offlining, shutdown, all migration usage paths including
    RCU torture test at 0003 and 004 and everything seems to work fine
    here. Dimitri, can you please test whether this solves the problem
    you're seeing there?

    The tree is available in the following git tree.

    git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git cpuhog

    diffstat follows.

    Documentation/RCU/torture.txt | 10 -
    arch/s390/kernel/time.c | 1
    drivers/xen/manage.c | 14 -
    include/linux/cpuhog.h | 24 ++
    include/linux/rcutiny.h | 2
    include/linux/rcutree.h | 1
    include/linux/stop_machine.h | 20 --
    kernel/Makefile | 2
    kernel/cpu.c | 8
    kernel/cpuhog.c | 362 ++++++++++++++++++++++++++++++++++++++++++
    kernel/module.c | 14 -
    kernel/rcutorture.c | 2
    kernel/sched.c | 327 +++++++++----------------------------
    kernel/stop_machine.c | 162 ++++--------------
    14 files changed, 509 insertions(+), 440 deletions(-)

    Thanks.

    --
    tejun

    [1] http://thread.gmane.org/gmane.linux.kernel/957726


    \
     
     \ /
      Last update: 2010-03-08 16:57    [W:0.022 / U:30.876 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site