2011-06-07 09:48:54

by Nikunj A Dadhania

[permalink] [raw]
Subject: [PATCH] sched: remove redundant check in select_task_rq_fair

When balancing for wakeup affinity, a redundant check can removed.

Signed-off-by: Nikunj A. Dadhania <[email protected]>
---
kernel/sched_fair.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index 433491c..b9e5701 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -1753,7 +1753,7 @@ select_task_rq_fair(struct task_struct *p, int sd_flag, int wake_flags)
}

if (affine_sd) {
- if (cpu == prev_cpu || wake_affine(affine_sd, p, sync))
+ if (wake_affine(affine_sd, p, sync))
prev_cpu = cpu;

new_cpu = select_idle_sibling(p, prev_cpu);


2011-06-07 09:53:44

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] sched: remove redundant check in select_task_rq_fair

On Tue, 2011-06-07 at 15:18 +0530, Nikunj A. Dadhania wrote:
> When balancing for wakeup affinity, a redundant check can removed.

Yes, tempting, but no, now you've got an extra call to wake_affine(),
which is more expensive.

> Signed-off-by: Nikunj A. Dadhania <[email protected]>
> ---
> kernel/sched_fair.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
> index 433491c..b9e5701 100644
> --- a/kernel/sched_fair.c
> +++ b/kernel/sched_fair.c
> @@ -1753,7 +1753,7 @@ select_task_rq_fair(struct task_struct *p, int sd_flag, int wake_flags)
> }
>
> if (affine_sd) {
> - if (cpu == prev_cpu || wake_affine(affine_sd, p, sync))
> + if (wake_affine(affine_sd, p, sync))
> prev_cpu = cpu;
>
> new_cpu = select_idle_sibling(p, prev_cpu);
>

2011-06-07 10:04:56

by Nikunj A Dadhania

[permalink] [raw]
Subject: Re: [PATCH] sched: remove redundant check in select_task_rq_fair

On Tue, 07 Jun 2011 11:53:34 +0200, Peter Zijlstra <[email protected]> wrote:
> On Tue, 2011-06-07 at 15:18 +0530, Nikunj A. Dadhania wrote:
> > When balancing for wakeup affinity, a redundant check can removed.
>
> Yes, tempting, but no, now you've got an extra call to wake_affine(),
> which is more expensive.
Ah, got that. How about this, it is more readable. Other options would
be to add a comment.

Signed-off-by: Nikunj A. Dadhania <[email protected]>
---
kernel/sched_fair.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index 433491c..354e26b 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -1753,7 +1753,7 @@ select_task_rq_fair(struct task_struct *p, int sd_flag, int wake_flags)
}

if (affine_sd) {
- if (cpu == prev_cpu || wake_affine(affine_sd, p, sync))
+ if (cpu != prev_cpu && wake_affine(affine_sd, p, sync))
prev_cpu = cpu;

2011-06-07 10:09:33

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] sched: remove redundant check in select_task_rq_fair

On Tue, 2011-06-07 at 15:34 +0530, Nikunj A. Dadhania wrote:
> On Tue, 07 Jun 2011 11:53:34 +0200, Peter Zijlstra <[email protected]> wrote:
> > On Tue, 2011-06-07 at 15:18 +0530, Nikunj A. Dadhania wrote:
> > > When balancing for wakeup affinity, a redundant check can removed.
> >
> > Yes, tempting, but no, now you've got an extra call to wake_affine(),
> > which is more expensive.

> Ah, got that. How about this, it is more readable. Other options would
> be to add a comment.

> - if (cpu == prev_cpu || wake_affine(affine_sd, p, sync))
> + if (cpu != prev_cpu && wake_affine(affine_sd, p, sync))
> prev_cpu = cpu;

I guess that depends on which way your head is wired and how strong your
boolean algebra is.. Suresh, Mike any preference? I don't much care
either way.

2011-06-07 10:20:52

by Mike Galbraith

[permalink] [raw]
Subject: Re: [PATCH] sched: remove redundant check in select_task_rq_fair

On Tue, 2011-06-07 at 12:09 +0200, Peter Zijlstra wrote:
> On Tue, 2011-06-07 at 15:34 +0530, Nikunj A. Dadhania wrote:
> > On Tue, 07 Jun 2011 11:53:34 +0200, Peter Zijlstra <[email protected]> wrote:
> > > On Tue, 2011-06-07 at 15:18 +0530, Nikunj A. Dadhania wrote:
> > > > When balancing for wakeup affinity, a redundant check can removed.
> > >
> > > Yes, tempting, but no, now you've got an extra call to wake_affine(),
> > > which is more expensive.
>
> > Ah, got that. How about this, it is more readable. Other options would
> > be to add a comment.
>
> > - if (cpu == prev_cpu || wake_affine(affine_sd, p, sync))
> > + if (cpu != prev_cpu && wake_affine(affine_sd, p, sync))
> > prev_cpu = cpu;
>
> I guess that depends on which way your head is wired and how strong your
> boolean algebra is.. Suresh, Mike any preference? I don't much care
> either way.

Me either.

-Mike