From: Alex Shi <alex.shi@intel.com>
To: Preeti U Murthy <preeti@linux.vnet.ibm.com>
Cc: torvalds@linux-foundation.org, mingo@redhat.com,
peterz@infradead.org, tglx@linutronix.de,
akpm@linux-foundation.org, arjan@linux.intel.com, bp@alien8.de,
pjt@google.com, namhyung@kernel.org, efault@gmx.de,
vincent.guittot@linaro.org, gregkh@linuxfoundation.org,
viresh.kumar@linaro.org, linux-kernel@vger.kernel.org,
morten.rasmussen@arm.com
Subject: Re: [patch v5 02/15] sched: set initial load avg of new forked task
Date: Mon, 25 Feb 2013 14:00:56 +0800 [thread overview]
Message-ID: <512AFE18.5020104@intel.com> (raw)
In-Reply-To: <5129F200.6080309@linux.vnet.ibm.com>
On 02/24/2013 06:57 PM, Preeti U Murthy wrote:
> Hi Alex,
>
> On 02/20/2013 11:50 AM, Alex Shi wrote:
>> On 02/18/2013 01:07 PM, Alex Shi wrote:
>>> New task has no runnable sum at its first runnable time, so its
>>> runnable load is zero. That makes burst forking balancing just select
>>> few idle cpus to assign tasks if we engage runnable load in balancing.
>>>
>>> Set initial load avg of new forked task as its load weight to resolve
>>> this issue.
>>>
>>
>> patch answering PJT's update here. that merged the 1st and 2nd patches
>> into one. other patches in serial don't need to change.
>>
>> =========
>> From 89b56f2e5a323a0cb91c98be15c94d34e8904098 Mon Sep 17 00:00:00 2001
>> From: Alex Shi <alex.shi@intel.com>
>> Date: Mon, 3 Dec 2012 17:30:39 +0800
>> Subject: [PATCH 01/14] sched: set initial value of runnable avg for new
>> forked task
>>
>> We need initialize the se.avg.{decay_count, load_avg_contrib} for a
>> new forked task.
>> Otherwise random values of above variables cause mess when do new task
>> enqueue:
>> enqueue_task_fair
>> enqueue_entity
>> enqueue_entity_load_avg
>>
>> and make forking balancing imbalance since incorrect load_avg_contrib.
>>
>> set avg.decay_count = 0, and avg.load_avg_contrib = se->load.weight to
>> resolve such issues.
>>
>> Signed-off-by: Alex Shi <alex.shi@intel.com>
>> ---
>> kernel/sched/core.c | 3 +++
>> kernel/sched/fair.c | 4 ++++
>> 2 files changed, 7 insertions(+)
>>
>> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
>> index 26058d0..1452e14 100644
>> --- a/kernel/sched/core.c
>> +++ b/kernel/sched/core.c
>> @@ -1559,6 +1559,7 @@ static void __sched_fork(struct task_struct *p)
>> #if defined(CONFIG_SMP) && defined(CONFIG_FAIR_GROUP_SCHED)
>> p->se.avg.runnable_avg_period = 0;
>> p->se.avg.runnable_avg_sum = 0;
>> + p->se.avg.decay_count = 0;
>> #endif
>> #ifdef CONFIG_SCHEDSTATS
>> memset(&p->se.statistics, 0, sizeof(p->se.statistics));
>> @@ -1646,6 +1647,8 @@ void sched_fork(struct task_struct *p)
>> p->sched_reset_on_fork = 0;
>> }
>>
> I think the following comment will help here.
> /* All forked tasks are assumed to have full utilization to begin with */
>> + p->se.avg.load_avg_contrib = p->se.load.weight;
>> +
>> if (!rt_prio(p->prio))
>> p->sched_class = &fair_sched_class;
>>
>> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
>> index 81fa536..cae5134 100644
>> --- a/kernel/sched/fair.c
>> +++ b/kernel/sched/fair.c
>> @@ -1509,6 +1509,10 @@ static inline void enqueue_entity_load_avg(struct cfs_rq *cfs_rq,
>> * We track migrations using entity decay_count <= 0, on a wake-up
>> * migration we use a negative decay count to track the remote decays
>> * accumulated while sleeping.
>> + *
>> + * When enqueue a new forked task, the se->avg.decay_count == 0, so
>> + * we bypass update_entity_load_avg(), use avg.load_avg_contrib initial
>> + * value: se->load.weight.
>
> I disagree with the comment.update_entity_load_avg() gets called for all
> forked tasks.
> enqueue_task_fair->update_entity_load_avg() during the second
> iteration.But __update_entity_load_avg() in update_entity_load_avg()
>
When goes 'enqueue_task_fair->update_entity_load_avg()' during the
second iteration. the se is changed.
That is different se.
--
Thanks Alex
next prev parent reply other threads:[~2013-02-25 6:00 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-18 5:07 [patch v5 0/15] power aware scheduling Alex Shi
2013-02-18 5:07 ` [patch v5 01/15] sched: set initial value for runnable avg of sched entities Alex Shi
2013-02-18 8:28 ` Joonsoo Kim
2013-02-18 9:16 ` Alex Shi
2013-02-18 5:07 ` [patch v5 02/15] sched: set initial load avg of new forked task Alex Shi
2013-02-20 6:20 ` Alex Shi
2013-02-24 10:57 ` Preeti U Murthy
2013-02-25 6:00 ` Alex Shi [this message]
2013-02-28 7:03 ` Preeti U Murthy
2013-02-25 7:12 ` Alex Shi
2013-02-18 5:07 ` [patch v5 03/15] Revert "sched: Introduce temporary FAIR_GROUP_SCHED dependency for load-tracking" Alex Shi
2013-02-18 5:07 ` [patch v5 04/15] sched: add sched balance policies in kernel Alex Shi
2013-02-20 9:37 ` Ingo Molnar
2013-02-20 13:40 ` Alex Shi
2013-02-20 15:41 ` Ingo Molnar
2013-02-21 1:43 ` Alex Shi
2013-02-18 5:07 ` [patch v5 05/15] sched: add sysfs interface for sched_balance_policy selection Alex Shi
2013-02-18 5:07 ` [patch v5 06/15] sched: log the cpu utilization at rq Alex Shi
2013-02-20 9:30 ` Peter Zijlstra
2013-02-20 12:09 ` Preeti U Murthy
2013-02-20 13:34 ` Peter Zijlstra
2013-02-20 14:36 ` Alex Shi
2013-02-20 14:33 ` Alex Shi
2013-02-20 15:20 ` Peter Zijlstra
2013-02-21 1:35 ` Alex Shi
2013-02-20 15:22 ` Peter Zijlstra
2013-02-25 2:26 ` Alex Shi
2013-03-22 8:49 ` Alex Shi
2013-02-20 12:19 ` Preeti U Murthy
2013-02-20 12:39 ` Alex Shi
2013-02-18 5:07 ` [patch v5 07/15] sched: add new sg/sd_lb_stats fields for incoming fork/exec/wake balancing Alex Shi
2013-02-20 9:38 ` Peter Zijlstra
2013-02-20 12:27 ` Alex Shi
2013-02-18 5:07 ` [patch v5 08/15] sched: move sg/sd_lb_stats struct ahead Alex Shi
2013-02-18 5:07 ` [patch v5 09/15] sched: add power aware scheduling in fork/exec/wake Alex Shi
2013-02-20 9:42 ` Peter Zijlstra
2013-02-20 12:09 ` Alex Shi
2013-02-20 13:36 ` Peter Zijlstra
2013-02-20 14:23 ` Alex Shi
2013-02-21 13:33 ` Peter Zijlstra
2013-02-21 14:40 ` Alex Shi
2013-02-22 8:54 ` Peter Zijlstra
2013-02-24 9:27 ` Alex Shi
2013-02-24 9:49 ` Preeti U Murthy
2013-02-24 11:55 ` Alex Shi
2013-02-24 17:51 ` Preeti U Murthy
2013-02-25 2:23 ` Alex Shi
2013-02-25 3:23 ` Mike Galbraith
2013-02-25 9:53 ` Alex Shi
2013-02-25 10:30 ` Mike Galbraith
2013-02-18 5:07 ` [patch v5 10/15] sched: packing transitory tasks in wake/exec power balancing Alex Shi
2013-02-18 8:44 ` Joonsoo Kim
2013-02-18 8:56 ` Alex Shi
2013-02-20 5:55 ` Alex Shi
2013-02-20 7:40 ` Mike Galbraith
2013-02-20 8:11 ` Alex Shi
2013-02-20 8:43 ` Mike Galbraith
2013-02-20 8:54 ` Alex Shi
2013-02-18 5:07 ` [patch v5 11/15] sched: add power/performance balance allow flag Alex Shi
2013-02-20 9:48 ` Peter Zijlstra
2013-02-20 12:04 ` Alex Shi
2013-02-20 13:37 ` Peter Zijlstra
2013-02-20 13:48 ` Peter Zijlstra
2013-02-20 14:08 ` Alex Shi
2013-02-20 13:52 ` Alex Shi
2013-02-20 12:12 ` Borislav Petkov
2013-02-20 14:20 ` Alex Shi
2013-02-20 15:22 ` Borislav Petkov
2013-02-21 1:32 ` Alex Shi
2013-02-21 9:42 ` Borislav Petkov
2013-02-21 14:52 ` Alex Shi
2013-02-18 5:07 ` [patch v5 12/15] sched: pull all tasks from source group Alex Shi
2013-02-18 5:07 ` [patch v5 13/15] sched: no balance for prefer_sibling in power scheduling Alex Shi
2013-02-18 5:07 ` [patch v5 14/15] sched: power aware load balance Alex Shi
2013-03-20 4:57 ` Preeti U Murthy
2013-03-21 7:43 ` Alex Shi
2013-03-21 8:41 ` Preeti U Murthy
2013-03-21 9:27 ` Alex Shi
2013-03-21 10:27 ` Preeti U Murthy
2013-03-22 1:30 ` Alex Shi
2013-03-22 5:14 ` Preeti U Murthy
2013-03-25 4:52 ` Alex Shi
2013-03-29 12:42 ` Preeti U Murthy
2013-03-29 13:39 ` Alex Shi
2013-03-30 11:25 ` Preeti U Murthy
2013-03-30 14:04 ` Alex Shi
2013-03-30 15:31 ` Preeti U Murthy
2013-02-18 5:07 ` [patch v5 15/15] sched: lazy power balance Alex Shi
2013-02-18 7:44 ` [patch v5 0/15] power aware scheduling Alex Shi
2013-02-19 12:08 ` Paul Turner
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=512AFE18.5020104@intel.com \
--to=alex.shi@intel.com \
--cc=akpm@linux-foundation.org \
--cc=arjan@linux.intel.com \
--cc=bp@alien8.de \
--cc=efault@gmx.de \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--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=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=vincent.guittot@linaro.org \
--cc=viresh.kumar@linaro.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome