Uma solução alternativa de chipset que já tem mais de 20 anos está prejudicando os modernos sistemas AMD Linux. O alerta é do engenheiro da AMD, K Prateek Nayak. Ele descobriu recentemente que uma solução alternativa de chipset de aproximadamente 20 anos no kernel Linux ainda sendo aplicada a sistemas AMD modernos é responsável, em alguns casos, por prejudicar o desempenho no hardware Zen moderno. Felizmente, uma correção está a caminho para limitar essa solução alternativa a sistemas antigos e, por sua vez, ajudar no desempenho de sistemas modernos.
Semana passada foi um patch postado para o código ocioso do processador ACPI para evitar uma solução alternativa de chipset antigo em sistemas AMD Zen modernos. Desde que o suporte ACPI foi adicionado ao kernel do Linux em 2002, houve uma “operação de espera fictícia” para lidar com alguns chipsets em que o STPCLK# não é declarado a tempo. A leitura de E/S fictícia atrasa o processamento de instruções adicionais até que a CPU seja totalmente parada. Este foi um problema com pelo menos alguns sistemas da era AMD Athlon com um chipset VIA… Mas não um problema com chipsets mais novos das últimas duas décadas.
Solução alternativa de chipset de 20 anos prejudica os modernos sistemas AMD Linux
Com essa solução alternativa ainda sendo aplicada a sistemas AMD modernos, K Prateek Nayak descobriu:
A amostragem de certas cargas de trabalho com IBS no sistema AMD Zen3 mostra que uma quantidade significativa de tempo é gasta na operação fictícia, que incorretamente é contabilizada como residência C-State. Um grande valor de residência C-State pode preparar o controlador cpuidle para recomendar um C-State mais profundo durante as instâncias inativas subsequentes, iniciando um ciclo vicioso, levando à degradação do desempenho em cargas de trabalho que alternam rapidamente entre as fases ocupadas e inativas.
Uma dessas cargas de trabalho é o tbench, onde uma degradação massiva de desempenho pode ser observada durante determinadas execuções.
Pelo menos para o Tbench, essa solução alternativa incondicional de longa data no kernel do Linux está prejudicando o desempenho do AMD Ryzen/Threadripper/EPYC em atividades selecionadas:
Essa solução alternativa não afetou os sistemas Intel modernos, pois essas plataformas Intel mais recentes usam o caminho de código de driver intel_idle baseado em MWAIT alternativo.
O patch da AMD evoluiu para este patch do engenheiro da Intel Linux Dave Hansen. Esse patch para limitar a solução de “espera fictícia” para sistemas antigos já está enfileirado no ramo x86/urgente do TIP. Com ele seguindo o caminho de “x86/urgente” e para corrigir uma solução alternativa excessivamente cuidadosa que não é necessária em hardware moderno, é provável que esse patch seja enviado esta semana ainda para o kernel Linux 6.0, em vez de precisar esperar até o próximo ( v6.1) janela de mesclagem.