I am running many multi-threaded processes on a larger NUMA system with dozens of sockets. The memory access across different nodes is very slow, so I restrict each process to one socket and let it use the complete CPU. For this placement I use numactl and its --localalloc option.
From time to time my process placement script accidentally places two processes on one node. I could move the processes from one node to the other using taskset or the like, but the allocated memory would stay behind.
Since I know it is possible to move memory pages between NUMA nodes transparently, I was wondering whether any command line utility exists to do this?