lkml.org 
[lkml]   [2015]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [RFCv3 PATCH 33/48] sched: Energy-aware wake-up task placement
On Tue, Mar 24, 2015 at 01:00:58PM +0000, Peter Zijlstra wrote:
> On Wed, Feb 04, 2015 at 06:31:10PM +0000, Morten Rasmussen wrote:
> > @@ -5138,6 +5224,10 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_f
> > prev_cpu = cpu;
> >
> > if (sd_flag & SD_BALANCE_WAKE) {
> > + if (energy_aware()) {
> > + new_cpu = energy_aware_wake_cpu(p);
> > + goto unlock;
> > + }
> > new_cpu = select_idle_sibling(p, prev_cpu);
> > goto unlock;
> > }
>
> So that is fundamentally wrong I think. We only care about power aware
> scheduling when U < 1, after that we should do the normal thing. This
> setup does not allow for that.

Right, I agree that we should preferably do the normal thing for U ~= 1.
We can restructure the wake-up path to follow that pattern, but we need
to know U beforehand to choose the right path. U isn't just
get_cpu_usage(prev_cpu) but some broader view of the of the cpu
utilizations. For example, prev_cpu might be full, but everyone else is
idle so we still want to try to do an energy aware wake-up on some other
cpu. U could be the minium utilization of all cpus in prev_cpu's
sd_llc, which is somewhat similar to what energy_aware_wake_cpu() does.

I guess energy_aware_wake_cpu() could be refactored to call
select_idle_sibling() if it find U ~= 1?


\
 
 \ /
  Last update: 2015-03-24 17:01    [W:0.089 / U:0.560 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site