I've set up my code to carefully load and process data locally on my NUMA system. I think. That is, for debugging purposes I'd really like to be able to use the pointer addresses being accessed inside a particular function, which have been set up by many other functions, to directly identify the NUMA node(s) that the memory pointed at is residing on, so I can check that everything is located where it should be located. Is this possible?
I found this request on msdn http://social.msdn.microsoft.com/Forums/en-US/parallelcppnative/thread/37a02e17-e160-48d9-8625-871ff6b21f72 for the same thing, but the answer uses QueryWorkingSetEx() which appears to be Windows specific. Can this be done on Linux? I'm on Debian Squeeze, to be precise.
Thanks.
There is an
move_pages
function in-lnuma
: http://linux.die.net/man/2/move_pageswhich can report current state of address(page) to node mappings:
So, call may be like:
Alternatively, there is a
get_mempolicy
function in-lnuma:
http://linux.die.net/man/2/get_mempolicyThus, the numa node of a page being pointed at by
ptr
is checked with: