From: Alex Shi <alex.shi@intel.com>
To: Alex Shi <alex.shi@intel.com>
Cc: mingo@redhat.com, peterz@infradead.org, tglx@linutronix.de,
akpm@linux-foundation.org, bp@alien8.de, pjt@google.com,
namhyung@kernel.org, efault@gmx.de, morten.rasmussen@arm.com,
vincent.guittot@linaro.org, preeti@linux.vnet.ibm.com,
viresh.kumar@linaro.org, linux-kernel@vger.kernel.org,
mgorman@suse.de, riel@redhat.com, wangyun@linux.vnet.ibm.com,
Jason Low <jason.low2@hp.com>
Subject: Re: [RFC patch 1/4] sched: change cfs_rq load avg to unsigned long
Date: Tue, 18 Jun 2013 12:56:08 +0800 [thread overview]
Message-ID: <51BFE868.9010008@intel.com> (raw)
In-Reply-To: <1370590169-24804-2-git-send-email-alex.shi@intel.com>
On 06/07/2013 03:29 PM, Alex Shi wrote:
> Since the 'u64 runnable_load_avg, blocked_load_avg' in cfs_rq struct are
> smaller than 'unsigned long' cfs_rq->load.weight. We don't need u64
> vaiables to describe them. unsigned long is more efficient and convenience.
>
update with a a bit clean up in tg_load_down()
---
>From e78ccc55dff1a5ef406a100f6453d0b8c86ca310 Mon Sep 17 00:00:00 2001
From: Alex Shi <alex.shi@intel.com>
Date: Thu, 6 Jun 2013 20:12:36 +0800
Subject: [PATCH 1/5] sched: change cfs_rq load avg to unsigned long
Since the 'u64 runnable_load_avg, blocked_load_avg' in cfs_rq struct are
smaller than 'unsigned long' cfs_rq->load.weight. We don't need u64
variables to describe them. unsigned long is more efficient and convenience.
Signed-off-by: Alex Shi <alex.shi@intel.com>
Reviewed-by: Paul Turner <pjt@google.com>
Tested-by: Vincent Guittot <vincent.guittot@linaro.org>
---
kernel/sched/debug.c | 4 ++--
kernel/sched/fair.c | 7 ++-----
kernel/sched/sched.h | 2 +-
3 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 75024a6..160afdc 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -211,9 +211,9 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq)
SEQ_printf(m, " .%-30s: %ld\n", "load", cfs_rq->load.weight);
#ifdef CONFIG_FAIR_GROUP_SCHED
#ifdef CONFIG_SMP
- SEQ_printf(m, " .%-30s: %lld\n", "runnable_load_avg",
+ SEQ_printf(m, " .%-30s: %ld\n", "runnable_load_avg",
cfs_rq->runnable_load_avg);
- SEQ_printf(m, " .%-30s: %lld\n", "blocked_load_avg",
+ SEQ_printf(m, " .%-30s: %ld\n", "blocked_load_avg",
cfs_rq->blocked_load_avg);
SEQ_printf(m, " .%-30s: %lld\n", "tg_load_avg",
(unsigned long long)atomic64_read(&cfs_rq->tg->load_avg));
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 395f57c..39a5bae 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -4186,12 +4186,9 @@ static int tg_load_down(struct task_group *tg, void *data)
if (!tg->parent) {
load = cpu_rq(cpu)->avg.load_avg_contrib;
} else {
- unsigned long tmp_rla;
- tmp_rla = tg->parent->cfs_rq[cpu]->runnable_load_avg + 1;
-
load = tg->parent->cfs_rq[cpu]->h_load;
- load *= tg->se[cpu]->avg.load_avg_contrib;
- load /= tmp_rla;
+ load = div64_ul(load * tg->se[cpu]->avg.load_avg_contrib,
+ tg->parent->cfs_rq[cpu]->runnable_load_avg + 1);
}
tg->cfs_rq[cpu]->h_load = load;
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 0684c26..762fa63 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -277,7 +277,7 @@ struct cfs_rq {
* This allows for the description of both thread and group usage (in
* the FAIR_GROUP_SCHED case).
*/
- u64 runnable_load_avg, blocked_load_avg;
+ unsigned long runnable_load_avg, blocked_load_avg;
atomic64_t decay_counter, removed_load;
u64 last_decay;
--
1.7.12
next prev parent reply other threads:[~2013-06-18 4:57 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-07 7:29 [RFC patch 0/4] change 64 bit variables to long type Alex Shi
2013-06-07 7:29 ` [RFC patch 1/4] sched: change cfs_rq load avg to unsigned long Alex Shi
2013-06-07 9:07 ` Vincent Guittot
2013-06-08 2:18 ` Alex Shi
2013-06-17 9:49 ` Paul Turner
2013-06-17 9:59 ` Alex Shi
2013-06-17 9:54 ` Vincent Guittot
2013-06-17 9:58 ` Alex Shi
2013-06-18 4:56 ` Alex Shi [this message]
2013-06-07 7:29 ` [RFC patch 2/4] sched/tg: use 'unsigned long' for load variable in task group Alex Shi
2013-06-17 12:25 ` Paul Turner
2013-06-17 15:26 ` Alex Shi
2013-06-07 7:29 ` [RFC patch 3/4] sched/cfs_rq: change atomic64_t removed_load to atomic_long_t Alex Shi
2013-06-17 10:19 ` Paul Turner
2013-06-07 7:29 ` [RFC patch 4/4] sched/tg: remove tg.load_weight Alex Shi
2013-06-17 12:22 ` Paul Turner
2013-06-10 2:20 ` [RFC patch 0/4] change 64 bit variables to long type Alex Shi
2013-06-11 6:13 ` Alex Shi
2013-06-14 14:20 ` Alex Shi
2013-06-17 1:01 ` 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=51BFE868.9010008@intel.com \
--to=alex.shi@intel.com \
--cc=akpm@linux-foundation.org \
--cc=bp@alien8.de \
--cc=efault@gmx.de \
--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=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.