Hace poco se dio a conocer información sobre un fallo bastante particular en la serie de procesadores de servidor AMD EPYC 7002 («Rome») basada en la microarquitectura «Zen 2» distribuida desde 2018.
Y es que en cuestión el fallo hace que el procesador se cuelgue después de 1044 días de funcionamiento continuo (una situación bastante particular y que es algo poco común.
Una breve publicación de AMD indica que los procesadores de servidor de segunda generación están experimentando un problema que impide que los núcleos salgan del modo de ahorro de energía Core C6 State (o CC6) después de un ciclo de ejecución prolongado. Al mismo tiempo, el fabricante afirmó que 1044 días no es un valor absoluto, ya que la falla puede ocurrir antes o después, ya que todo depende de la frecuencia de REFCLK, que permite a los procesadores rastrear el parámetro de tiempo, y de algunos otros factores. Pero el fabricante no proporciona ninguna información sobre exactamente por qué ocurre la falla, por lo que hasta ahora nadie entiende exactamente cuál es la raíz de la falla.
El fallo como tal pone al procesador en un modo «zombi», en el cual no acepta ningún comando ni solicitud de interrupción externa y permanece en este estado a menos que se reinicie.
Estos modos de estado C comienzan en C0, que es el modo operativo normal de la CPU. Cuanto más alto es el número C, más profunda entra la CPU en el modo de suspensión y más señales se apagan. Cuanto más profundo sea el estado de suspensión, más tiempo necesitará la CPU para activarse por completo.
Con este error, una vez que una CPU ingresa a C6 más allá de la marca de 1044 días, se atasca y es necesario reiniciar. La solución es reiniciar el servidor antes de los tres años o deshabilitar el estado de suspensión que causa el error.
AMD no proporciona una explicación más detallada de la causa de la falla. A juzgar por la suposición publicada en Reddit:
El bloqueo se produce cuando el contador en el registro TSC (Time Stamp Counter), que cuenta el número de ciclos de trabajo después del reinicio, a una frecuencia de 2800 MHz alcanza el valor 0x380000000000000 (2800 MHz * 10* *6 * 1042,5, es decir, después de 1042 días y 12 horas).
Ademas de ello, AMD ha mencionado que la corrección del error no se publicara, ya que el problema pasó desapercibido durante mucho tiempo porque los tiempos de actividad de varios años no son típicos de los servidores que deben reiniciarse periódicamente para instalar actualizaciones del kernel o migrar a una nueva versión del sistema operativo para mantenerse actualizado.
Sin embargo, los métodos de actualización del kernel sin reinicio de las distribuciones de Linux y los largos ciclos de mantenimiento (Ubuntu, RHEL y SUSE están respaldados por 10 años) pueden generar largos tiempos de espera para los servidores sin reiniciar.
Los representantes de la compañía dijeron que actualmente hay dos opciones para resolver el problema: los propietarios de servidores en estos procesadores deben reiniciar el sistema para restablecer el temporizador a 1044 días o desactivar por completo el modo de ahorro de energía Core C6 State. Probablemente, ambas opciones son muy poco adecuadas para los propietarios de procesadores de servidor: el modo de ahorro de energía, ya que permite ahorrar mucho dinero en el consumo de energía, por lo que obviamente nadie lo apagará y esperará a que ocurra un error y se congele, luego reiniciar el sistema, tampoco es una solución muy conveniente. Especialmente cuando se trata de algunos componentes realmente importantes de la infraestructura.
Cabe mencionar que este tipo de errores no son raros en el segmento de procesadores (independientemente si son para servidores o para ordenadores de escritorio), ya que muchas veces los modelos comerciales también contienen muchos errores, pero luego intentan parchearlos con una nueva revisión o con arreglos basados en software y firmware.
Finalmente si estás interesado en poder conocer más al respecto, te invito a que consultes la información publicada por AMD.