Found more info: At: Documentation/vm/page_migration: Page migration allows the moving of the physical location of pages between nodes in a numa system while the process is running. This means that the virtual addresses that the process sees do not change. However, the system rearranges the physical location of those pages. The main intend of page migration is to reduce the latency of memory access by moving pages near to the processor where the process accessing that memory is running. Page migration allows a process to manually relocate the node on which its pages are located through the MF_MOVE and MF_MOVE_ALL options while setting a new memory policy via mbind(). The pages of process can also be relocated from another process using the sys_migrate_pages() function call. The migrate_pages function call takes two sets of nodes and moves pages of a process that are located on the from nodes to the destination nodes. Page migration functions are provided by the numactl package by Andi Kleen (a version later than 0.9.3 is required. Get it from ftp://ftp.suse.com/pub/people/ak). numactl provided libnuma which provides an interface similar to other numa functionality for page migration. cat /proc/<pid>/numa_maps allows an easy review of where the pages of a process are located. See also the numa_maps manpage in the numactl package. Interesting.....so this is the why part.....and for the how part? In cpuset filesystem memory migration can be configured: http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=linux&db=man&fname=/usr/share/catman/man4/cpuset.4.html The cpuset filesystem, /dev/cpuset, is explained in detail in above link. To quote: Memory Migration Normally, under the default setting (disabled) of memory_migrate, once a page is allocated (given a physical page of main memory) then that page stays on whatever node it was allocated, so long as it remains allocated, even if the cpusets memory placement policy mems subse- quently changes. When memory migration is enabled in a cpuset, if the mems setting of the cpuset is changed, then any memory page in use by any task in the the page was on the second valid node of the prior cpuset, then the page will be placed on the second valid node of the new cpuset, if pos- sible. -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ