From: tip-bot for Alex Shi <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@kernel.org,
peterz@infradead.org, vincent.guittot@linaro.org,
alex.shi@intel.com, tglx@linutronix.de
Subject: [tip:sched/core] sched/tg: Use 'unsigned long' for load variable in task group
Date: Thu, 27 Jun 2013 02:02:41 -0700 [thread overview]
Message-ID: <tip-bf5b986ed4d20428eeec3df4a03dbfebb9b6538c@git.kernel.org> (raw)
In-Reply-To: <1371694737-29336-11-git-send-email-alex.shi@intel.com>
Commit-ID: bf5b986ed4d20428eeec3df4a03dbfebb9b6538c
Gitweb: http://git.kernel.org/tip/bf5b986ed4d20428eeec3df4a03dbfebb9b6538c
Author: Alex Shi <alex.shi@intel.com>
AuthorDate: Thu, 20 Jun 2013 10:18:54 +0800
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 27 Jun 2013 10:07:40 +0200
sched/tg: Use 'unsigned long' for load variable in task group
Since tg->load_avg is smaller than tg->load_weight, we don't need a
atomic64_t variable for load_avg in 32 bit machine.
The same reason for cfs_rq->tg_load_contrib.
The atomic_long_t/unsigned long variable type are more efficient and
convenience for them.
Signed-off-by: Alex Shi <alex.shi@intel.com>
Tested-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1371694737-29336-11-git-send-email-alex.shi@intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
kernel/sched/debug.c | 6 +++---
kernel/sched/fair.c | 12 ++++++------
kernel/sched/sched.h | 4 ++--
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 160afdc..d803989 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -215,9 +215,9 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq)
cfs_rq->runnable_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));
- SEQ_printf(m, " .%-30s: %lld\n", "tg_load_contrib",
+ SEQ_printf(m, " .%-30s: %ld\n", "tg_load_avg",
+ atomic_long_read(&cfs_rq->tg->load_avg));
+ SEQ_printf(m, " .%-30s: %ld\n", "tg_load_contrib",
cfs_rq->tg_load_contrib);
SEQ_printf(m, " .%-30s: %d\n", "tg_runnable_contrib",
cfs_rq->tg_runnable_contrib);
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index f19772d..30ccc37 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -1075,7 +1075,7 @@ static inline long calc_tg_weight(struct task_group *tg, struct cfs_rq *cfs_rq)
* to gain a more accurate current total weight. See
* update_cfs_rq_load_contribution().
*/
- tg_weight = atomic64_read(&tg->load_avg);
+ tg_weight = atomic_long_read(&tg->load_avg);
tg_weight -= cfs_rq->tg_load_contrib;
tg_weight += cfs_rq->load.weight;
@@ -1356,13 +1356,13 @@ static inline void __update_cfs_rq_tg_load_contrib(struct cfs_rq *cfs_rq,
int force_update)
{
struct task_group *tg = cfs_rq->tg;
- s64 tg_contrib;
+ long tg_contrib;
tg_contrib = cfs_rq->runnable_load_avg + cfs_rq->blocked_load_avg;
tg_contrib -= cfs_rq->tg_load_contrib;
- if (force_update || abs64(tg_contrib) > cfs_rq->tg_load_contrib / 8) {
- atomic64_add(tg_contrib, &tg->load_avg);
+ if (force_update || abs(tg_contrib) > cfs_rq->tg_load_contrib / 8) {
+ atomic_long_add(tg_contrib, &tg->load_avg);
cfs_rq->tg_load_contrib += tg_contrib;
}
}
@@ -1397,8 +1397,8 @@ static inline void __update_group_entity_contrib(struct sched_entity *se)
u64 contrib;
contrib = cfs_rq->tg_load_contrib * tg->shares;
- se->avg.load_avg_contrib = div64_u64(contrib,
- atomic64_read(&tg->load_avg) + 1);
+ se->avg.load_avg_contrib = div_u64(contrib,
+ atomic_long_read(&tg->load_avg) + 1);
/*
* For group entities we need to compute a correction term in the case
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 9eb12d9..5585eb2 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -150,7 +150,7 @@ struct task_group {
atomic_t load_weight;
#ifdef CONFIG_SMP
- atomic64_t load_avg;
+ atomic_long_t load_avg;
atomic_t runnable_avg;
#endif
#endif
@@ -284,7 +284,7 @@ struct cfs_rq {
#ifdef CONFIG_FAIR_GROUP_SCHED
/* Required to track per-cpu representation of a task_group */
u32 tg_runnable_contrib;
- u64 tg_load_contrib;
+ unsigned long tg_load_contrib;
#endif /* CONFIG_FAIR_GROUP_SCHED */
/*
next prev parent reply other threads:[~2013-06-27 9:03 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-20 2:18 [Resend patch v8 0/13] use runnable load in schedule balance Alex Shi
2013-06-20 2:18 ` [Resend patch v8 01/13] Revert "sched: Introduce temporary FAIR_GROUP_SCHED dependency for load-tracking" Alex Shi
2013-06-26 5:05 ` Alex Shi
2013-06-26 20:30 ` Ingo Molnar
2013-06-27 1:07 ` Alex Shi
2013-06-27 9:01 ` [tip:sched/core] " tip-bot for Alex Shi
2013-06-20 2:18 ` [Resend patch v8 02/13] sched: move few runnable tg variables into CONFIG_SMP Alex Shi
2013-06-27 9:01 ` [tip:sched/core] sched: Move a " tip-bot for Alex Shi
2013-06-20 2:18 ` [Resend patch v8 03/13] sched: set initial value of runnable avg for new forked task Alex Shi
2013-06-27 9:01 ` [tip:sched/core] sched: Set an " tip-bot for Alex Shi
2013-06-20 2:18 ` [Resend patch v8 04/13] sched: fix slept time double counting in enqueue entity Alex Shi
2013-06-27 9:01 ` [tip:sched/core] sched: Fix sleep time double accounting " tip-bot for Alex Shi
2013-06-20 2:18 ` [Resend patch v8 05/13] sched: update cpu load after task_tick Alex Shi
2013-06-27 9:02 ` [tip:sched/core] sched: Update " tip-bot for Alex Shi
2013-06-20 2:18 ` [Resend patch v8 06/13] sched: compute runnable load avg in cpu_load and cpu_avg_load_per_task Alex Shi
2013-06-20 13:29 ` Vincent Guittot
2013-06-24 9:06 ` Alex Shi
2013-06-24 10:54 ` Paul Turner
2013-06-24 11:04 ` Vincent Guittot
2013-06-24 11:06 ` Paul Turner
2013-06-24 14:56 ` Alex Shi
2013-06-27 9:02 ` [tip:sched/core] sched: Compute " tip-bot for Alex Shi
2013-06-27 13:30 ` [Resend patch v8 06/13] sched: compute " Alex Shi
2013-06-20 2:18 ` [Resend patch v8 07/13] sched: consider runnable load average in move_tasks Alex Shi
2013-06-27 9:02 ` [tip:sched/core] sched: Consider runnable load average in move_tasks() tip-bot for Alex Shi
2013-06-20 2:18 ` [Resend patch v8 08/13] sched/tg: remove blocked_load_avg in balance Alex Shi
2013-06-20 2:18 ` [Resend patch v8 09/13] sched: change cfs_rq load avg to unsigned long Alex Shi
2013-06-27 9:02 ` [tip:sched/core] sched: Change " tip-bot for Alex Shi
2013-06-20 2:18 ` [Resend patch v8 10/13] sched/tg: use 'unsigned long' for load variable in task group Alex Shi
2013-06-27 9:02 ` tip-bot for Alex Shi [this message]
2013-06-20 2:18 ` [Resend patch v8 11/13] sched/cfs_rq: change atomic64_t removed_load to atomic_long_t Alex Shi
2013-06-27 9:02 ` [tip:sched/core] sched/cfs_rq: Change " tip-bot for Alex Shi
2013-06-20 2:18 ` [Resend patch v8 12/13] sched/tg: remove tg.load_weight Alex Shi
2013-06-27 9:02 ` [tip:sched/core] sched/tg: Remove tg.load_weight tip-bot for Alex Shi
2013-06-20 2:18 ` [Resend patch v8 13/13] sched: get_rq_runnable_load() can be static and inline Alex Shi
2013-06-27 9:03 ` [tip:sched/core] sched: Change get_rq_runnable_load() to " tip-bot for Alex Shi
2013-06-24 3:15 ` [Resend patch v8 0/13] use runnable load in schedule balance Alex Shi
2013-06-24 10:40 ` Paul Turner
2013-06-24 15:37 ` Alex Shi
2013-06-25 13:13 ` Alex Shi
2013-06-28 10:56 ` Paul Turner
2013-06-28 11:07 ` Peter Zijlstra
2013-06-28 11:12 ` Alex Shi
2013-10-28 10:25 ` Frederic Weisbecker
2013-10-28 12:22 ` Peter Zijlstra
[not found] ` <CAGjg+kGUo8vqv6hzobuyNoQjipLBXXofZ5q1rUyEehbD3cba9A@mail.gmail.com>
2013-06-28 16:00 ` Paul Turner
2013-07-09 8:53 ` Alex Shi
2013-06-26 14:27 ` Peter Zijlstra
2013-06-26 15:23 ` 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=tip-bf5b986ed4d20428eeec3df4a03dbfebb9b6538c@git.kernel.org \
--to=tipbot@zytor.com \
--cc=alex.shi@intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=vincent.guittot@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 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.