Come migrare tutte le pagine di memoria di un processo da un nodo NUMA a un altro nodo NUMA?


10

In Linux, voglio eseguire la migrazione delle pagine di memoria di una macchina virtuale KVM da un nodo NUMA a un altro nodo NUMA in fase di runtime. Ma non riesco a trovare alcuna interfaccia per farlo nell'hypervisor KVM o usando l'API libvirt. Quindi ho provato a utilizzare la numa_migrate_pagesfunzione -lnumae migrare le pagine di memoria del processo VM. Ma ho scoperto che la numa_migrate_pagesfunzione può migrare solo alcune pagine, non può migrare tutte le pagine. Ad esempio, il testo seguente mostra la distribuzione delle pagine di memoria di questo processo VM:

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

E voglio migrare tutte le pagine da Node2 a Node0. Ma dopo aver usato la numa_migrate_pagesfunzione, vengono migrate solo alcune pagine, come mostra il testo seguente:

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

Quindi apro il file e trovo che la maggior parte delle pagine rimaste su Nodo2 sono pagine anonime e sporche:/proc/[pid of VM process]/numa_maps

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

Quindi perché non è possibile migrare tutte le pagine in Node2 in Node0? Qual è il problema qui?


3
non pubblicare immagini quando si incollerà il testo. le immagini non possono essere ricercate o incollate nelle risposte e non possono nemmeno essere lette su monitor significativamente diversi dai tuoi (ad es. caratteri illeggibili minuscoli su monitor più grandi e ad alta risoluzione) o da utenti ipovedenti che utilizzano software di lettura dello schermo come Jaws.
Cas

Presumo che tu stia eseguendo le pagine di migrazione numa come root?
Lmwangi,

@Lmwangi sì, sto correndo come root.
Jenson,

Ci sono abbastanza pagine gratuite su Nodo0 per completare la transazione?
Aaron Walerstein il

Risposte:


1

Vuoi il migratepagesbinario nel numactlpacchetto.

Utilizzo ed esempio

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

limitazioni

Hardware VM

Le pagine possono essere bloccate su un nodo, ad es. se si riferivano al pass-through hardware e rappresentano hardware situato su un nodo specifico.

Memoria libera e dimensioni della pagina

Ovviamente hai bisogno di memoria sufficiente sul nodo di destinazione, ma non deve essere troppo frammentato per spostare pagine di grandi dimensioni. Se una delle pagine è un'allocazione contigua di ordine elevato e la memoria libera del nodo di destinazione non ha aree libere sufficientemente grandi, lo spostamento della pagina di grandi dimensioni potrebbe non riuscire (a seconda della compattazione avviata e riuscita).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.