|
|
Subscribe / Log in / New account

sched/fair: A bit of a cgroup/PELT overhaul (again)..

From:  Peter Zijlstra <peterz-AT-infradead.org>
To:  mingo-AT-kernel.org, linux-kernel-AT-vger.kernel.org, tj-AT-kernel.org
Subject:  [RFC][PATCH 00/14] sched/fair: A bit of a cgroup/PELT overhaul (again)..
Date:  Fri, 12 May 2017 18:44:16 +0200
Message-ID:  <20170512164416.108843033@infradead.org>
Cc:  torvalds-AT-linux-foundation.org, vincent.guittot-AT-linaro.org, efault-AT-gmx.de, pjt-AT-google.com, clm-AT-fb.com, dietmar.eggemann-AT-arm.com, morten.rasmussen-AT-arm.com, bsegall-AT-google.com, yuyang.du-AT-intel.com, peterz-AT-infradead.org


Hi all,

So after staring at all that PELT stuff and working my way through it again:

  https://lkml.kernel.org/r/20170505154117.6zldxuki2fgyo53n...

I started doing some patches to fix some of the identified broken.

So here are a few too many patches that do:

 - fix 'reweight_entity' to instantly propagate the change in se->load.weight.

 - rewrite/fix the propagate on migrate (attach/detach)

 - introduce the hierarchical runnable_load_avg, as proposed by Tejun.

 - synchronous detach for runnable migrates

 - aligns the PELT windows between a cfs_rq and all its se's

 - deals with random fallout from the above (some of this needs folding back
   and reordering, but its all well past the point I should post this anyway).


IIRC pjt recently mentioned the reweight_entity thing, and I have very vague
memories he once talked about the window alignment thing -- which I only
remembered after (very painfully) having discovered I really needed that.

In any case, the reason I did the reweight_entity thing first, is because I
feel that is the right place to also propagate the hierarchical runnable_load,
as that is the natural place where a group's cfs_rq is coupled to its
sched_entity.

And the hierachical runnable_load needs that coupling. TJ did it by hijacking
the attach/detach migrate code, which I didn't much like.  In any case, all
that got me looking at said attach/detach migrate code and find pain. So I went
and fixed that too.


Much thanks to Vincent and Dietmar for poking at early versions and reporting
failure and comments.

This still hasn't had a lot of testing, but its not obviously insane anymore
for the few tests we did do on it. Thread carefully though, a lot of code changed.


This can also be found here:

  git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git sched/experimental


(my git tree is unsable and gets rebased a _lot_)

---
 include/linux/sched.h |    3 
 kernel/sched/debug.c  |   18 -
 kernel/sched/fair.c   |  811 +++++++++++++++++++++++++++++++-------------------
 kernel/sched/sched.h  |   19 -
 4 files changed, 547 insertions(+), 304 deletions(-)





Copyright © 2017, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds