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_SHARED
mbind()
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?