lkml.org 
[lkml]   [2015]   [Nov]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 0/4] CFS idle injection
    Date
    We are entering a very power and thermal constrained environment. Often
    we have more horsepower than we can use due to these limits. But
    on the other side we all demand performance when needed. The reserved
    performance headroom does not come free. To conserve energy, more and
    more SoC blocks can be power gated at runtime. However, randomly
    scheduled idle time on individual CPU may not result in good power
    saving in that the common circuits such as memory controller can only be
    in the low power state when all cores are in idle at the same time.

    Frequency-Voltage scaling presents a good solution but its efficiency
    is limited to certain range.

    In general, only synchronized idle will allow SoC to enter the
    deepest power states. For most modern processors, deep idle power is
    nearly negligible to the peak running power. This implies if we can
    duty cycle the CPU between running and the deepest idle state, we can
    scale performance and power almost linearly. Combined with the most
    efficient frequency point, idle injection presents a way to cap power
    efficiently.

    Intel powerclamp driver was introduced a while ago to address the
    problem but is broken in the sense of turning off idle ticks in the
    forced idle period. https://lkml.org/lkml/2014/12/18/369

    It was suggested to replace the current kthread play idle loop with a
    timer based runqueue throttling scheme. I finally got around to
    implement this and code looks much simpler and more effective.

    Test results were presented at LinuxCon where data/graph can be seen
    from slides #18 and later.
    http://events.linuxfoundation.org/sites/events/files/slides/LinuxCon_Japan_2015_idle_injection1_0.pdf

    RFC discussions are here.
    https://lkml.org/lkml/2015/11/2/756

    Thanks,

    Jacob



    Jacob Pan (4):
    ktime: add a roundup function
    timer: relax tick stop in idle entry
    sched: introduce synchronized idle injection
    sched: add trace event for idle injection

    include/linux/ktime.h | 10 ++
    include/linux/sched.h | 16 ++
    include/linux/sched/sysctl.h | 5 +
    include/trace/events/sched.h | 25 +++
    init/Kconfig | 10 ++
    kernel/sched/fair.c | 356 ++++++++++++++++++++++++++++++++++++++++++-
    kernel/sched/sched.h | 54 ++++++-
    kernel/sysctl.c | 21 +++
    kernel/time/tick-sched.c | 2 +-
    9 files changed, 493 insertions(+), 6 deletions(-)

    --
    1.9.1



    \
     
     \ /
      Last update: 2015-11-13 21:21    [W:2.678 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site