[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAPM31RLOX9NSaHK9+ysC6yDXvAj2swaoXmg6hHHpMdOJjWBFrQ@mail.gmail.com>
Date: Sat, 24 Aug 2013 03:45:57 -0700
From: Paul Turner <pjt@...gle.com>
To: Peter Zijlstra <peterz@...radead.org>
Cc: Ingo Molnar <mingo@...nel.org>,
Joonsoo Kim <iamjoonsoo.kim@....com>,
LKML <linux-kernel@...r.kernel.org>,
Mike Galbraith <efault@....de>, Alex Shi <alex.shi@...el.com>,
Preeti U Murthy <preeti@...ux.vnet.ibm.com>,
Vincent Guittot <vincent.guittot@...aro.org>,
Morten Rasmussen <morten.rasmussen@....com>,
Namhyung Kim <namhyung@...nel.org>,
Lei Wen <leiwen@...vell.com>, Rik van Riel <riel@...riel.com>,
Joonsoo Kim <js1304@...il.com>
Subject: Re: [PATCH 09/10] sched, fair: Fix the sd_parent_degenerate() code
On Mon, Aug 19, 2013 at 9:01 AM, Peter Zijlstra <peterz@...radead.org> wrote:
> I found that on my wsm box I had a redundant domain:
>
> [ 0.949769] CPU0 attaching sched-domain:
> [ 0.953765] domain 0: span 0,12 level SIBLING
> [ 0.958335] groups: 0 (cpu_power = 587) 12 (cpu_power = 588)
> [ 0.964548] domain 1: span 0-5,12-17 level MC
> [ 0.969206] groups: 0,12 (cpu_power = 1175) 1,13 (cpu_power = 1176) 2,14 (cpu_power = 1176) 3,15 (cpu_power = 1176) 4,16 (cpu_power = 1176) 5,17 (cpu_power = 1176)
> [ 0.984993] domain 2: span 0-5,12-17 level CPU
> [ 0.989822] groups: 0-5,12-17 (cpu_power = 7055)
> [ 0.995049] domain 3: span 0-23 level NUMA
> [ 0.999620] groups: 0-5,12-17 (cpu_power = 7055) 6-11,18-23 (cpu_power = 7056)
>
> Note how domain 2 has only a single group and spans the same CPUs as
> domain 1. We should not keep such domains and do in fact have code to
> prune these.
>
> It turns out that the 'new' SD_PREFER_SIBLING flag causes this, it
> makes sd_parent_degenerate() fail on the CPU domain. We can easily fix
> this by 'ignoring' the SD_PREFER_SIBLING bit and transfering it to
> whatever domain ends up covering the span.
>
> With this patch the domains now look like this:
>
> [ 0.950419] CPU0 attaching sched-domain:
> [ 0.954454] domain 0: span 0,12 level SIBLING
> [ 0.959039] groups: 0 (cpu_power = 587) 12 (cpu_power = 588)
> [ 0.965271] domain 1: span 0-5,12-17 level MC
> [ 0.969936] groups: 0,12 (cpu_power = 1175) 1,13 (cpu_power = 1176) 2,14 (cpu_power = 1176) 3,15 (cpu_power = 1176) 4,16 (cpu_power = 1176) 5,17 (cpu_power = 1176)
> [ 0.985737] domain 2: span 0-23 level NUMA
> [ 0.990231] groups: 0-5,12-17 (cpu_power = 7055) 6-11,18-23 (cpu_power = 7056)
>
> Signed-off-by: Peter Zijlstra <peterz@...radead.org>
> ---
> kernel/sched/core.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -4948,7 +4948,8 @@ sd_parent_degenerate(struct sched_domain
> SD_BALANCE_FORK |
> SD_BALANCE_EXEC |
> SD_SHARE_CPUPOWER |
> - SD_SHARE_PKG_RESOURCES);
> + SD_SHARE_PKG_RESOURCES |
> + SD_PREFER_SIBLING);
> if (nr_node_ids == 1)
> pflags &= ~SD_SERIALIZE;
> }
> @@ -5157,6 +5158,13 @@ cpu_attach_domain(struct sched_domain *s
> tmp->parent = parent->parent;
> if (parent->parent)
> parent->parent->child = tmp;
> + /*
> + * Transfer SD_PREFER_SIBLING down in case of a
> + * degenerate parent; the spans match for this
> + * so the property transfers.
> + */
> + if (parent->flags & SD_PREFER_SIBLING)
> + tmp->flags |= SD_PREFER_SIBLING;
> destroy_sched_domain(parent, cpu);
> } else
> tmp = tmp->parent;
>
Reviewed-by: Paul Turner <pjt@...gle.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists