When we are working on a NUMA system, the memory may be local or remote relative to the current NUMA node. To make memory more local, there is a "first touch" policy (default binding strategy for node): http://lse.sourceforge.net/numa/status/description.html
Linking with default memory It is important that the memory of user programs is allocated on the node next to the one in which the processor on which they are running is located. Therefore, by default, page errors are executed using memory from a node containing a processor with a page error. Since the first processor that touches the page is the one that causes the error in this page, this policy is called the “first touch” by default.
http://techpubs.sgi.com/library/dynaweb_docs/0640/SGI_Developer/books/OrOn2_PfTune/sgi_html/ch08.html
The default policy is called first-touch. In accordance with this policy, a process that first affects (i.e. writes or reads) a memory page causes this page to be allocated in the node on which the process is running. This policy works well for serial programs and for many parallel programs.
There are also some other non-local policies. There is also a function that requires explicitly moving a memory segment to some NUMA node.
But sometimes (in the context of many threads of individual applications) it may be useful to have a “next touch” policy: call some function to “untie” some memory area (up to 100 mb) with some data and re-apply the “first touch” in this region, which will transfer the page at the next touch (read or write) to numa node access to the stream.
This policy is useful when there is huge data for processing by many threads and there are different patterns of access to this data (for example, the first phase is dividing a 2D array into columns by flows, the second is dividing the same data into rows).
This policy was supported in Solaris 9 through madvice with the flag MADV_ACCESS_LWP
https://cims.nyu.edu/cgi-systems/man.cgi?section=3C&topic=madvise
MADV_ACCESS_LWP Tell the kernel that the next LWP touch the specified address range will have access to it to the greatest extent, so the kernel should try to allocate memory and other resources for this and LWP, respectively.
There was (maybe 2009) a patch for the linux kernel with the name "affinity-on-next-touch", http://lwn.net/Articles/332754/ ( thread ), but as I understand it, it was not accepted in highway, right?
Lee Shermerhorn's "migrate_on_fault" patches have also been fixed http://free.linux.hp.com/~lts/Patches/PageMigration/ .
So the question is: is there any next touch for NUMA in the current Vanilla Linux kernel or in some major fork, for example in the RedHat Linux kernel or Linux Linux kernel?