¿Cómo migrar todas las páginas de memoria de un proceso de un nodo NUMA a otro nodo NUMA?

10

En Linux, quiero migrar las páginas de memoria de una máquina virtual KVM de un nodo NUMA a otro nodo NUMA en tiempo de ejecución. Pero no puedo encontrar ninguna interfaz para hacer eso en el hipervisor KVM o usando la API libvirt. Luego intenté usar la numa_migrate_pagesfunción -lnumay migrar las páginas de memoria del proceso VM. Pero descubrí que la numa_migrate_pagesfunción solo puede migrar algunas páginas, no puede migrar todas las páginas. Por ejemplo, el texto a continuación muestra la distribución de páginas de memoria de este proceso de VM:

Node0:  0             pages
Node1:  1538          pages
Node2:  270641        pages
Node3:  552           pages

Y quiero migrar todas las páginas en Node2 a Node0. Pero después de usar la numa_migrate_pagesfunción, solo se migran algunas páginas, como muestra el texto a continuación:

Node0:  7952          pages
Node1:  1538          pages
Node2:  262113        pages
Node3:  552           pages

Luego abro el archivo y encuentro que la mayoría de las páginas que quedan en el Nodo2 son páginas anónimas y sucias:/proc/[pid of VM process]/numa_maps

7f572c000000 default anon=262143 dirty=262143 N2=262113 ...

Entonces, ¿por qué no se pueden migrar todas las páginas del Nodo2 al Nodo0? ¿Cuál es el problema aquí?

Jenson
fuente
3
no publique imágenes cuando pegue el texto. las imágenes no se pueden buscar ni pegar en respuestas, y ni siquiera se pueden leer en monitores significativamente diferentes a los suyos (por ejemplo, fuentes indescifrablemente pequeñas en monitores más grandes y de mayor resolución) o por usuarios con discapacidad visual que utilizan software de lectura de pantalla como Mandíbulas.
cas
¿Supongo que está ejecutando las páginas de migración de numa como root?
Lmwangi
@Lmwangi sí, me estoy ejecutando como root.
Jenson
¿Hay suficientes páginas gratuitas en el Nodo 0 para completar la transacción?
Aaron Walerstein el

Respuestas:

1

Desea el migratepagesbinario en el numactlpaquete.

Uso y ejemplo

sudo migratepages $VM_PID $SRC_NODE $DEST_NODE
sudo migratepages 12345 2 0

Limitaciones

Hardware VM

Las páginas pueden estar bloqueadas a un nodo, por ejemplo. si se relacionan con el paso de hardware y representan hardware ubicado en un nodo específico.

Memoria libre y tamaño de página

Obviamente, necesita suficiente memoria libre en el nodo de destino, pero también no debe estar demasiado fragmentado para mover páginas grandes. Si una de las páginas es una asignación contigua de orden grande, y la memoria libre del nodo de destino no tiene regiones libres lo suficientemente grandes, entonces el movimiento de la página grande puede fallar (dependiendo de que la compactación se active y tenga éxito).

robbat2
fuente