Usando memoria compartida a través de tmpfs y NUMA en x86_64/Linux

Usando memoria compartida a través de tmpfs y NUMA en x86_64/Linux

Esto es lo que me gustaría hacer: colocar un archivo en tmpfs pero asegurarme de que todo (todas las páginas) termine en el mismo nodo NUMA. Primero, pensé que esto sería trivial: solo usaría mmap()un archivo tmpfs MAP_SHAREDy luego mbind()lo vincularía al nodo que quiero y luego simplemente lo copio. Sin embargo, la página de manual de mbind() excluye explícitamente este enfoque:

NUMA policy is not supported on a memory-mapped file range 
that was mapped with the MAP_SHARED flag.

¡Caray! La mbind()página de manual dice que para asignaciones compartidas, solo puedo confiar en la política de memoria de proceso (usando set_mempolicy()). Pero eso está lejos de ser ideal: estoy ejecutando una aplicación con muchos subprocesos y prefiero que no me importe qué subproceso está copiando. Preferiría que la política de memoria estuviera vinculada al tmpfs.archivoen cambio, hacer mi vida más fácil.

¿Alguien tiene alguna idea sobre cómo resolver este problema?

información relacionada