Patch esquecido encontrado no kernel Linux afetando o desempenho da CPU AMD

O kernel Linux 6.0, com lançamento previsto para a próxima segunda-feira, inclui uma mudança que aborda problemas de desempenho em sistemas rodando em processadores AMD Zen. Descobriu-se que a origem da queda de desempenho foi o código adicionado há 20 anos para solucionar um problema de hardware em alguns chipsets. O problema de hardware foi corrigido há muito tempo e não aparece nos chipsets atuais, mas a antiga solução alternativa para o problema foi esquecida e se tornou uma fonte de degradação de desempenho em sistemas baseados em CPUs AMD modernas. Novos sistemas em CPUs Intel não são afetados pela solução alternativa antiga, pois acessam a ACPI usando um driver intel_idle separado, e não o driver CPU_idle geral.

Uma solução alternativa foi adicionada ao kernel em março de 2002 para bloquear o aparecimento de um bug nos chipsets associado à configuração inadequada do estado inativo devido a um atraso no processamento do sinal STPCLK#. Para contornar o problema, a implementação da ACPI adicionou uma instrução WAIT adicional, que desacelera o processador para que o chipset tenha tempo de entrar em estado inativo. Ao criar perfis usando instruções IBS (Instruction-Based Sampling) em processadores AMD Zen3, descobriu-se que o processador gasta uma quantidade significativa de tempo executando stubs, o que leva a uma interpretação incorreta do estado de carga do processador e à configuração de modos de suspensão mais profundos (C- Estado) pelo cpuidle do processador.

Esse comportamento se reflete na redução do desempenho em cargas de trabalho que frequentemente alternam entre estados inativos e ocupados. Por exemplo, ao usar um patch que desativa a manobra de bypass, as médias do teste de bancada aumentam de 32191 MB/s para 33805 MB/s.

Fonte: opennet.ru

Adicionar um comentário