From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Ingo Molnar <mingo@elte.hu>, linux-kernel@vger.kernel.org
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Anton Blanchard <anton@au1.ibm.com>,
Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>,
Suresh Siddha <suresh.b.siddha@intel.com>,
Venkatesh Pallipadi <venki@google.com>,
Paul Turner <pjt@google.com>, Mike Galbraith <efault@gmx.de>,
Thomas Gleixner <tglx@linutronix.de>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Andreas Herrmann <andreas.herrmann3@amd.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: [RFC][PATCH 12/14] sched: Simplify NODE/ALLNODES domain creation
Date: Mon, 14 Mar 2011 16:06:25 +0100 [thread overview]
Message-ID: <20110314152227.479803494@chello.nl> (raw)
In-Reply-To: 20110314150613.749843433@chello.nl
[-- Attachment #1: sched-foo11.patch --]
[-- Type: text/plain, Size: 2839 bytes --]
Don't treat ALLNODES/NODE different for difference's sake. Simply
always create the ALLNODES domain and let the sd_degenerate() checks
kill it when its redundant. This simplifies the code flow.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <new-submission>
---
kernel/sched.c | 40 ++++++++++++++++++++++------------------
1 file changed, 22 insertions(+), 18 deletions(-)
Index: linux-2.6/kernel/sched.c
===================================================================
--- linux-2.6.orig/kernel/sched.c
+++ linux-2.6/kernel/sched.c
@@ -6814,9 +6814,6 @@ struct sd_data {
};
struct s_data {
-#ifdef CONFIG_NUMA
- int sd_allnodes;
-#endif
cpumask_var_t nodemask;
cpumask_var_t send_covered;
struct sched_domain ** __percpu sd;
@@ -7088,30 +7085,35 @@ static void claim_allocations(int cpu, s
}
}
-static struct sched_domain *__build_numa_sched_domains(struct s_data *d,
- const struct cpumask *cpu_map, struct sched_domain_attr *attr, int i)
+static struct sched_domain *__build_allnodes_sched_domain(struct s_data *d,
+ const struct cpumask *cpu_map, struct sched_domain_attr *attr,
+ struct sched_domain *parent, int i)
{
struct sched_domain *sd = NULL;
#ifdef CONFIG_NUMA
- struct sched_domain *parent;
-
- d->sd_allnodes = 0;
- if (cpumask_weight(cpu_map) >
- SD_NODES_PER_DOMAIN * cpumask_weight(d->nodemask)) {
- sd = sd_init_ALLNODES(d, i);
- set_domain_attribute(sd, attr);
- cpumask_copy(sched_domain_span(sd), cpu_map);
- d->sd_allnodes = 1;
- }
- parent = sd;
+ sd = sd_init_ALLNODES(d, i);
+ set_domain_attribute(sd, attr);
+ cpumask_copy(sched_domain_span(sd), cpu_map);
+ sd->parent = parent;
+ if (parent)
+ parent->child = sd;
+#endif
+ return sd;
+}
+static struct sched_domain *__build_node_sched_domain(struct s_data *d,
+ const struct cpumask *cpu_map, struct sched_domain_attr *attr,
+ struct sched_domain *parent, int i)
+{
+ struct sched_domain *sd = NULL;
+#ifdef CONFIG_NUMA
sd = sd_init_NODE(d, i);
set_domain_attribute(sd, attr);
sched_domain_node_span(cpu_to_node(i), sched_domain_span(sd));
+ cpumask_and(sched_domain_span(sd), sched_domain_span(sd), cpu_map);
sd->parent = parent;
if (parent)
parent->child = sd;
- cpumask_and(sched_domain_span(sd), sched_domain_span(sd), cpu_map);
#endif
return sd;
}
@@ -7196,7 +7198,9 @@ static int __build_sched_domains(const s
cpumask_and(d.nodemask, cpumask_of_node(cpu_to_node(i)),
cpu_map);
- sd = __build_numa_sched_domains(&d, cpu_map, attr, i);
+ sd = NULL;
+ sd = __build_allnodes_sched_domain(&d, cpu_map, attr, sd, i);
+ sd = __build_node_sched_domain(&d, cpu_map, attr, sd, i);
sd = __build_cpu_sched_domain(&d, cpu_map, attr, sd, i);
sd = __build_book_sched_domain(&d, cpu_map, attr, sd, i);
sd = __build_mc_sched_domain(&d, cpu_map, attr, sd, i);
next prev parent reply other threads:[~2011-03-14 15:27 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-14 15:06 [RFC][PATCH 00/14] Rewrite sched_domain/sched_group creation Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 01/14] sched: Remove obsolete arch_ prefixes Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 02/14] sched: Simplify cpu_power initialization Peter Zijlstra
2011-03-14 21:35 ` Steven Rostedt
2011-03-14 21:46 ` Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 03/14] sched: Simplify build_sched_groups Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 04/14] sched: Change NODE sched_domain group creation Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 05/14] sched: Clean up some ALLNODES code Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 06/14] Simplify group creation Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 07/14] sched: Simplify finding the lowest sched_domain Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 08/14] sched: Simplify sched_groups_power initialization Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 09/14] sched: Dynamically allocate sched_domain/sched_group data-structures Peter Zijlstra
2011-03-18 9:08 ` Bharata B Rao
2011-03-18 9:37 ` Peter Zijlstra
2011-03-19 1:23 ` Venkatesh Pallipadi
2011-03-25 21:06 ` Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 10/14] sched: Simplify the free path some Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 11/14] sched: Reduce some allocation pressure Peter Zijlstra
2011-03-14 15:06 ` Peter Zijlstra [this message]
2011-03-14 15:06 ` [RFC][PATCH 13/14] sched: Remove nodemask allocation Peter Zijlstra
2011-03-14 15:06 ` [RFC][PATCH 14/14] sched: Remove some dead code Peter Zijlstra
2011-03-25 21:46 ` [RFC][PATCH 00/14] Rewrite sched_domain/sched_group creation Peter Zijlstra
2011-03-25 21:53 ` Peter Zijlstra
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=20110314152227.479803494@chello.nl \
--to=a.p.zijlstra@chello.nl \
--cc=andreas.herrmann3@amd.com \
--cc=anton@au1.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=efault@gmx.de \
--cc=heiko.carstens@de.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=pjt@google.com \
--cc=suresh.b.siddha@intel.com \
--cc=tglx@linutronix.de \
--cc=vatsa@linux.vnet.ibm.com \
--cc=venki@google.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.