PROFILE_mpol_alloc_missed: profile allocations that fail to satisfy user requested memory policy

This commit is contained in:
Balazs Gerofi
2017-02-27 11:11:58 +09:00
parent e3e0f6a174
commit 923dc4aa11

View File

@ -507,7 +507,8 @@ static void *mckernel_allocate_aligned_pages_node(int npages, int p2align,
goto distance_based; goto distance_based;
/* User requested policy? */ /* 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; goto distance_based;
} }
@ -563,6 +564,7 @@ static void *mckernel_allocate_aligned_pages_node(int npages, int p2align,
return phys_to_virt(pa); return phys_to_virt(pa);
} }
else { else {
profile_event_add(PROFILE_mpol_alloc_missed, npages * 4096);
dkprintf("%s: couldn't fulfill user policy for %d pages\n", dkprintf("%s: couldn't fulfill user policy for %d pages\n",
__FUNCTION__, npages); __FUNCTION__, npages);
} }