From: Alex Shi <alex.shi@intel.com>
To: Paul Turner <pjt@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
torvalds@linux-foundation.org, mingo@redhat.com,
tglx@linutronix.de, akpm@linux-foundation.org,
arjan@linux.intel.com, bp@alien8.de, namhyung@kernel.org,
efault@gmx.de, vincent.guittot@linaro.org,
gregkh@linuxfoundation.org, preeti@linux.vnet.ibm.com,
viresh.kumar@linaro.org, linux-kernel@vger.kernel.org
Subject: Re: [patch v4 07/18] sched: set initial load avg of new forked task
Date: Wed, 20 Feb 2013 13:13:27 +0800 [thread overview]
Message-ID: <51245B77.6000509@intel.com> (raw)
In-Reply-To: <CAPM31RKf6Gint-fPxfuFkXxxbpJfkk=5=5v3W0uxvTnnvOoM-A@mail.gmail.com>
> This is my concern about making this a special case with the
> introduction ENQUEUE_NEWTASK flag; enqueue jumps through enough hoops
> as it is.
>
> I still don't see why we can't resolve this at init time in
> __sched_fork(); your patch above just moves an explicit initialization
> of load_avg_contrib into the enqueue path. Adding a call to
> __update_task_entity_contrib() to the previous alternate suggestion
> would similarly seem to resolve this?
>
Without ENQUEUE_NEWTASK flag, we can use the following patch. That embeds
the new fork with a implicate way.
but since the newtask flag just follows existing enqueue path, it also
looks natural and is a explicit way.
I am ok for alternate of solutions.
=======
>From 0f5dd6babe899e27cfb78ea49d337e4f0918591b Mon Sep 17 00:00:00 2001
From: Alex Shi <alex.shi@intel.com>
Date: Wed, 20 Feb 2013 12:51:28 +0800
Subject: [PATCH 02/15] sched: set initial load avg of new forked task
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.
Signed-off-by: Alex Shi <alex.shi@intel.com>
---
kernel/sched/core.c | 2 ++
kernel/sched/fair.c | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 1743746..93a7590 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -1648,6 +1648,8 @@ void sched_fork(struct task_struct *p)
p->sched_reset_on_fork = 0;
}
+ 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.
*/
if (unlikely(se->avg.decay_count <= 0)) {
se->avg.last_runnable_update = rq_of(cfs_rq)->clock_task;
--
1.7.12
next prev parent reply other threads:[~2013-02-20 5:13 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-24 3:06 [patch v4 0/18] sched: simplified fork, release load avg and power awareness scheduling Alex Shi
2013-01-24 3:06 ` [patch v4 01/18] sched: set SD_PREFER_SIBLING on MC domain to reduce a domain level Alex Shi
2013-02-12 10:11 ` Peter Zijlstra
2013-02-13 13:22 ` Alex Shi
2013-02-15 12:38 ` Peter Zijlstra
2013-02-16 5:16 ` Alex Shi
2013-02-13 14:17 ` Alex Shi
2013-01-24 3:06 ` [patch v4 02/18] sched: select_task_rq_fair clean up Alex Shi
2013-02-12 10:14 ` Peter Zijlstra
2013-02-13 14:44 ` Alex Shi
2013-01-24 3:06 ` [patch v4 03/18] sched: fix find_idlest_group mess logical Alex Shi
2013-02-12 10:16 ` Peter Zijlstra
2013-02-13 15:07 ` Alex Shi
2013-01-24 3:06 ` [patch v4 04/18] sched: don't need go to smaller sched domain Alex Shi
2013-01-24 3:06 ` [patch v4 05/18] sched: quicker balancing on fork/exec/wake Alex Shi
2013-02-12 10:22 ` Peter Zijlstra
2013-02-14 3:13 ` Alex Shi
2013-02-14 8:12 ` Preeti U Murthy
2013-02-14 14:08 ` Alex Shi
2013-02-15 13:00 ` Peter Zijlstra
2013-01-24 3:06 ` [patch v4 06/18] sched: give initial value for runnable avg of sched entities Alex Shi
2013-02-12 10:23 ` Peter Zijlstra
2013-01-24 3:06 ` [patch v4 07/18] sched: set initial load avg of new forked task Alex Shi
2013-02-12 10:26 ` Peter Zijlstra
2013-02-13 15:14 ` Alex Shi
2013-02-13 15:41 ` Paul Turner
2013-02-14 13:07 ` Alex Shi
2013-02-19 11:34 ` Paul Turner
2013-02-20 4:18 ` Preeti U Murthy
2013-02-20 5:13 ` Alex Shi [this message]
2013-01-24 3:06 ` [patch v4 08/18] Revert "sched: Introduce temporary FAIR_GROUP_SCHED dependency for load-tracking" Alex Shi
2013-02-12 10:27 ` Peter Zijlstra
2013-02-13 15:23 ` Alex Shi
2013-02-13 15:45 ` Paul Turner
2013-02-14 3:07 ` Preeti U Murthy
2013-01-24 3:06 ` [patch v4 09/18] sched: add sched_policies in kernel Alex Shi
2013-02-12 10:36 ` Peter Zijlstra
2013-02-13 15:41 ` Alex Shi
2013-01-24 3:06 ` [patch v4 10/18] sched: add sysfs interface for sched_policy selection Alex Shi
2013-01-24 3:06 ` [patch v4 11/18] sched: log the cpu utilization at rq Alex Shi
2013-02-12 10:39 ` Peter Zijlstra
2013-02-14 3:10 ` Alex Shi
2013-01-24 3:06 ` [patch v4 12/18] sched: add power aware scheduling in fork/exec/wake Alex Shi
2013-01-24 3:06 ` [patch v4 13/18] sched: packing small tasks in wake/exec balancing Alex Shi
2013-01-24 3:06 ` [patch v4 14/18] sched: add power/performance balance allowed flag Alex Shi
2013-01-24 3:06 ` [patch v4 15/18] sched: pull all tasks from source group Alex Shi
2013-01-24 3:06 ` [patch v4 16/18] sched: don't care if the local group has capacity Alex Shi
2013-01-24 3:06 ` [patch v4 17/18] sched: power aware load balance, Alex Shi
2013-01-24 3:07 ` [patch v4 18/18] sched: lazy power balance Alex Shi
2013-01-24 9:44 ` [patch v4 0/18] sched: simplified fork, release load avg and power awareness scheduling Borislav Petkov
2013-01-24 15:07 ` Alex Shi
2013-01-27 2:41 ` Alex Shi
2013-01-27 4:36 ` Mike Galbraith
2013-01-27 10:35 ` Borislav Petkov
2013-01-27 13:25 ` Alex Shi
2013-01-27 15:51 ` Mike Galbraith
2013-01-28 5:17 ` Mike Galbraith
2013-01-28 5:51 ` Alex Shi
2013-01-28 6:15 ` Mike Galbraith
2013-01-28 6:42 ` Mike Galbraith
2013-01-28 7:20 ` Mike Galbraith
2013-01-29 1:17 ` Alex Shi
2013-01-28 9:55 ` Borislav Petkov
2013-01-28 10:44 ` Mike Galbraith
2013-01-28 11:29 ` Borislav Petkov
2013-01-28 11:32 ` Mike Galbraith
2013-01-28 11:40 ` Mike Galbraith
2013-01-28 15:22 ` Borislav Petkov
2013-01-28 15:55 ` Mike Galbraith
2013-01-29 1:38 ` Alex Shi
2013-01-29 1:32 ` Alex Shi
2013-01-29 1:36 ` Alex Shi
2013-01-28 15:47 ` Mike Galbraith
2013-01-29 1:45 ` Alex Shi
2013-01-29 4:03 ` Mike Galbraith
2013-01-29 2:27 ` Alex Shi
2013-01-27 10:40 ` Borislav Petkov
2013-01-27 14:03 ` Alex Shi
2013-01-28 5:19 ` Alex Shi
2013-01-28 6:49 ` Mike Galbraith
2013-01-28 7:17 ` Alex Shi
2013-01-28 7:33 ` Mike Galbraith
2013-01-29 6:02 ` Alex Shi
2013-01-28 1:28 ` Alex Shi
2013-02-04 1:35 ` Alex Shi
2013-02-04 11:09 ` Ingo Molnar
2013-02-05 2:26 ` Alex Shi
2013-02-06 5:08 ` 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=51245B77.6000509@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=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;
as well as URLs for NNTP newsgroup(s).