Encontraron un parche olvidado en el kernel de Linux que afecta el rendimiento de las CPU AMD

El kernel Linux 6.0, que se espera sea lanzado el próximo lunes, incluye un cambio que aborda los problemas de rendimiento con los sistemas que se ejecutan en procesadores AMD Zen. Se descubrió que la fuente de la caída del rendimiento fue el código agregado hace 20 años para solucionar un problema de hardware en algunos conjuntos de chips. El problema de hardware se solucionó hace mucho tiempo y no aparece en los conjuntos de chips actuales, pero la antigua solución para el problema se ha olvidado y se ha convertido en una fuente de degradación del rendimiento en sistemas basados ​​en CPU AMD modernas. Los nuevos sistemas con CPU Intel no se ven afectados por la solución anterior, ya que acceden a ACPI mediante un controlador intel_idle separado y no el controlador general Processor_idle.

En marzo de 2002 se agregó una solución alternativa al kernel para bloquear la aparición de un error en los conjuntos de chips asociado con una configuración incorrecta del estado inactivo debido a un retraso en el procesamiento de la señal STPCLK#. Para solucionar el problema, la implementación ACPI agregó una instrucción WAIT adicional, que ralentiza el procesador para que el chipset tenga tiempo de entrar en un estado inactivo. Al crear perfiles utilizando instrucciones IBS (muestreo basado en instrucciones) en procesadores AMD Zen3, se descubrió que el procesador dedica una cantidad significativa de tiempo a ejecutar stubs, lo que conduce a una interpretación incorrecta del estado de carga del procesador y a la configuración de modos de suspensión más profundos (C- State) por la CPU del procesador.

Este comportamiento se refleja en un rendimiento reducido bajo cargas de trabajo que frecuentemente alternan entre estados inactivos y ocupados. Por ejemplo, cuando se utiliza un parche que desactiva la maniobra de derivación, los promedios de las pruebas en banco aumentan de 32191 MB/s a 33805 MB/s.

Fuente: opennet.ru

Añadir un comentario