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
Alguém tem alguma idéia sobre como resolver esse problema?