Найти тему
Проект OpenNet

Ошибка в CPU AMD EPYC 7002 приводит к зависанию после 1044 дней работы

В поставляемой с 2018 года серии серверных процессоров AMD EPYC 7002 ("Rome"), построенных на базе микроархитектуры "Zen 2", выявлена ошибка, в результате которой процессор зависает после 1044 дней работы без сброса состояния (перезагрузки системы). В качестве обходных путей блокирования проблемы рекомендуется отключить поддержку энергосберегающего режима CC6 или перезагружать сервер чаще, чем раз в 1044 дней (примерно 2 года 10 месяцев).

По информации, опубликованной компанией AMD, зависание вызвано сбоем, возникающим при попытке выхода процессорного ядра из энергосберегающего режима CC6 (core-C6, понижает напряжение при бездействии) при достижении таймером значения в 1044 дней после последнего сброса состояния CPU (время проявления может меняться в зависимости от частоты REFCLK).

Более детального пояснения причины сбоя компания AMD не приводит. Судя по опубликованному на Reddit предположению, зависание происходит когда счётчик в регистре TSC (Time Stamp Counter), отсчитывающем число рабочих циклов после сброса, при частоте 2800 MHz достигает значения 0x380000000000000 (2800 MHz * 10**6 * 1042.5, т.е. спустя 1042 дня и 12 часов).

Исправление ошибки публиковать не планируется. Проблема долгое время оставалась не замеченной так как многолетние uptime не типичны для серверов, которые для поддержания в актуальном состоянии периодически приходится перезапускать для установки обновлений ядра или для перехода на новый выпуск операционной системы. Тем не менее, применение в Linux дистрибутивах методов обновления ядра без перезагрузки, а также длительные циклы сопровождения (Ubuntu, RHEL и SUSE поддерживаются 10 лет) могут привести к долгому нахождению серверов без перезагрузки.