Сегодня будет история со счастливым концом. Из-за этой истории у нас приостановилось тестирование нового прототипа сервера для четырёх GPU GeForce RTX 4090.
Итак, мы установили восьмой прототип сервера для четырёх GPU GeForce RTX 4090. Подключили, настроили, фары протёрли, завели и отдали разработчикам на тестирование.
Восьмой прототип сервера для четырёх GPU GeForce RTX 4090 — предпрод
Если вы вводите сервер с незнакомой непроверенной конфигурацией, планируйте время на проверку этой самой конфигурации. Месяц. Реально лучше тестировать сервер "в бою" месяц. За это время может всплыть куча проблем, с которыми вы не планировали сталкиваться. Где взять этот месяц — совершенно непонятно. За этот срок наличие тех же самых серверных компонентов не гарантировано, это печально. Приходится или уменьшать сроки тестирования или рисковать и заменять компоненты непроверенными аналогами.
Итак, восьмой прототип первые тесты прошёл и был выпущен в прод. Разработчики подали максимальную нагрузку, сервер ночью весело перезагрузился. Потом через какое-то время снова перезагрузился. И снова. В день могло быть до пяти перезагрузок. Это катастрофа! Прототип не тянет! Стали разбираться.
Предположение первое
Проблемы с драйверами, установленными в ОС.
Два дня ушло на анализ логов системы. Два человека по очереди пытались найти причину спонтанных перезагрузок. Не нашли ничего. Сервер просто перезагружается без следов в логах системы или BMC.
Через два дня вычислили контейнер, при запуске которого сервер уходит в перезагрузку и стали его использовать в качестве лакмусовой бумажки. Чтобы ронять сервер, проверяя различные предположения. Воспроизвести проблему — первый шаг к успешной диагностике. Мы получили код, который стабильно в 100% случаев роняет сервер.
Попытались менять версии драйверов, безрезультатно. Читали форумы — похожих проблем не нашли.
Дополнительно выполнили нагрузочное тестирование CPU. Тест прошёл успешно.
Linux — простой стресс-тест CPU
Предположение второе
Не тянут блоки питания, GPU картам при полной нагрузке не хватает мощности БП. В сервере два блока питания по 2000 Вт каждый. Теоретически должно хватать, но, возможно, какой-то из БП с изъяном? Это можно проверить.
Самый простой способ — ограничить энергопотребление видеокарт и попытаться выполнить проблемный код, приводящий к перезагрузке.
NVIDIA RTX 4090 — ограничиваем энергопотребление
Для этого нужно снизить значение Power Limit. Рулить будем с помощью утилиты командной строки от NVIDIA: nvidia-smi.
Если у вас четыре видеокарты, то лимиты можно установить так:
nvidia-smi -i 0 -pl 150
nvidia-smi -i 1 -pl 150
nvidia-smi -i 2 -pl 150
nvidia-smi -i 3 -pl 150Верхнюю границу энергопотребления GPU можно увидеть также в nvidia-smi.
Как вы уже догадались, проблема повторилась даже с заниженным энергопотреблением. Делаем вывод, что блоки питания не при чём. Снимаем ограничение на энергопотребление.
Предположение третье
Возможно, на одной из видеокарт есть проблемы с памятью. Это можно проверить специальными утилитами.
Нагрузочный тест видеопамяти — memtest_vulkan
Утилита memtest_vulkan — это кроссплатформенный инструмент с открытым исходным кодом, написанный на Vulkan Compute. Разработан как альтернатива инструменту на основе OpenCL memtestCL.
Тест может быть полезен при оценке стабильности при оверклокинге или ремонте GPU. И для проверки на заводские неисправности.
Запускаем тест.
./memtest_vulkanЕсли ничего не трогать, то выберется по умолчанию первая видеокарта. Можно указать нужный номер, при этом обращайте внимание на адрес устройства, он может не совпадать с идентификатором в nvidia-smi.
Так тестируется первая видеокарта, а нагружена четвёртая.
На первых трёх видеокартах короткий тест выполнился успешно. А на четвертой карте через минуту после тестирования сервер ушёл в перезагрузку. Три раза запускали тест на четвёртой видеокарте, три раза сервер перезагружался.

Мы продвинулись. С одной стороны мы не увидели ошибок при тестировании. С другой стороны мы локализовали проблему и сузили круг поиска.
Предположение четвёртое
Проблема может быть:
- В четвёртой видеокарте.
- В шлейфе PCIe.
- В слоте PCIe.
- В процессоре.
- В памяти.
- В кабеле питания видеокарты.
- В материнской плате.
Дальше действуем методом исключения. Мы можем поменять две видеокарты местами и посмотреть, на какой из них при тестировании памяти перезагрузится сервер. Заодно при замене карт почистим слоты и заново подключим все кабели.
Тут ещё мини-квест нарисовался, нужно определить нужные нам видеокарты.
Linux — определить GPU видеокарту NVIDIA в сервере
Зная адрес шины проблемного устройства можно по очереди извлекать GPU карты и смотреть, какое из устройств пропало из системы. Метод научного перетыка, так сказать. Естественно, с корректным выключением и включением сервера. Поэтому при планировании работ с GPU серверами сразу планируйте время на несколько разборок-сборок и перезагрузок сервера. Чем больше видеокарт в сервере, там больше времени может понадобиться.
Квест пройден, все карты помечены. Проблемная видеокарта поменялась местами с соседкой. Разъёмы почистили, шлейфы переткнули.
Включаем сервер, сервер стоит в полуразобранном виде. Тестируем память.

О чудо! Все четыре GPU успешно проходят тестирование.
На радостях собираем сервер, устанавливаем в стойку, включаем. Сервер отказывается загружаться, останавливается на коде BIOS 1. Это уже не смешно. Явно проблема аппаратного характера.
Разбираем сервер, перетыкаем всю память, собираем, включаем. Сервер включился.
Завершение диагностики и тестирования
Делаем вывод, что проблема была аппаратного характера и заключалась в плохом контакте компонентов сервера. Или планка памяти шалила, или шлейф PCIe был плохо подключен. Или и то и другое.
Повторное двухкратное тестирование памяти не выявило проблем. Повторный запуск кода, который раньше ронял сервер, тоже не повлёк за собой каких-либо негативных последствий. Нагрузочное тестирование прошло успешно.
Сервер в проде, трудится под нагрузкой. Не перезагружается.





