Как победить дикий вой системы охлаждения серверов Supermicro.

Столкнулся я на днях с интересным делом: собрал сервер на базе шасси Supermicro 826BE16-R920LPB и материнской платы Supermicro X11SSL-F и после включения и загрузки, обнаружил, что система охлаждения сервера не снижает обороты всех вентиляторов, как должна это делать, а завывает по полной. Точнее, она циклически пытается снизить обороты и вновь выкручивает их на максимум, в итоге, получается симулятор завывания вьюги, от которого уже через пару минут пухнет голова 🙂 Поведение явно не здоровое, поэтому начал искать причину.

Разбор полётов.

В BIOS материнской платы ничего отвечающего за регулировку оборотов вентиляторов не обнаружилось — оно и понятно, ведь есть контроллер BMC. В веб-интерфейсе BMC можно переключить режим работы вентиляторов. По умолчанию установлено значение «Optimal Speed», при котором система автоматически регулирует скорость вращения вентиляторов в зависимости от нагрузки. Сразу возникло предположение, что данный режим по какой-то причине работает неправильно, но переключение значение на «Standard Speed» проблему не решило. Было вполне очевидным, что автоматизированная система регулирования скорости вращения вентиляторов работала не корректно, но вот причина была не ясна. А не ясна она была по причине банальной — не было уделено внимание анализу исходных данных, предоставляемых BMC. В журнале, который имеется на BMC, вполне явно была указана ошибка:

FAN2 Description: Lower Critical — Going Low — Assertion

FAN2 Description: Lower Critical — Going Low — De-assertion

После чего, осталось только взглянуть на показания сенсоров, предоставляемые также в веб-интерфейсе BMC и особенно обратить внимание на текущие и пороговые значения для проблемного FAN2, после чего всё становится ясно!

То есть, схема такая:
1) BMC понижает частоты вращения вентиляторов;
2) один из вентиляторов (FAN2, он-же процессорный кулер) снижает обороты до такого значения, которое BMC считает критическим и предполагает, что вентилятор вышел из строя;
3) по тревоге, все вентиляторы, подключённые к материнской плате выкручиваются на максимальные обороты, чтобы не дать перегреться компоненту, который по мнению BMC остался без вентилятора;
4) BMC фиксирует, что вентилятор на самом деле работает, возвращается к пункту №1 и происходит зацикливание.

Так и рождается симулятор вьюги 🙂


Нет, это не ошибка прошивки, а её особенность. Прошивка BMC последней версии, а люди в интернетах пишут о столь странном поведении уже много лет на разных поколениях материнских плат Supermicro. Всё дело в политике подбора кулера для процессора, которой придерживается Supermicro — он должен быть, большим, мощным, дорогим и вообще, лучше чтобы он был из списка протестированных. Но далеко не всем приходит мысль, что кулер должен не только подходить по параметрам совместимости с сокетом и эффективно рассеивать тепловыделение процессора, но ещё и иметь такой параметр, как минимальное количество оборотов в простое. Я вот считаю, что это далеко не очевидно.

Мне в голову сразу пришли несколько решений:
1) Подключить кулер процессора в обход материнской платы, что кроме постоянной его работы на максимальных оборотах рождает ещё и проблемы типа поиска переходника для питсания, удлинителя питания и т.д.
2) Покупка другого кулера, который точно совместим с этой материнской платой. Вариант не плохой на стадии планирования списка комплектующих сервера для покупки, но не когда всё уже куплено и должно работать.
3) Единственно-верный, на мой взгляд, вариант — изменить минимальное пороговое значение скорости вращения проблемного вентилятора, что мы и сделаем.

Используя утилиту ipmitool, подключаемся к BMC и устанавливаем пороговое значение проблемного вентилятора в 200 оборотов в минуту:

ipmitool -H IP-АДРЕС -U ЛОГИН -P ПАРОЛЬ sensor thresh ИМЯ_ВЕНТИЛЯТОРА(FAN2) lower 200 200 200

Наслаждаемся тишиной 🙂

Автор: Yar4e