Alternatively, there is a get_mempolicy function in -lnuma: http://linux.die.net/man/2/get_mempolicy
If flags specifies both MPOL_F_NODE and MPOL_F_ADDR, get_mempolicy() will return the node ID of the node on which the address addr is allocated into the location pointed to by mode. If no page has yet been allocated for the specified address, get_mempolicy() will allocate a page as if the process had performed a read [load] access to that address, and return the ID of the node where that page was allocated.
Thus, the numa node of the page ptr points to is marked:
int numa_node = -1; get_mempolicy(&numa_node, NULL, 0, (void*)ptr, MPOL_F_NODE | MPOL_F_ADDR); return numa_node;
mrlarkin
source share