lkml.org 
[lkml]   [2020]   [Jul]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v6 0/2] sched/uclamp: new sysctl for default RT boost value
    Date
    This series introduces a new sysctl_sched_uclamp_util_min_rt_default to control
    at runtime the default boost value of RT tasks.

    Full rationale is in patch 1 commit message.

    v6 has changed the approach taken in v5 [1] and earlier by moving away from the
    lazy update approach that touched the fast path to a synchronous one that is
    performed when the write to the procfs entry is done.

    for_each_process_thread() is used to update all existing RT tasks now. And to
    handle the race with a concurrent fork() we introduce sched_post_fork() in
    _do_fork() to ensure a concurrently forked RT tasks gets the right update.

    To ensure the race condition is handled correctly, I wrote this small (simple!)
    test program:

    https://github.com/qais-yousef/uclamp_test.git

    And ran it on 4core x86 system and 8core big.LITTLE juno-r2 system.

    From juno-r2 run, 10 iterations each run:

    Without sched_post_fork()

    # ./run.sh
    pid 3105 has 336 but default should be 337
    pid 13162 has 336 but default should be 337
    pid 23256 has 338 but default should be 339
    All forked RT tasks had the correct uclamp.min
    pid 10638 has 334 but default should be 335
    All forked RT tasks had the correct uclamp.min
    pid 30683 has 335 but default should be 336
    pid 8247 has 336 but default should be 337
    pid 18170 has 1024 but default should be 334
    pid 28274 has 336 but default should be 337

    With sched_post_fork()

    # ./run.sh
    All forked RT tasks had the correct uclamp.min
    All forked RT tasks had the correct uclamp.min
    All forked RT tasks had the correct uclamp.min
    All forked RT tasks had the correct uclamp.min
    All forked RT tasks had the correct uclamp.min
    All forked RT tasks had the correct uclamp.min
    All forked RT tasks had the correct uclamp.min
    All forked RT tasks had the correct uclamp.min
    All forked RT tasks had the correct uclamp.min
    All forked RT tasks had the correct uclamp.min

    Thanks

    --
    Qais Yousef

    [1] https://lore.kernel.org/lkml/20200511154053.7822-1-qais.yousef@arm.com/

    CC: Jonathan Corbet <corbet@lwn.net>
    CC: Juri Lelli <juri.lelli@redhat.com>
    CC: Vincent Guittot <vincent.guittot@linaro.org>
    CC: Dietmar Eggemann <dietmar.eggemann@arm.com>
    CC: Steven Rostedt <rostedt@goodmis.org>
    CC: Ben Segall <bsegall@google.com>
    CC: Mel Gorman <mgorman@suse.de>
    CC: Luis Chamberlain <mcgrof@kernel.org>
    CC: Kees Cook <keescook@chromium.org>
    CC: Iurii Zaikin <yzaikin@google.com>
    CC: Quentin Perret <qperret@google.com>
    CC: Valentin Schneider <valentin.schneider@arm.com>
    CC: Patrick Bellasi <patrick.bellasi@matbug.net>
    CC: Pavan Kondeti <pkondeti@codeaurora.org>
    CC: linux-doc@vger.kernel.org
    CC: linux-kernel@vger.kernel.org
    CC: linux-fsdevel@vger.kernel.org

    Qais Yousef (2):
    sched/uclamp: Add a new sysctl to control RT default boost value
    Documentation/sysctl: Document uclamp sysctl knobs

    Documentation/admin-guide/sysctl/kernel.rst | 54 ++++++++
    include/linux/sched/sysctl.h | 1 +
    include/linux/sched/task.h | 1 +
    kernel/fork.c | 1 +
    kernel/sched/core.c | 132 ++++++++++++++++++--
    kernel/sysctl.c | 7 ++
    6 files changed, 189 insertions(+), 7 deletions(-)

    --
    2.17.1

    \
     
     \ /
      Last update: 2020-07-06 16:30    [W:8.754 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site