Commit 43d11e16 authored by Hui Tang's avatar Hui Tang
Browse files

sched: Add cfs_preferred_nid_init hook

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I9GZAQ


CVE: NA

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

Add cfs_preferred_nid_init hook for scheduler, allow user to init
same numa_preferred_nid for multi threads of the process.

Signed-off-by: default avatarHui Tang <tanghui20@huawei.com>
parent b057ca57
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -14,3 +14,4 @@ BPF_SCHED_HOOK(int, -1, cfs_can_migrate_task, struct task_struct *p,
	struct sched_migrate_node *migrate_node)
BPF_SCHED_HOOK(void, (void) 0, cfs_change_preferred_node,
	struct sched_preferred_node_ctx *ctx)
BPF_SCHED_HOOK(int, -1, cfs_preferred_nid_init, struct task_struct *tsk)
+15 −0
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@
#include <linux/scs.h>
#include <linux/io_uring.h>
#include <linux/sched/mm.h>
#include <linux/bpf_sched.h>
#ifdef CONFIG_QOS_SCHED_SMART_GRID
#include <linux/sched/grid_qos.h>
#endif
@@ -2320,6 +2321,20 @@ static __latent_entropy struct task_struct *copy_process(
		p->tgid = p->pid;
	}

#if defined (CONFIG_SCHED_TASK_RELATIONSHIP) && defined(CONFIG_BPF_SCHED)
	if (bpf_sched_enabled() && task_relationship_supported(p)) {
		retval = bpf_sched_cfs_preferred_nid_init(p);
		if (clone_flags & CLONE_THREAD) {
			if (retval > 0)
				p->numa_preferred_nid =
					p->group_leader->numa_preferred_nid;
		} else {
			if (retval > 0 && retval <= nr_node_ids)
				p->numa_preferred_nid = retval - 1;
		}
	}
#endif

	p->nr_dirtied = 0;
	p->nr_dirtied_pause = 128 >> (PAGE_SHIFT - 10);
	p->dirty_paused_when = 0;