Серверное декодирование на видеокартах

Если при обработке принимаемых от камер видеопотоков используется программный детектор движения и/или серверные модули видеоаналитики, то на сервере можно задействовать декодирование видеопотоков на видеокартах (GPU). Это позволяет:

  • Сократить нагрузку на центральные процессоры (CPU).

  • Обрабатывать больше камер на одном сервере.

  • Использовать менее производительные CPU.

Требования и рекомендации

  • Поддерживаются только видеокарты из приведённого на сайте NVIDIA списка.

  • Поддерживаются кодеки H.264, H.265 и MJPEG.

    Внимание

    Для обеспечения стабильной работы декодирования на видеокартах NVIDIA рекомендуем использовать драйверы NVIDIA версии 552 или ниже.

    Драйверы для Windows можно скачать по следующим ссылкам:

    Архив драйверов для Linux:

    Примечание

    Декодирование на GPU видео, закодированного с помощью MJPEG, не даёт выигрыша по сравнению с декодированием этого видео на CPU.

    Подробная информация об ограничениях на разрешение видео и о поддерживаемых профили кодеков приведена на сайте NVIDIA.

Включение и настройка

Для включения и настройки серверного декодирования на видеокарте:

  1. Запустите приложение Macroscop Конфигуратор.

  2. Перейдите на страницу Серверы.

  3. Выберите сервер в списке и на вкладке Информация нажмите кнопку Настроить (либо выберите в контекстном меню пункт Настроить).

../../_images/servers.png
  1. В открывшемся окне переключитесь на вкладку Прочее.

../../_images/server-config-other.png
  1. Включите опцию Использовать декодирование на GPU.

  2. Если на сервере установлено несколько видеокарт, выберите в списке те видеокарты, которые будут использоваться для декодирования.

  3. Для сохранения внесенных изменений нажмите кнопку Применить серверные настройки.

Особенности настройки и использования

После первоначальной установки сервера или после обновления сервера с версии 4.0 и ниже опция Использовать декодирование на GPU по умолчанию выключена. После обновления сервера с версии 4.1 и выше состояние опции Использовать декодирование на GPU сохраняется.

Список видеокарт:

  • В списке отображаются все найденные в системе видеокарты NVIDIA, даже если видеокарты не поддержкой декодирование.

  • Видеокарты в списке отсортированы в порядке убывания их производительности. Таким образом, самой первой в списке (под номером [0]) будет видеокарта с самой высокой производительностью. При этом порядок видеокарт в списке Macroscop может не совпадать с порядком видеокарт в утилите NVIDIA System Management Interface (nvidia-smi), так как в утилите видеокарты отсортированы по ID шины. Кроме того, в ОС Windows порядок видеокарт в списке Macroscop может не совпадать с порядком видеокарт в Диспетчере задач, поскольку в последнем используется нумерация DirectX.

  • Сервер Macroscop идентифицирует видеокарты по их уникальным серийным номерам (UUID). Поэтому в случае замены ранее выбранной видеокарты на аналогичную новая видеокарта не будет автоматически выбрана для декодирования.

  • Для видеокарт GRID при изменении профиля или количества виртуальных GPU также будет изменяться UUID.

  • Если при включенной опции Использовать декодирование на GPU сервер Macroscop не обнаружит ни одной из выбранных для декодирования видеокарт, будет автоматически выбрана самая производительная (первая в списке) видеокарта. Также первая видеокарта будет выбрана при обновлении сервера Macroscop с версии 4.1, если перед обновлением было включено декодирование.

Балансировка нагрузки:

  • При запуске сервера все камеры декодируются на CPU. Декодирование на GPU начнется только после 30-40 секунд работы сервера. В дальнейшем балансировка осуществляется автоматически, каждые 10 секунд.

  • Распределение нагрузки предполагает поддержание оптимальной средней нагрузки блока декодирования GPU в интервале от 75% до 85% и использование видеопамяти до 80-90%. Таким образом, если нагрузка на блок декодирования GPU не превышает 75%, то часть камер будет перенесена на GPU. Если же нагрузка на блок декодирования GPU превысит 85%, то часть камер будет перенесена на CPU.

  • При распределении нагрузки не учитываются камеры, которые отключены в конфигураторе.

  • Если от камеры принимается несколько потоков, то при распределении нагрузки будут переноситься все потоки.

  • Для более оптимального распределения нагрузки между GPU используется принцип уменьшения количества камер, распределяемых за один цикл балансировке. То есть, чем больше видеокарт используется для декодирования, тем меньшими порциями будут переноситься на них камеры и в результате нагрузка между видеокартами будет распределена точнее.

Возможные проблемы и их устранение

  1. Слишком высокая нагрузка на GPU.

    В такой ситуации в приложениях Macroscop Клиент и Macroscop Статус Инфо будет отображаться следующее предупреждение:

    ../../_images/gpu-overhead.png

    Предупреждение появляется при общей нагрузке на GPU, превышающей 85%. Если нагрузка станет меньше порогового значения, то предупреждение исчезнет.

    Снизить нагрузку на GPU можно одним или несколькими из следующих способов:

    • Выключить в настройках сервера опцию Использовать декодирование на GPU.

    • Изменить настройки видеоаналитики, в том числе, - отключить отдельные или все модули видеоаналитики.

    • Установить дополнительные GPU.

    • Перенести часть камер на другой сервер.

  2. На сервере не найдены подходящие и/или ранее выбранные видеокарты.

    ../../_images/gpu-error-nothing.png ../../_images/gpu-error-not-found.png ../../_images/gpu-error-nothing-not-found.png

    Возможной причиной является отсутствие в системе видеокарт NVIDIA или их неисправность.

    Если в такой ситуации применить настройки сервера, то после устранения проблемы будут выбраны либо ранее выбранные и вновь найденные видеокарты, либо первая видеокарта в списке.

    ../../_images/gpu-ok-first.png

Связанные ссылки

Дополнительные настройки сервера