Como migrar todas as páginas de memória de um processo de um nó NUMA para outro nó NUMA?

10

No Linux, desejo migrar as páginas de memória de uma máquina virtual KVM de um nó NUMA para outro nó NUMA no tempo de execução. Mas não consigo encontrar nenhuma interface para fazer isso no hypervisor KVM ou usando a API libvirt. Depois, tentei usar a numa_migrate_pagesfunção -lnumae migrar as páginas de memória do processo da VM. Mas descobri que a numa_migrate_pagesfunção pode migrar apenas algumas páginas, não pode migrar todas as páginas. Por exemplo, o texto abaixo mostra a distribuição das páginas de memória deste processo da VM:

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

E eu quero migrar todas as páginas no Nó2 para o Nó0. Mas depois de usar a numa_migrate_pagesfunção, apenas algumas páginas são migradas, como mostra o texto abaixo:

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

Em seguida, abro o arquivo e percebo que a maioria das páginas restantes no Node2 são páginas anônimas e sujas:/proc/[pid of VM process]/numa_maps

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

Então, por que não é possível migrar todas as páginas no Nó2 para o Nó0? Qual é o problema aqui?

Jenson
fonte
3
não poste imagens ao colar o texto. as imagens não podem ser pesquisadas ou coladas em respostas e nem mesmo podem ser lidas em monitores significativamente diferentes dos seus (por exemplo, fontes minúsculas ilegíveis em monitores maiores e de maior resolução) ou por usuários com deficiência visual usando software de leitura de tela como Mandíbulas.
cas
Presumo que você esteja executando as páginas de migração de numa como root?
Lmwangi
@Lmwangi sim, estou executando como root.
Jenson
Existem páginas gratuitas suficientes no Nó0 para concluir a transação?
Aaron Walerstein 23/03

Respostas:

1

Você quer o migratepagesbinário no numactlpacote.

Uso e exemplo

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

Limitações

Hardware da VM

As páginas podem ser bloqueadas para um nó, por exemplo. se eles estiverem relacionados à passagem de hardware e representam hardware localizado em um nó específico.

Memória livre e tamanho da página

Obviamente, você precisa de memória livre suficiente no nó de destino, mas também não precisa ser fragmentado demais para mover páginas grandes. Se uma das páginas for uma alocação contígua de ordem grande e a memória livre do nó de destino não tiver regiões livres grandes o suficiente, a movimentação da página grande poderá falhar (dependendo da compactação sendo acionada e bem-sucedida).

robbat2
fonte