Commit 71ff7aad authored by Ze Zuo's avatar Ze Zuo
Browse files

tracing, numa balance: add trace events for numa data caused by mem_sampling

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


CVE: NA

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

This patch adds trace events for the sampling and migration of pages,
. Using the events, it will be known what page has been sampled and
are being migrated.

Signed-off-by: default avatarZe Zuo <zuoze1@huawei.com>
Signed-off-by: default avatarTong Tiangen <tongtiangen@huawei.com>
Signed-off-by: default avatarShuang Yan <yanshuang7@huawei.com>
parent bebf0cae
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
@@ -363,6 +363,59 @@ TRACE_EVENT(rss_stat,
		__entry->member,
		__entry->size)
	);

#ifdef CONFIG_NUMABALANCING_MEM_SAMPLING
TRACE_EVENT(mm_numa_migrating,

	TP_PROTO(u64 vaddr, int page_nid, int target_nid,
		int migrate_success),

	TP_ARGS(vaddr, page_nid, target_nid, migrate_success),

	TP_STRUCT__entry(
		__field(u64, vaddr)
		__field(int, page_nid)
		__field(int, target_nid)
		__field(int, migrate_success)
	),

	TP_fast_assign(
		__entry->vaddr = vaddr;
		__entry->page_nid = page_nid;
		__entry->target_nid = target_nid;
		__entry->migrate_success = !!(migrate_success);
	),

	TP_printk("vaddr=%llu page_nid=%d target_nid=%d migrate_success=%d",
		__entry->vaddr, __entry->page_nid,
		__entry->target_nid, __entry->migrate_success)
);

TRACE_EVENT(mm_mem_sampling_access_record,

	TP_PROTO(u64 vaddr, u64 paddr, int cpuid, int pid),

	TP_ARGS(vaddr, paddr, cpuid, pid),

	TP_STRUCT__entry(
		__field(u64, vaddr)
		__field(u64, paddr)
		__field(int, cpuid)
		__field(int, pid)
	),

	TP_fast_assign(
		__entry->vaddr = vaddr;
		__entry->paddr = paddr;
		__entry->cpuid = cpuid;
		__entry->pid = pid;
	),

	TP_printk("vaddr=%llu paddr=%llu cpuid=%d pid=%d",
		__entry->vaddr, __entry->paddr,
		__entry->cpuid, __entry->pid)
);
#endif /* CONFIG_NUMABALANCING_MEM_SAMPLING */
#endif /* _TRACE_KMEM_H */

/* This part must be outside protection */
+4 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <linux/task_work.h>
#include <linux/migrate.h>
#include <linux/sched/numa_balancing.h>
#include <trace/events/kmem.h>

struct mem_sampling_ops_struct mem_sampling_ops;

@@ -210,6 +211,7 @@ static void do_numa_access(struct task_struct *p, u64 vaddr, u64 paddr)
	}

out:
	trace_mm_numa_migrating(vaddr, page_nid, target_nid, flags&TNF_MIGRATED);
	if (page_nid != NUMA_NO_NODE)
		task_numa_fault(last_cpupid, page_nid, 1, flags);

@@ -256,6 +258,8 @@ static void numa_balancing_mem_sampling_cb(struct mem_sampling_record *record)
	if (p->pid != record->context_id)
		return;

	trace_mm_mem_sampling_access_record(vaddr, paddr, smp_processor_id(),
					current->pid);
	numa_create_taskwork(vaddr, paddr, smp_processor_id());
}