Usando memória compartilhada através de tmpfs e NUMA em x86_64 / Linux

3

Aqui está o que eu gostaria de fazer: colocar um arquivo em tmpfs mas garantir que tudo isso (todas as páginas dele) acabe no mesmo nó NUMA. Primeiro, achei que isso seria trivial: eu tinha apenas mmap() um arquivo tmpfs com MAP_SHARED e, em seguida, use mbind() para vinculá-lo ao nó que eu quero e depois copio. No entanto, a página man do mbind () explicitamente exclui essa abordagem:

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

Blimey! A página mbind() man diz que, para mapeamentos compartilhados, só posso confiar na política de memória de processo (usando set_mempolicy() ). Mas isso está longe de ser ideal: estou executando um aplicativo altamente multithread e prefiro não me importar com qual thread está fazendo a cópia. Eu prefiro que a política de memória esteja ligada ao arquivo , tornando minha vida mais fácil.

Alguém tem alguma idéia sobre como resolver esse problema?

    
por Lajos Nagy 15.10.2014 / 03:15

0 respostas