Commit bcddff7e authored by tanghui's avatar tanghui Committed by Zhong Jinghua
Browse files

sched: Adjust cpu allowed in load balance dynamicly

hulk inclusion
category: feature
bugzilla: 186575, https://gitee.com/openeuler/kernel/issues/I526XC



--------------------------------

Not allow task to migrate out of cpu preferred.

Signed-off-by: default avatartanghui <tanghui20@huawei.com>
Signed-off-by: default avatarZheng Zucheng <zhengzucheng@huawei.com>
Reviewed-by: default avatarZhang Qiao <zhangqiao22@huawei.com>
parent 2a3bb3c0
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -8512,7 +8512,12 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env)
	if (kthread_is_per_cpu(p))
		return 0;

#ifdef CONFIG_QOS_SCHED_DYNAMIC_AFFINITY
	set_task_select_cpus(p, NULL, 0);
	if (!cpumask_test_cpu(env->dst_cpu, p->select_cpus)) {
#else
	if (!cpumask_test_cpu(env->dst_cpu, p->cpus_ptr)) {
#endif
		int cpu;

		schedstat_inc(p->se.statistics.nr_failed_migrations_affine);
@@ -8532,7 +8537,11 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env)

		/* Prevent to re-select dst_cpu via env's CPUs: */
		for_each_cpu_and(cpu, env->dst_grpmask, env->cpus) {
#ifdef CONFIG_QOS_SCHED_DYNAMIC_AFFINITY
			if (cpumask_test_cpu(cpu, p->select_cpus)) {
#else
			if (cpumask_test_cpu(cpu, p->cpus_ptr)) {
#endif
				env->flags |= LBF_DST_PINNED;
				env->new_dst_cpu = cpu;
				break;