Introducing the task migration and swap statistics in the following places: /sys/fs/cgroup/{GROUP}/memory.stat /proc/{PID}/sched /proc/vmstat These statistics facilitate a rapid evaluation of the performance and resource utilization of the target workload. Patch 1 is a fix from Libo to avoid task swapping for kernel threads and user thread that does not have mm, because Numa balance only cares about the user pages via VMA. Patch 2 is the major change to expose the statistics of task migration and swapping in corresponding files. The reason to fold patch 1 and patch 2 into 1 patch set is that patch 1 is necessary for patch 2 to avoid accessing a NULL mm_struct from a kernel thread, which causes NULL pointer exception. Changes since v4: Skip the kernel thread in patch 1, by checking if the target thread has PF_KTHREAD(Peter). Besides, remove the check for PF_IDLE, because idle thread has PF_KTHREAD set already(Prateek). Previous version: v4: https://lore.kernel.org/all/cover.1746611892.git.yu.c.chen@xxxxxxxxx/ v3: https://lore.kernel.org/lkml/20250430103623.3349842-1-yu.c.chen@xxxxxxxxx/ v2: https://lore.kernel.org/lkml/20250408101444.192519-1-yu.c.chen@xxxxxxxxx/ v1: https://lore.kernel.org/lkml/20250402010611.3204674-1-yu.c.chen@xxxxxxxxx/ Chen Yu (1): sched/numa: add statistics of numa balance task Libo Chen (1): sched/numa: fix task swap by skipping kernel threads Documentation/admin-guide/cgroup-v2.rst | 6 ++++++ include/linux/sched.h | 4 ++++ include/linux/vm_event_item.h | 2 ++ kernel/sched/core.c | 9 +++++++-- kernel/sched/debug.c | 4 ++++ kernel/sched/fair.c | 3 ++- mm/memcontrol.c | 2 ++ mm/vmstat.c | 2 ++ 8 files changed, 29 insertions(+), 3 deletions(-) -- 2.25.1