Confira !
Uma interessante série de patches do kernel Linux foi publicada esta semana para resolver o comportamento inconsistente de desbalanceamento do NUMA para pelo menos algumas cargas de trabalho. Nesses casos, esses patches abordam as diferenças de desempenho observadas em relação ao número anterior de lançamentos do kernel Linux em andamento por um tempo.
O desenvolvedor de kernel Linux de longa data, Mel Gorman, resumiu bem o problema em sua postagem na lista de discussão do kernel:
Um problema foi relatado em particular relacionado ao desempenho inconsistente do NAS quando paralelizado com MPICH. A raiz do problema é que o posicionamento inicial é imprevisível e pode haver um desequilíbrio maior do que o esperado entre os nós NUMA. Como há capacidade ociosa e as falhas são locais, o desequilíbrio persiste por muito tempo e o desempenho é prejudicado.
Isso não é 100% um problema de "desequilíbrio permitido", pois definir o desequilíbrio permitido como 0 não corrige o problema, mas o desequilíbrio permitido contribui para o problema de desempenho. O comportamento imprevisível foi introduzido mais recentemente pelo commit c6f886546cb8 ("sched/fair: acionar a atualização da carga bloqueada na CPU recentemente inativa").
O mpirun é um fork os hydra_pmi_proxy helpers with MPICH que vão dormir antes de executar a carga de trabalho de destino. Como as novas tarefas estão dormindo, o desequilíbrio potencial não é observado, pois o idle_cpus não reflete as tarefas que serão executadas no futuro próximo. A gravidade do problema depende do momento em que o fork acontece e se as novas tarefas ainda estão em execução. Consequentemente, um grande desequilíbrio inicial pode não ser detectado até que a carga de trabalho esteja totalmente em execução. Uma vez executado, o NUMA Balancing escolhe o nó preferido com base na localidade e o balanceamento de carga em tempo de execução geralmente ignora as tarefas, pois can_migrate_task() falha por motivos de localidade ou task_hot e, em vez disso, seleciona tarefas não relacionadas.
Gorman confirmou que o problema aconteceu por um tempo - começando em torno do Kernel Linux 5.7 ~ 5.8, sendo corrigido no Linux 5.12 e quebrado novamente no Kernel Linux 5.13. Felizmente, ele conseguiu elaborar esta série de patches para resolver esse problema que afeta o NPB com MPICH e potencialmente outras cargas de trabalho também:
Veja esta série de patches para mais detalhes sobre o trabalho pendente.
Até a próxima !!
Nenhum comentário:
Postar um comentário