• Patrick Bellasi's avatar
    sched/uclamp: Propagate system defaults to the root group · 7274a5c1
    Patrick Bellasi authored
    The clamp values are not tunable at the level of the root task group.
    That's for two main reasons:
    
     - the root group represents "system resources" which are always
       entirely available from the cgroup standpoint.
    
     - when tuning/restricting "system resources" makes sense, tuning must
       be done using a system wide API which should also be available when
       control groups are not.
    
    When a system wide restriction is available, cgroups should be aware of
    its value in order to know exactly how much "system resources" are
    available for the subgroups.
    
    Utilization clamping supports already the concepts of:
    
     - system defaults: which define the maximum possible clamp values
       usable by tasks.
    
     - effective clamps: which allows a parent cgroup to constraint (maybe
       temporarily) its descendants without losing the information related
       to the values "requested" from them.
    
    Exploit these two concepts and bind them together in such a way that,
    whenever system default are tuned, the new values are propagated to
    (possibly) restrict or relax the "effective" value of nested cgroups.
    
    When cgroups are in use, force an update of all the RUNNABLE tasks.
    Otherwise, keep things simple and do just a lazy update next time each
    task will be enqueued.
    Do that since we assume a more strict resource control is required when
    cgroups are in use. This allows also to keep "effective" clamp values
    updated in case we need to expose them to user-space.
    Signed-off-by: default avatarPatrick Bellasi <patrick.bellasi@arm.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: default avatarMichal Koutny <mkoutny@suse.com>
    Acked-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Alessio Balsini <balsini@android.com>
    Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
    Cc: Joel Fernandes <joelaf@google.com>
    Cc: Juri Lelli <juri.lelli@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Morten Rasmussen <morten.rasmussen@arm.com>
    Cc: Paul Turner <pjt@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Quentin Perret <quentin.perret@arm.com>
    Cc: Rafael J . Wysocki <rafael.j.wysocki@intel.com>
    Cc: Steve Muckle <smuckle@google.com>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Todd Kjos <tkjos@google.com>
    Cc: Vincent Guittot <vincent.guittot@linaro.org>
    Cc: Viresh Kumar <viresh.kumar@linaro.org>
    Link: https://lkml.kernel.org/r/20190822132811.31294-4-patrick.bellasi@arm.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    7274a5c1
core.c 195 KB