From: Josef Bacik <josef@toxicpanda.com>
To: mingo@redhat.com, peterz@infradead.org,
linux-kernel@vger.kernel.org, umgwanakikbuti@gmail.com,
tj@kernel.org, kernel-team@fb.com
Cc: Josef Bacik <jbacik@fb.com>
Subject: [PATCH 5/7] sched/fair: use the task weight instead of average in effective_load
Date: Fri, 14 Jul 2017 13:21:02 +0000 [thread overview]
Message-ID: <1500038464-8742-6-git-send-email-josef@toxicpanda.com> (raw)
In-Reply-To: <1500038464-8742-1-git-send-email-josef@toxicpanda.com>
From: Josef Bacik <jbacik@fb.com>
This is a preparation patch for the next patch. When adding a new task to a
cfs_rq we do not add our load_avg to the existing cfs_rq, we add our weight, and
that changes how the load average moves as the cfs_rq/task runs. Using the load
average in our effective_load calculation is going to be slightly inaccurate
from what we want to be computing (the actual effect of waking this task on this
cpu), and is going to bias us towards always affinity waking tasks.
Signed-off-by: Josef Bacik <jbacik@fb.com>
---
kernel/sched/fair.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index ee8dced..4e4fc5d 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -5646,7 +5646,7 @@ static int wake_affine(struct sched_domain *sd, struct task_struct *p,
s64 this_eff_load, prev_eff_load;
int idx, this_cpu;
struct task_group *tg;
- unsigned long weight;
+ unsigned long weight, avg;
int balanced;
idx = sd->wake_idx;
@@ -5661,14 +5661,15 @@ static int wake_affine(struct sched_domain *sd, struct task_struct *p,
*/
if (sync) {
tg = task_group(current);
- weight = current->se.avg.load_avg;
+ weight = se_weight(¤t->se);
+ avg = current->se.avg.load_avg;
- this_load += effective_load(tg, this_cpu, -weight, -weight);
- load += effective_load(tg, prev_cpu, 0, -weight);
+ this_load += effective_load(tg, this_cpu, -avg, -weight);
}
tg = task_group(p);
- weight = p->se.avg.load_avg;
+ weight = se_weight(&p->se);
+ avg = p->se.avg.load_avg;
/*
* In low-load situations, where prev_cpu is idle and this_cpu is idle
@@ -5687,7 +5688,7 @@ static int wake_affine(struct sched_domain *sd, struct task_struct *p,
if (this_load > 0) {
this_eff_load *= this_load +
- effective_load(tg, this_cpu, weight, weight);
+ effective_load(tg, this_cpu, avg, weight);
prev_eff_load *= load;
}
--
2.9.3
next prev parent reply other threads:[~2017-07-14 13:21 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-14 13:20 [PATCH 0/7][RESEND] Fix cpu imbalance with equal weighted groups Josef Bacik
2017-07-14 13:20 ` [PATCH 1/7] sched/fair: use reweight_entity to reweight tasks Josef Bacik
2017-07-31 10:45 ` Peter Zijlstra
2017-07-14 13:20 ` [PATCH 2/7] sched/fair: calculate runnable_weight slightly differently Josef Bacik
2017-07-31 11:39 ` Peter Zijlstra
2017-07-14 13:21 ` [PATCH 3/7] sched/fair: fix definitions of effective load Josef Bacik
2017-07-14 13:21 ` [PATCH 4/7] sched/fair: don't include effective load of process in the old cpu load Josef Bacik
2017-07-14 13:21 ` Josef Bacik [this message]
2017-07-14 13:21 ` [PATCH 6/7] sched/fair: rework effective_load Josef Bacik
2017-07-14 13:21 ` [PATCH 7/7] sched/fair: don't wake affine recently load balanced tasks Josef Bacik
2017-08-01 10:51 ` Brendan Jackman
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=1500038464-8742-6-git-send-email-josef@toxicpanda.com \
--to=josef@toxicpanda.com \
--cc=jbacik@fb.com \
--cc=kernel-team@fb.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=tj@kernel.org \
--cc=umgwanakikbuti@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®