From: Alex Shi <alex.shi@intel.com>
To: Paul Turner <pjt@google.com>
Cc: "Ingo Molnar" <mingo@redhat.com>,
"Peter Zijlstra" <peterz@infradead.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Borislav Petkov" <bp@alien8.de>,
"Namhyung Kim" <namhyung@kernel.org>,
"Mike Galbraith" <efault@gmx.de>,
"Morten Rasmussen" <morten.rasmussen@arm.com>,
"Vincent Guittot" <vincent.guittot@linaro.org>,
"Preeti U Murthy" <preeti@linux.vnet.ibm.com>,
"Viresh Kumar" <viresh.kumar@linaro.org>,
LKML <linux-kernel@vger.kernel.org>,
"Mel Gorman" <mgorman@suse.de>, "Rik van Riel" <riel@redhat.com>,
"Michael Wang" <wangyun@linux.vnet.ibm.com>,
"Jason Low" <jason.low2@hp.com>,
"Changlong Xie" <changlongx.xie@intel.com>,
sgruszka@redhat.com, "Frédéric Weisbecker" <fweisbec@gmail.com>
Subject: Re: [patch v8 6/9] sched: compute runnable load avg in cpu_load and cpu_avg_load_per_task
Date: Tue, 18 Jun 2013 11:44:07 +0800 [thread overview]
Message-ID: <51BFD787.5020708@intel.com> (raw)
In-Reply-To: <CAPM31RKHtEYsNV+kzxFpH=55dLaFn1jcQcWD4qYAdHrW_xN+8A@mail.gmail.com>
On 06/18/2013 07:00 AM, Paul Turner wrote:
> On Mon, Jun 17, 2013 at 6:57 AM, Alex Shi <alex.shi@intel.com> wrote:
>> > On 06/17/2013 08:17 PM, Paul Turner wrote:
>>> >> On Mon, Jun 17, 2013 at 3:51 AM, Paul Turner <pjt@google.com> wrote:
>>>> >>> On Fri, Jun 7, 2013 at 12:20 AM, Alex Shi <alex.shi@intel.com> wrote:
>>>>> >>>> They are the base values in load balance, update them with rq runnable
>>>>> >>>> load average, then the load balance will consider runnable load avg
>>>>> >>>> naturally.
>>>>> >>>>
>>>>> >>>> We also try to include the blocked_load_avg as cpu load in balancing,
>>>>> >>>> but that cause kbuild performance drop 6% on every Intel machine, and
>>>>> >>>> aim7/oltp drop on some of 4 CPU sockets machines.
>>>>> >>>>
>>>> >>>
>>>> >>> This looks fine.
>>>> >>>
>>>> >>> Did you try including blocked_load_avg in only get_rq_runnable_load()
>>>> >>> [ and not weighted_cpuload() which is called by new-idle ]?
>>> >>
>>> >> Looking at this more this feels less correct since you're taking
>>> >> averages of averages.
>>> >>
>>> >> This was previously discussed at:
>>> >> https://lkml.org/lkml/2013/5/6/109
>>> >>
>>> >> And you later replied suggesting this didn't seem to hurt; what's the
>>> >> current status there?
>> >
>> > Yes, your example show the blocked_load_avg value.
>> > So I had given a patch for review at that time before do detailed
>> > testing. https://lkml.org/lkml/2013/5/7/66
>> >
>> > But in detailed testing, the patch cause a big performance regression.
>> > When I look into for details. I found some cpu in kbuild just had a big
>> > blocked_load_avg, with a very small runnable_load_avg value.
>> >
>> > Seems accumulating current blocked_load_avg into cpu load isn't a good
>> > idea. Because:
> So I think this describes an alternate implementation to the one suggested in:
> https://lkml.org/lkml/2013/5/7/66
>
> Specifically, we _don't_ want to accumulate into cpu-load. Taking an
> "average of the average" loses the mobility that the new
> representation allows.
>
>> > 1, The blocked_load_avg is decayed same as runnable load, sometime is
>> > far bigger than runnable load, that drive tasks to other idle or slight
>> > load cpu, than cause both performance and power issue. But if the
>> > blocked load is decayed too fast, it lose its effect.
> This is why the idea would be to use an instantaneous load in
> weighted_cpuload() and one that incorporated averages on (wants a
> rename) get_rq_runnable_load().
>
> For non-instaneous load-indexes we're pulling for stability.
Paul, could I summary your point here:
keep current weighted_cpu_load, but add blocked load avg in
get_rq_runnable_load?
I will test this change.
>
>> > 2, Another issue of blocked load is that when waking up task, we can not
>> > know blocked load proportion of the task on rq. So, the blocked load is
>> > meaningless in wake affine decision.
> I think this is confusing two things:
>
> (a) A wake-idle wake-up
> (b) A wake-affine wake-up
what's I mean the wake affine is (b). Anyway, blocked load is no help on
the scenario.
>
> In (a) we do not care about the blocked load proportion, only whether
> a cpu is idle.
>
> But once (a) has failed we should absolutely care how much load is
> blocked in (b) as:
> - We know we're going to queue for bandwidth on the cpu [ otherwise
> we'd be in (a) ]
> - Blocked load predicts how much _other_ work is expected to also
> share the queue with us during the quantum
>
--
Thanks
Alex
next prev parent reply other threads:[~2013-06-18 3:45 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-07 7:20 [patch 0/9] sched: use runnable load avg in balance Alex Shi
2013-06-07 7:20 ` [patch v8 1/9] Revert "sched: Introduce temporary FAIR_GROUP_SCHED dependency for load-tracking" Alex Shi
2013-06-07 7:20 ` [patch v8 2/9] sched: move few runnable tg variables into CONFIG_SMP Alex Shi
2013-06-17 12:26 ` Paul Turner
2013-06-17 15:32 ` Alex Shi
2013-06-07 7:20 ` [patch v8 3/9] sched: set initial value of runnable avg for new forked task Alex Shi
2013-06-10 1:51 ` Gu Zheng
2013-06-14 10:02 ` Lei Wen
2013-06-14 13:59 ` Alex Shi
2013-06-15 12:09 ` Lei Wen
2013-06-17 0:33 ` Alex Shi
2013-06-20 10:23 ` Morten Rasmussen
2013-06-21 2:57 ` Lei Wen
2013-06-17 9:20 ` Peter Zijlstra
2013-06-17 12:26 ` Lei Wen
2013-06-17 12:33 ` Peter Zijlstra
2013-06-14 11:09 ` Paul Turner
2013-06-14 14:16 ` Alex Shi
2013-06-17 9:21 ` Peter Zijlstra
2013-06-17 9:39 ` Paul Turner
2013-06-17 13:00 ` Peter Zijlstra
2013-06-17 9:57 ` Alex Shi
2013-06-17 13:07 ` Peter Zijlstra
2013-06-17 13:23 ` Alex Shi
2013-06-07 7:20 ` [patch v8 4/9] sched: fix slept time double counting in enqueue entity Alex Shi
2013-06-17 11:51 ` Paul Turner
2013-06-17 15:41 ` Alex Shi
2013-06-20 1:43 ` Lei Wen
2013-06-20 1:46 ` Alex Shi
2013-06-20 2:46 ` Lei Wen
2013-06-20 14:59 ` Alex Shi
2013-06-21 2:30 ` Lei Wen
2013-06-21 2:39 ` Alex Shi
2013-06-21 2:50 ` Lei Wen
2013-06-21 8:56 ` Alex Shi
2013-06-21 9:18 ` Lei Wen
2013-06-21 11:09 ` Alex Shi
2013-06-21 13:26 ` Lei Wen
2013-06-07 7:20 ` [patch v8 5/9] sched: update cpu load after task_tick Alex Shi
2013-06-17 11:54 ` Paul Turner
2013-06-07 7:20 ` [patch v8 6/9] sched: compute runnable load avg in cpu_load and cpu_avg_load_per_task Alex Shi
2013-06-10 1:49 ` Gu Zheng
2013-06-10 2:01 ` Alex Shi
2013-06-10 2:05 ` Gu Zheng
2013-06-17 10:51 ` Paul Turner
2013-06-17 12:17 ` Paul Turner
2013-06-17 13:39 ` Peter Zijlstra
2013-06-17 13:59 ` Alex Shi
2013-06-17 13:57 ` Alex Shi
2013-06-17 23:00 ` Paul Turner
2013-06-18 3:44 ` Alex Shi [this message]
2013-06-18 9:44 ` Alex Shi
2013-06-19 8:15 ` Alex Shi
2013-06-20 0:33 ` Alex Shi
2013-06-17 14:57 ` Alex Shi
2013-06-17 15:21 ` Alex Shi
2013-06-07 7:20 ` [patch v8 7/9] math64: add div64_ul macro Alex Shi
2013-06-07 7:20 ` [patch v8 8/9] sched: consider runnable load average in move_tasks Alex Shi
2013-06-17 10:58 ` Paul Turner
2013-06-17 14:01 ` Alex Shi
2013-06-17 14:15 ` Alex Shi
2013-06-17 13:59 ` Peter Zijlstra
2013-06-17 14:29 ` Alex Shi
2013-06-07 7:20 ` [patch v8 9/9] sched/tg: remove blocked_load_avg in balance Alex Shi
2013-06-17 9:38 ` Peter Zijlstra
2013-06-17 12:20 ` Paul Turner
2013-06-17 14:01 ` Peter Zijlstra
2013-06-19 9:49 ` Alex Shi
2013-06-20 1:33 ` Alex Shi
2013-06-08 2:37 ` [patch 0/9] sched: use runnable load avg " Alex Shi
2013-06-10 1:35 ` Alex Shi
2013-06-10 15:01 ` Peter Zijlstra
2013-06-11 3:30 ` Alex Shi
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=51BFD787.5020708@intel.com \
--to=alex.shi@intel.com \
--cc=akpm@linux-foundation.org \
--cc=bp@alien8.de \
--cc=changlongx.xie@intel.com \
--cc=efault@gmx.de \
--cc=fweisbec@gmail.com \
--cc=jason.low2@hp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=morten.rasmussen@arm.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=preeti@linux.vnet.ibm.com \
--cc=riel@redhat.com \
--cc=sgruszka@redhat.com \
--cc=tglx@linutronix.de \
--cc=vincent.guittot@linaro.org \
--cc=viresh.kumar@linaro.org \
--cc=wangyun@linux.vnet.ibm.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.