From: Li Zefan <lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
To: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Cgroups <cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Containers
<containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: [PATCH 07/11] cpuset: use effective cpumask to build sched domains
Date: Wed, 21 Aug 2013 18:00:09 +0800 [thread overview]
Message-ID: <52148FA9.806@huawei.com> (raw)
In-Reply-To: <52148F52.0-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
We're going to have separate user-configured masks and effective ones,
and configured masks won't be restricted by the parent, so we should
use effective masks to build sched domains.
This won't introduce behavior change.
Signed-off-by: Li Zefan <lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
---
kernel/cpuset.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 0de15eb..e7ad4a7 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -500,11 +500,11 @@ out:
#ifdef CONFIG_SMP
/*
* Helper routine for generate_sched_domains().
- * Do cpusets a, b have overlapping cpus_allowed masks?
+ * Do cpusets a, b have overlapping effective cpus_allowed masks?
*/
static int cpusets_overlap(struct cpuset *a, struct cpuset *b)
{
- return cpumask_intersects(a->cpus_allowed, b->cpus_allowed);
+ return cpumask_intersects(a->real_cpus_allowed, b->real_cpus_allowed);
}
static void
@@ -621,7 +621,7 @@ static int generate_sched_domains(cpumask_var_t **domains,
*dattr = SD_ATTR_INIT;
update_domain_attr_tree(dattr, &top_cpuset);
}
- cpumask_copy(doms[0], top_cpuset.cpus_allowed);
+ cpumask_copy(doms[0], top_cpuset.real_cpus_allowed);
goto done;
}
@@ -728,7 +728,7 @@ restart:
struct cpuset *b = csa[j];
if (apn == b->pn) {
- cpumask_or(dp, dp, b->cpus_allowed);
+ cpumask_or(dp, dp, b->real_cpus_allowed);
if (dattr)
update_domain_attr_tree(dattr + nslot, b);
@@ -854,6 +854,7 @@ static void update_cpumasks_hier(struct cpuset *cs, struct cpuset *trialcs,
{
struct cgroup_subsys_state *pos_css;
struct cpuset *cp;
+ bool need_rebuild_sched_domains = false;
rcu_read_lock();
cpuset_for_each_descendant_pre(cp, pos_css, cs) {
@@ -887,10 +888,17 @@ static void update_cpumasks_hier(struct cpuset *cs, struct cpuset *trialcs,
update_tasks_cpumask(cp, heap);
+ if (!cpumask_empty(cp->cpus_allowed) &&
+ is_sched_load_balance(cp))
+ need_rebuild_sched_domains = true;
+
rcu_read_lock();
css_put(&cp->css);
}
rcu_read_unlock();
+
+ if (need_rebuild_sched_domains)
+ rebuild_sched_domains_locked();
}
/**
@@ -944,9 +952,6 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs,
update_cpumasks_hier(cs, trialcs, &heap);
heap_free(&heap);
-
- if (is_sched_load_balance(cs))
- rebuild_sched_domains_locked();
return 0;
}
--
1.8.0.2
WARNING: multiple messages have this Message-ID (diff)
From: Li Zefan <lizefan@huawei.com>
To: Tejun Heo <tj@kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Cgroups <cgroups@vger.kernel.org>,
Containers <containers@lists.linux-foundation.org>
Subject: [PATCH 07/11] cpuset: use effective cpumask to build sched domains
Date: Wed, 21 Aug 2013 18:00:09 +0800 [thread overview]
Message-ID: <52148FA9.806@huawei.com> (raw)
In-Reply-To: <52148F52.0@huawei.com>
We're going to have separate user-configured masks and effective ones,
and configured masks won't be restricted by the parent, so we should
use effective masks to build sched domains.
This won't introduce behavior change.
Signed-off-by: Li Zefan <lizefan@huawei.com>
---
kernel/cpuset.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 0de15eb..e7ad4a7 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -500,11 +500,11 @@ out:
#ifdef CONFIG_SMP
/*
* Helper routine for generate_sched_domains().
- * Do cpusets a, b have overlapping cpus_allowed masks?
+ * Do cpusets a, b have overlapping effective cpus_allowed masks?
*/
static int cpusets_overlap(struct cpuset *a, struct cpuset *b)
{
- return cpumask_intersects(a->cpus_allowed, b->cpus_allowed);
+ return cpumask_intersects(a->real_cpus_allowed, b->real_cpus_allowed);
}
static void
@@ -621,7 +621,7 @@ static int generate_sched_domains(cpumask_var_t **domains,
*dattr = SD_ATTR_INIT;
update_domain_attr_tree(dattr, &top_cpuset);
}
- cpumask_copy(doms[0], top_cpuset.cpus_allowed);
+ cpumask_copy(doms[0], top_cpuset.real_cpus_allowed);
goto done;
}
@@ -728,7 +728,7 @@ restart:
struct cpuset *b = csa[j];
if (apn == b->pn) {
- cpumask_or(dp, dp, b->cpus_allowed);
+ cpumask_or(dp, dp, b->real_cpus_allowed);
if (dattr)
update_domain_attr_tree(dattr + nslot, b);
@@ -854,6 +854,7 @@ static void update_cpumasks_hier(struct cpuset *cs, struct cpuset *trialcs,
{
struct cgroup_subsys_state *pos_css;
struct cpuset *cp;
+ bool need_rebuild_sched_domains = false;
rcu_read_lock();
cpuset_for_each_descendant_pre(cp, pos_css, cs) {
@@ -887,10 +888,17 @@ static void update_cpumasks_hier(struct cpuset *cs, struct cpuset *trialcs,
update_tasks_cpumask(cp, heap);
+ if (!cpumask_empty(cp->cpus_allowed) &&
+ is_sched_load_balance(cp))
+ need_rebuild_sched_domains = true;
+
rcu_read_lock();
css_put(&cp->css);
}
rcu_read_unlock();
+
+ if (need_rebuild_sched_domains)
+ rebuild_sched_domains_locked();
}
/**
@@ -944,9 +952,6 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs,
update_cpumasks_hier(cs, trialcs, &heap);
heap_free(&heap);
-
- if (is_sched_load_balance(cs))
- rebuild_sched_domains_locked();
return 0;
}
--
1.8.0.2
next prev parent reply other threads:[~2013-08-21 10:00 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-21 9:58 [PATCH 00/11] cpuset: separate configured masks and effective masks Li Zefan
2013-08-21 9:58 ` Li Zefan
2013-08-21 9:58 ` [PATCH 01/11] cgroup: allow subsystems to create files for sane_behavior only Li Zefan
2013-08-21 9:59 ` [PATCH 03/11] cpuset: update cpuset->real_{cpus,mems}_allowed at hotplug Li Zefan
2013-08-21 9:59 ` [PATCH 06/11] cpuset: apply cs->real_{cpus,mems}_allowed Li Zefan
[not found] ` <52148F9C.2080600-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-21 14:01 ` Tejun Heo
2013-08-21 14:01 ` Tejun Heo
2013-08-21 14:01 ` Tejun Heo
2013-08-21 10:00 ` [PATCH 08/11] cpuset: separate configured masks and efffective masks Li Zefan
[not found] ` <52148FCA.8010704-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-21 14:08 ` Tejun Heo
2013-08-21 14:08 ` Tejun Heo
[not found] ` <20130821140846.GH19286-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2013-08-23 7:46 ` Li Zefan
2013-08-23 7:46 ` Li Zefan
[not found] ` <52171367.90005-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-23 15:33 ` Tejun Heo
2013-08-23 15:33 ` Tejun Heo
2013-08-23 15:33 ` Tejun Heo
2013-08-23 7:46 ` Li Zefan
[not found] ` <52148F52.0-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-21 9:58 ` [PATCH 01/11] cgroup: allow subsystems to create files for sane_behavior only Li Zefan
2013-08-21 9:59 ` [PATCH 02/11] cpuset: add cs->real_cpus_allowed and cs->real_mems_allowed Li Zefan
2013-08-21 9:59 ` Li Zefan
[not found] ` <52148F6F.4070507-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-21 13:22 ` Tejun Heo
2013-08-21 13:22 ` Tejun Heo
2013-08-21 9:59 ` Li Zefan
2013-08-21 9:59 ` [PATCH 03/11] cpuset: update cpuset->real_{cpus,mems}_allowed at hotplug Li Zefan
2013-08-21 9:59 ` [PATCH 04/11] cpuset: update cs->real_{cpus, mems}_allowed when config changes Li Zefan
2013-08-21 9:59 ` [PATCH 04/11] cpuset: update cs->real_{cpus,mems}_allowed " Li Zefan
2013-08-21 9:59 ` Li Zefan
[not found] ` <52148F84.9050309-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-21 13:39 ` Tejun Heo
2013-08-21 13:39 ` Tejun Heo
2013-08-21 9:59 ` [PATCH 05/11] cpuset: inherite ancestor's masks if real_{cpus, mems}_allowed become empty Li Zefan
2013-08-21 9:59 ` [PATCH 05/11] cpuset: inherite ancestor's masks if real_{cpus,mems}_allowed " Li Zefan
[not found] ` <52148F90.7070809-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-21 13:44 ` Tejun Heo
2013-08-21 13:44 ` Tejun Heo
2013-08-21 13:44 ` Tejun Heo
2013-08-21 9:59 ` [PATCH 06/11] cpuset: apply cs->real_{cpus,mems}_allowed Li Zefan
2013-08-21 10:00 ` Li Zefan [this message]
2013-08-21 10:00 ` [PATCH 07/11] cpuset: use effective cpumask to build sched domains Li Zefan
[not found] ` <52148FA9.806-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-21 14:04 ` Tejun Heo
2013-08-21 14:04 ` Tejun Heo
2013-08-21 10:00 ` [PATCH 08/11] cpuset: separate configured masks and efffective masks Li Zefan
2013-08-21 10:01 ` [PATCH 09/11] cpuset: enable onlined cpu/node in effective masks Li Zefan
2013-08-21 10:01 ` Li Zefan
[not found] ` <52148FE1.3080806-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-21 14:11 ` Tejun Heo
2013-08-21 14:11 ` Tejun Heo
2013-08-21 14:11 ` Tejun Heo
2013-08-21 10:01 ` [PATCH 10/11] cpuset: allow writing offlined masks to cpuset.cpus/mems Li Zefan
2013-08-21 10:01 ` Li Zefan
2013-08-21 10:01 ` Li Zefan
[not found] ` <52148FF1.5060503-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-21 14:18 ` Tejun Heo
2013-08-21 14:18 ` Tejun Heo
2013-08-21 14:18 ` Tejun Heo
[not found] ` <20130821141851.GJ19286-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2013-08-23 7:37 ` Li Zefan
2013-08-23 7:37 ` Li Zefan
2013-08-21 10:01 ` [PATCH 11/11] cpuset: export effective masks to userspace Li Zefan
2013-08-21 10:01 ` Li Zefan
[not found] ` <52148FFC.4080701-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-21 14:20 ` Tejun Heo
2013-08-21 14:20 ` Tejun Heo
2013-08-21 14:20 ` Tejun Heo
[not found] ` <20130821142001.GK19286-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2013-08-23 7:53 ` Li Zefan
2013-08-23 7:53 ` Li Zefan
[not found] ` <52171501.8050401-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-08-23 12:34 ` Tejun Heo
2013-08-23 12:34 ` Tejun Heo
2013-08-21 14:21 ` [PATCH 00/11] cpuset: separate configured masks and effective masks Tejun Heo
2013-08-21 14:21 ` Tejun Heo
2013-08-21 14:21 ` Tejun Heo
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=52148FA9.806@huawei.com \
--to=lizefan-hv44wf8li93qt0dzr+alfa@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.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.