All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Du, Yuyang" <yuyang.du@intel.com>
To: Peter Zijlstra <peterz@infradead.org>,
	Morten Rasmussen <morten.rasmussen@arm.com>
Cc: Ingo Molnar <mingo@redhat.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"Van De Ven, Arjan" <arjan.van.de.ven@intel.com>,
	"Brown, Len" <len.brown@intel.com>,
	"Wysocki, Rafael J" <rafael.j.wysocki@intel.com>
Subject: RE: [RFC] Splitting scheduler into two halves
Date: Mon, 3 Mar 2014 09:56:55 +0000	[thread overview]
Message-ID: <0DA73B5D686AEC4AAEF6054BE04DA1CD116CE029@SHSMSX103.ccr.corp.intel.com> (raw)
In-Reply-To: <20140228120147.GJ3104@twins.programming.kicks-ass.net>

Well, my two cents in response (sorry, I will use a Linux style mail client next time):

1) Top half and bottom half do have interaction with each other. They share information, top half provides some measurement/average to load balance. Good news is they don't interleave operation. Splitting them does not mean they must be self-inclusive to each other.

2) What I have done is a starting point. What really matters is some good design from that starting point. I myself have been working on workload consolidation (or task packing, you name it) for a while. I did have an intent to do a complete bottom half. So, encapsulating the load balance in a class allows it to be replaced easier. But this had already been the last thing I want even if I can do that (before the very first email), because it won't make "a better world".

Lets explore the design space a little bit. For load balance, its function is like:

Tasks -> be balanced -> on CPUs

Be more specific:

[ which_1 ] tasks -> be balanced -> on [ which_2 ] CPUs

Which_1 can be: fair or rt by priority. ARM people may want "small/light" or "big/heavy" by load tracking (fortunately, we don't need that). Maybe others.

Which_2 can be: all, or some.

Which_1 * which_2 have many combinations, each of which has this in common: XX tasks -> be balanced -> on YY CPUs (XX defined by bottom half but got from top half, the other done by bottom half).

So it looks like we need a class, and we need a few implementations (each for a combination) in a *hierarchy* and work together.

I don't have the final answer yet, this is why I said I am continuing to redesign and refactor it. But it really looks that modularity should/can be applied here to help realize so complex a system.

Thanks,
Yuyang

      reply	other threads:[~2014-03-03  9:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-28  2:13 [RFC] Splitting scheduler into two halves Du, Yuyang
2014-02-28 10:29 ` Morten Rasmussen
2014-02-28 11:44   ` Peter Zijlstra
2014-02-28 12:01     ` Peter Zijlstra
2014-03-03  9:56       ` Du, Yuyang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0DA73B5D686AEC4AAEF6054BE04DA1CD116CE029@SHSMSX103.ccr.corp.intel.com \
    --to=yuyang.du@intel.com \
    --cc=arjan.van.de.ven@intel.com \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=morten.rasmussen@arm.com \
    --cc=peterz@infradead.org \
    --cc=rafael.j.wysocki@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.