2013-05-09 16:24:07

by Nathan Zimmer

[permalink] [raw]
Subject: [PATCH] sched: use this_rq() helper

It is a few instructions more efficent to and slightly more readable to use
this_rq()-> instead of cpu_rq(smp_processor_id()->

Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Signed-off-by: Nathan Zimmer <[email protected]>
---
kernel/sched/fair.c | 6 ++----
kernel/sched/rt.c | 2 +-
2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index c61a614..f2c9c0c 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -5418,10 +5418,9 @@ static inline void nohz_balance_exit_idle(int cpu)
static inline void set_cpu_sd_state_busy(void)
{
struct sched_domain *sd;
- int cpu = smp_processor_id();

rcu_read_lock();
- sd = rcu_dereference_check_sched_domain(cpu_rq(cpu)->sd);
+ sd = rcu_dereference_check_sched_domain(this_rq()->sd);

if (!sd || !sd->nohz_idle)
goto unlock;
@@ -5436,10 +5435,9 @@ unlock:
void set_cpu_sd_state_idle(void)
{
struct sched_domain *sd;
- int cpu = smp_processor_id();

rcu_read_lock();
- sd = rcu_dereference_check_sched_domain(cpu_rq(cpu)->sd);
+ sd = rcu_dereference_check_sched_domain(this_rq()->sd);

if (!sd || sd->nohz_idle)
goto unlock;
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 127a2c4..7aced2e 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -472,7 +472,7 @@ static int rt_se_boosted(struct sched_rt_entity *rt_se)
#ifdef CONFIG_SMP
static inline const struct cpumask *sched_rt_period_mask(void)
{
- return cpu_rq(smp_processor_id())->rd->span;
+ return this_rq()->rd->span;
}
#else
static inline const struct cpumask *sched_rt_period_mask(void)
--
1.8.2.1


2013-05-10 10:41:47

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] sched: use this_rq() helper

On Thu, May 09, 2013 at 11:24:03AM -0500, Nathan Zimmer wrote:
> It is a few instructions more efficent to and slightly more readable to use
> this_rq()-> instead of cpu_rq(smp_processor_id()->

If you've taken the trouble of actually measuring this, including the
measurement results is appreciated.

But yes, it also makes the code slightly smaller.

Thanks!

Acked-by: Peter Zijlstra <[email protected]>

Subject: [tip:sched/core] sched: Use this_rq() helper

Commit-ID: 424c93fe4cbe719e7fd7169248d2b648c493b68d
Gitweb: http://git.kernel.org/tip/424c93fe4cbe719e7fd7169248d2b648c493b68d
Author: Nathan Zimmer <[email protected]>
AuthorDate: Thu, 9 May 2013 11:24:03 -0500
Committer: Ingo Molnar <[email protected]>
CommitDate: Fri, 10 May 2013 10:35:56 +0200

sched: Use this_rq() helper

It is a few instructions more efficent to and slightly more
readable to use this_rq()-> instead of cpu_rq(smp_processor_id())-> .

Size comparison of kernel/sched/fair.o:

text data bss dec hex filename
27972 122 26 28120 6dd8 fair.o.before
27956 122 26 28104 6dc8 fair.o.after

Signed-off-by: Nathan Zimmer <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
---
kernel/sched/fair.c | 6 ++----
kernel/sched/rt.c | 2 +-
2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index c61a614..f2c9c0c 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -5418,10 +5418,9 @@ static inline void nohz_balance_exit_idle(int cpu)
static inline void set_cpu_sd_state_busy(void)
{
struct sched_domain *sd;
- int cpu = smp_processor_id();

rcu_read_lock();
- sd = rcu_dereference_check_sched_domain(cpu_rq(cpu)->sd);
+ sd = rcu_dereference_check_sched_domain(this_rq()->sd);

if (!sd || !sd->nohz_idle)
goto unlock;
@@ -5436,10 +5435,9 @@ unlock:
void set_cpu_sd_state_idle(void)
{
struct sched_domain *sd;
- int cpu = smp_processor_id();

rcu_read_lock();
- sd = rcu_dereference_check_sched_domain(cpu_rq(cpu)->sd);
+ sd = rcu_dereference_check_sched_domain(this_rq()->sd);

if (!sd || sd->nohz_idle)
goto unlock;
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 127a2c4..7aced2e 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -472,7 +472,7 @@ static int rt_se_boosted(struct sched_rt_entity *rt_se)
#ifdef CONFIG_SMP
static inline const struct cpumask *sched_rt_period_mask(void)
{
- return cpu_rq(smp_processor_id())->rd->span;
+ return this_rq()->rd->span;
}
#else
static inline const struct cpumask *sched_rt_period_mask(void)