Para aqueles que usam a opção de configuração de cluster sub-NUMA (SNC) da Intel disponível em seus servidores desde o Skylake, o código do kernel”resctrl”do controle de recursos do Linux está sendo aprimorado para lidar melhor com essa configuração de recursos.

O agrupamento sub-NUMA permite particionar os controladores de núcleos/cache/memória de uma CPU em vários domínios NUMA. O agrupamento sub-NUMA pode ser benéfico para software otimizado/com reconhecimento de NUMA e semelhante à opção de BIOS NUMA por soquete (NPS) da AMD. Embora esteja disponível há anos e funcione bem no Linux para a funcionalidade esperada, verifica-se que o atual sistema de controle de recursos do kernel do Linux lida mal com o monitoramento da Resource Director Technology (RDT) quando o SNC está ativado.

O engenheiro de longa data da Intel Linux, Tony Luck, explicou com este nova série de patches trabalhando para melhorar o suporte de controle de recursos para servidores de cluster Sub-NUMA:

Os sistemas de servidor Intel começando com Skylake suportam um modo que particiona logicamente cada soquete. Por exemplo. quando particionado de duas maneiras, metade dos núcleos, cache L3 e controladores de memória são alocados para cada uma das partições. Isso pode reduzir a latência média para acessar o cache e a memória L3, com a desvantagem de que apenas metade do cache L3 está disponível para acesso à memória local do subnó.

O sistema Linux resctrl existente lida mal com o monitoramento RDT em sistemas com o modo SNC ativado.

Mas, com algumas mudanças simples, isso pode ser corrigido. Quando o modo SNC está ativado, os contadores RDT RMID também são particionados com os contadores de números baixos indo para a primeira partição e os contadores de números altos indo para a segunda partição. A chave é ajustar o valor RMID gravado no IA32_PQR_ASSOC MSR na troca de contexto e o valor gravado no IA32_QM_EVTSEL ao ler os contadores e alterar o fator de escala que foi lido do CPUID(0xf,1).EBX

Ex. no cluster Sub-NUMA de 2 vias com 200 contadores RMID, há apenas 100 contadores disponíveis para o código resctrl. Ao executar no primeiro nó SNC, os valores RMID 0..99 são usados ​​como antes. Mas ao executar no segundo nó, uma tarefa atribuída a resctrl rmid=10 deve carregar 10+100 em IA32_PQR_ASSOC para usar o contador RMID 110.

Não deve haver alterações na funcionalidade em outras arquiteturas ou em Sistemas Intel com SNC desabilitado, onde snc_ways==1.

Esse comportamento atual ou mudanças propostas não devem afetar o desempenho do SNC, mas sim abordar o monitoramento de controle de recursos adequado para cluster sub-NUMA configurações. Os sete patches que corrigem o código x86/resctrl estão agora disponíveis para revisão.

Categories: IT Info