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_SHARED
y 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?