mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Chen Lin <chen.lin130@zte.com.cn>
To: mingo@redhat.com, peterz@infradead.org
Cc: linux-kernel@vger.kernel.org, jiang.biao2@zte.com.cn,
	zhong.weidong@zte.com.cn, tan.hu@zte.com.cn.cn,
	Chen Lin <cheng.lin130@zte.com.cn>, Tan Hu <tan.hu@zte.com.cn>
Subject: [PATCH] sched/numa: do not balance tasks onto isolated cpus
Date: Mon, 23 Jul 2018 13:39:30 +0800	[thread overview]
Message-ID: <1532324370-80651-1-git-send-email-chen.lin130@zte.com.cn> (raw)

From: Chen Lin <cheng.lin130@zte.com.cn>

NUMA balancing has not taken *isolcpus(isolated cpus)* into 
consideration. It may migrate tasks onto isolated cpus and the 
migrated tasks will never escape from the isolated cpus, which will
break the isolation provided by *isolcpus* boot parameter and 
intrduce various problems.

This patch ensure NUMA balancing not to balance tasks onto iaolated
cpus. 

Signed-off-by: Cheng Lin <cheng.lin130@zte.com.cn>
Signed-off-by: Tan Hu <tan.hu@zte.com.cn>
Signed-off-by: Jiang Biao <jiang.biao2@zte.com.cn>
---
 kernel/sched/core.c | 9 ++++++---
 kernel/sched/fair.c | 3 ++-
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index fe365c9..f9ce90c 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -1302,10 +1302,12 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p)
 	if (!cpu_active(arg.src_cpu) || !cpu_active(arg.dst_cpu))
 		goto out;

-	if (!cpumask_test_cpu(arg.dst_cpu, &arg.src_task->cpus_allowed))
+	if ((!cpumask_test_cpu(arg.dst_cpu, &arg.src_task->cpus_allowed))
+            || cpumask_test_cpu(arg.dst_cpu, cpu_isolated_map))
 		goto out;

-	if (!cpumask_test_cpu(arg.src_cpu, &arg.dst_task->cpus_allowed))
+	if ((!cpumask_test_cpu(arg.src_cpu, &arg.dst_task->cpus_allowed))
+            || cpumask_test_cpu(arg.src_cpu, cpu_isolated_map))
 		goto out;

 	trace_sched_swap_numa(cur, arg.src_cpu, p, arg.dst_cpu);
@@ -5508,7 +5510,8 @@ int migrate_task_to(struct task_struct *p, int target_cpu)
 	if (curr_cpu == target_cpu)
 		return 0;

-	if (!cpumask_test_cpu(target_cpu, &p->cpus_allowed))
+	if ((!cpumask_test_cpu(target_cpu, &p->cpus_allowed))
+            || cpumask_test_cpu(target_cpu, cpu_isolated_map))
 		return -EINVAL;

 	/* TODO: This is not properly updating schedstats */
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 2f0a0be..a91f8fe 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -1724,7 +1724,8 @@ static void task_numa_find_cpu(struct task_numa_env *env,

 	for_each_cpu(cpu, cpumask_of_node(env->dst_nid)) {
 		/* Skip this CPU if the source task cannot migrate */
-		if (!cpumask_test_cpu(cpu, &env->p->cpus_allowed))
+		if ((!cpumask_test_cpu(cpu, &env->p->cpus_allowed))
+                    || cpumask_test_cpu(cpu, cpu_isolated_map))
 			continue;

 		env->dst_cpu = cpu;
--
1.8.3.1


             reply	other threads:[~2018-07-23  5:57 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-23  5:39 Chen Lin [this message]
2018-07-23  8:40 ` Peter Zijlstra
2018-07-24  1:11   ` jiang.biao2
2018-07-24  9:06     ` Peter Zijlstra
2018-07-25  0:30       ` jiang.biao2
2018-07-25  8:35         ` Peter Zijlstra
2018-07-25  8:52           ` jiang.biao2
2018-07-23 20:06 ` kbuild test robot
2018-07-23 20:06 ` kbuild test robot

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=1532324370-80651-1-git-send-email-chen.lin130@zte.com.cn \
    --to=chen.lin130@zte.com.cn \
    --cc=cheng.lin130@zte.com.cn \
    --cc=jiang.biao2@zte.com.cn \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tan.hu@zte.com.cn \
    --cc=tan.hu@zte.com.cn.cn \
    --cc=zhong.weidong@zte.com.cn \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®