Серьезные и неожиданные сбои серверов HPC GPU/MIG после регулярных обновлений системы.

Вопрос или проблема

Хотя мы уже выяснили причину и обходное решение этой проблемы, я публикую это здесь, потому что это может быть актуально для других, у кого аналогичная настройка.

Проблема

После регулярной периодической процедуры обновления на вычислительном и входном узле GPU нашего кластера HPC возникла проблема, когда сервер неожиданно перезагружался в очень неожиданные моменты. Обновление включало в себя некоторые обновления прошивки SSD, за которыми (после успешной перезагрузки) следовало обновление ОС (RHEL 8.10 oopta). Это включало обновление ядра с 4.18.0-553.30 до 4.18.0-553.36. Это также автоматически обновило программное обеспечение драйвера nvidia до последней версии в потоке (с 565 до 570), включая управление фабрикой (dnf module install nvidia-driver:latest-dkms/fm). После обновления система была успешно протестирована и введена в эксплуатацию. Только когда несколько пользователей одновременно вошли в систему и использовали различные приложения, происходили неожиданные перезагрузки системы. В процессе не оставалось никаких следов в файлах журналов или dmesg. Не было возможности получить журнал сбоев.

Технические характеристики

(неактуальные детали опущены) HPE ProLiant XL675d apollo с восемью GPU устройствами A100-80GB на плате HGX, 2TB RAM, стандартным контроллером RAID и смесью ssd и hdd для ОС и данных соответственно. Из восьми A100, четыре настроены в мультирежим MIG. Программное обеспечение: ОС Red hat 8.10, настроенная с использованием slurm в качестве диспетчера заданий. Мы используем ограничения устройств cgroup, чтобы предотвратить доступ пользователей к GPU-устройствам за пределами slurm-сессий через cgconfig:

...
  # предотвратить доступ к GPU устройствам
  devices {
    devices.deny="c 195:* rwm";
  }

Что мы пробовали?

Мы попробовали много вариантов. Изначально мы подозревали проблему с обновлением прошивки. Откатились назад и обновили всю остальную прошивку, включая GPU. Загружались с оригинальным ядром. Ограничили доступ к GPU. Отключили X через SSH, отключили xRDP. Ничего не помогло. В какой-то момент мы заметили, что сбои часто происходят после запуска приложения, содержащего chrome-sandbox. (Такие как pyCharm, CLion, Visual Code, chromium-browser.) В конце концов мы смогли вызвать сбой и перезагрузку контролируемым образом. Оказалось, что сбой происходил только тогда, когда хотя бы один из A100 был настроен в режиме MIG. Простое начало работы одного из упомянутых приложений вызывало сбой. Даже когда использование GPU было отключено (chromium-browser --disable-gpu) и когда доступ к GPU был ограничен с использованием linux cgroups или slurm.

Решение/обходной путь

Возврат драйверов nvidia к предыдущей версии решил проблему на данный момент:

dnf remove nvidia-driver
dnf module reset nvidia-driver
dnf remove libnvidia-nscq-570-570.86.15-1.x86_64
dnf module install nvidia-driver:565-dkms/fm

Вопрос

Хотя эта конкретная проблема нова с драйверами nvidia v570, мы не уверены, что использование cgconfig является надежным способом ограничения доступа к ресурсам GPU. Будем рады любым мыслям по этому поводу.

Ответ или решение

В контексте обсуждения проблем, связанных с внезапными системными сбоями в высокопроизводительных вычислительных системах (HPC), важно понимать натуру проблемы и какие шаги уже были предприняты для её решения. Описанная вами ситуация довольно специфична и связана с обновлением драйверов NVIDIA и использованием режима Multi-Instance GPU (MIG) на графических процессорах A100. Давайте детально рассмотрим вопрос использования cgconfig для ограничения доступа к GPU.

Теория

Сами по себе возможности операционной системы Linux для управления доступом к аппаратным ресурсам весьма развиты. Контрольные группы Linux (cgroups) позволяют администраторам управлять, ограничивать и изолировать ресурсы, такие как CPU, память, устройства ввода-вывода и другие. В вашем случае, cgroups используется для ограничения доступа к GPU устройствам, что делается с помощью правила devices.deny="c 195:* rwm";.

Существует несколько теорий относительного того, почему использование MIG может вызывать сбои при сочетании с определенными приложениями, основанными на Chrome. Вероятно, проблема связана с вопросами совместимости последних драйверов NVIDIA и особенностями работы MIG. В режиме MIG ресурс GPU делится между несколькими задачами, что может привести к непредсказуемому поведению при взаимодействии с системами, которые требуют полноценного доступа к графическому процессору.

Пример

В обсуждаемом случае, после обновления драйвера NVIDIA до версии 570 были выявлены критические сбои системы. Как оказалось, эти сбои происходили именно в тех приложениях, где используется компонент sandboxes Chrome. Используемая конфигурация включала возможность масштабирования ресурсов GPU с помощью MIG, что само по себе вводит дополнительные сложности, связанные с распределением и управлением ресурсами между несколькими изолированными процессами.

Применение

Теперь, зная параметры и возможности cgroups и особенности MIG, давайте рассмотрим возможные пути решения и улучшения конфигурации для предотвращения подобных инцидентов в будущем.

  1. Обновление драйверов и программного обеспечения:

    • Как временное решение, вы вернулись на предыдущую версию драйвера. В долгосрочной перспективе важно следить за обновлениями от NVIDIA, поскольку в будущих версиях проблема может быть решена.
    • Также рекомендуется тесное сотрудничество с NVIDIA для диагностики и устранения проблем.
  2. Оптимизация настройки MIG:

    • Оптимальная конфигурация режимов и разбиения GPU может существенно повлиять на стабильность системы при использовании современных многоядерных архитектур и технологий виртуализации.
  3. Детальное логирование:

    • Обеспечение и мониторинг расширенного логирования с помощью инструментов, таких как strace и gdb, позволяет лучше понять причину сбоя.
    • Системы APM (Application Performance Management) могут помочь найти перекосы или аномалии в производительности.
  4. Исследование альтернативных методов ограничения:

    • Исследование других механизмов контроля доступа, таких как SELinux, AppArmor, или Kubernetes Device Plugin, для более гибкого и надежного управления ресурсами.
  5. Контроль версий и тестирование:

    • Внедрение более строгой политики контроля версий и более тщательное тестирование обновлений на отдельной тестовой инфраструктуре перед применением в продуктивной среде.

В частности, если вопрос касается надежности cgroups для ограничения доступа к GPU, стоит отметить, что cgroups сами по себе являются надежным инструментом. Однако при работе с драйверами GPU, особенно в контексте новых архитектур как Ampere и MIG, возможны специфические проблемы с совместимостью. В длительной перспективе стоит ориентироваться на обновления и рекомендации от NVIDIA для обеспечения максимальной совместимости и стабильности.

Оцените материал
Добавить комментарий

Капча загружается...