From 923dc4aa11614991e0a4902dc57d903f83d5133a Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Mon, 27 Feb 2017 11:11:58 +0900 Subject: [PATCH] PROFILE_mpol_alloc_missed: profile allocations that fail to satisfy user requested memory policy --- kernel/mem.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/mem.c b/kernel/mem.c index 27ed6fff..3d2c1399 100644 --- a/kernel/mem.c +++ b/kernel/mem.c @@ -507,7 +507,8 @@ static void *mckernel_allocate_aligned_pages_node(int npages, int p2align, goto distance_based; /* User requested policy? */ - if (!(flag & IHK_MC_AP_USER)) { + if (!(flag & IHK_MC_AP_USER) || + cpu_local_var(current)->vm->numa_mem_policy == MPOL_DEFAULT) { goto distance_based; } @@ -563,6 +564,7 @@ static void *mckernel_allocate_aligned_pages_node(int npages, int p2align, return phys_to_virt(pa); } else { + profile_event_add(PROFILE_mpol_alloc_missed, npages * 4096); dkprintf("%s: couldn't fulfill user policy for %d pages\n", __FUNCTION__, npages); }