• Patrick Bellasi's avatar
    sched/uclamp: Add bucket local max tracking · 60daf9c1
    Patrick Bellasi authored
    Because of bucketization, different task-specific clamp values are
    tracked in the same bucket.  For example, with 20% bucket size and
    assuming to have:
    
      Task1: util_min=25%
      Task2: util_min=35%
    
    both tasks will be refcounted in the [20..39]% bucket and always boosted
    only up to 20% thus implementing a simple floor aggregation normally
    used in histograms.
    
    In systems with only few and well-defined clamp values, it would be
    useful to track the exact clamp value required by a task whenever
    possible. For example, if a system requires only 23% and 47% boost
    values then it's possible to track the exact boost required by each
    task using only 3 buckets of ~33% size each.
    
    Introduce a mechanism to max aggregate the requested clamp values of
    RUNNABLE tasks in the same bucket. Keep it simple by resetting the
    bucket value to its base value only when a bucket becomes inactive.
    Allow a limited and controlled overboosting margin for tasks recounted
    in the same bucket.
    
    In systems where the boost values are not known in advance, it is still
    possible to control the maximum acceptable overboosting margin by tuning
    the number of clamp groups. For example, 20 groups ensure a 5% maximum
    overboost.
    
    Remove the rq bucket initialization code since a correct bucket value
    is now computed when a task is refcounted into a CPU's rq.
    Signed-off-by: default avatarPatrick Bellasi <patrick.bellasi@arm.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.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: Tejun Heo <tj@kernel.org>
    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/20190621084217.8167-3-patrick.bellasi@arm.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    60daf9c1
core.c 180 KB