Confira !!
Fundido no ano passado para o Linux 5.16 foi a chamada do sistema FUTEX2 para melhorar a interface FUTEX no Linux e com a motivação original para essas melhorias aguardarem vários futexes para que o Wine/Proton possa corresponder melhor ao comportamento do Microsoft Windows para uma experiência de jogo Linux mais otimizada. Além do benefício de desempenho/eficiência do FUTEX2, outras melhorias também foram comentadas enquanto estamos começando a ver ação em uma delas: a conscientização do NUMA.
O foco principal no trabalho original do FUTEX2 foi com "futex_waitv" para atender às necessidades do Wine/Proton combinando melhor o comportamento WaitForMultipleObjects do Windows com emulação mais eficiente. Voltando aos tempos de revisão do patch, outros recursos do FUTEX2 mencionados foram futexes de tamanho variável, reconhecimento de NUMA e outros aprimoramentos na interface original do FUTEX. Enviado hoje por André Almeida de Igalia foi um pedido de comentários sobre o aspecto de conscientização do NUMA para o FUTEX2.
André Almeida resumiu assim:
* O problema
futex tem uma única tabela de hash global para armazenar informações de waiters atuais a serem consultadas por wakers. Essa tabela de hash é armazenada em um único nó em máquinas não uniformes. Isso significa que um processo executado em outros nós terá algum overhead usando futex, já que precisará acessar a tabela em um nó diferente.
* Uma solução
Para máquinas NUMA, seria alocada uma tabela por nó. Os processos, então, seriam capazes de usar a tabela local para evitar o compartilhamento de dados com outros nós.
Almeida propôs uma interface para o FUTEX2 para lidar com esse aspecto de conscientização do NUMA. Atualmente ele está procurando comentários/feedback de desenvolvedores upstream sobre o design para ver se vale a pena seguir em frente.
Até a próxima !!
Nenhum comentário:
Postar um comentário