Usando memória compartilhada por meio de tmpfs e NUMA em x86_64/Linux

Usando memória compartilhada por meio de tmpfs e NUMA em x86_64/Linux

Aqui está o que eu gostaria de fazer: colocar um arquivo em tmpfs, mas garantir que tudo (todas as páginas) termine no mesmo nó NUMA. Primeiro, pensei que isso seria trivial: eu apenas usaria mmap()um arquivo tmpfs para vinculá-lo ao nó que desejo e depois apenas copiaria. No entanto, a página de manual do mbind() exclui explicitamente esta abordagem:MAP_SHAREDmbind()

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

Caramba! A mbind()página de manual diz que, para mapeamentos compartilhados, só posso confiar na política de memória do processo (usando set_mempolicy()). Mas isso está longe de ser o ideal: estou executando um aplicativo com muitos threads e prefiro não me importar com qual thread está fazendo a cópia. Prefiro que a política de memória esteja vinculada ao tmpfsarquivoem vez disso, tornando minha vida mais fácil.

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

informação relacionada