LINUX.ORG.RU

ZoneMinder 1.36 настройка аппаратного ускорения на AMD GPU и CentOS 7

 , , , ,


0

1

Всем привет. Исходные данные: Hardware: HP ProLiant ML310e Gen8 v2, Xeon® E3-1270 v3, 8 Gb Ram, ILO on board video, AMD RX 550 2Gb

7 шт IP камер 5MP (2592x1944) Video Codec H.265/H.264 (HP/MP/BP)/MJPEG Настроены на H.264 (И сейчас понижено разрешение до 1080р т.к. грузили проц в 100% и система залипала)

Software: CentOS 7.9, Чистая установка ZoneMinder 1.36, Установил amdgpu-pro-17.40-492261 (думал так заработает vaapi)

В BIOS ML310e: Primary ILO on board video, Secondary AMD RX 550

Настроки камер(монитор) в ZoneMinder «Вкладка Основное» Смещение опорных кадров убрал (No blending) «Вкладка Источник» DecoderHWAccelName vaapi

Убрал все Зоны однаружения движения.

В Моменте две камеры пишут с настройками «camera passthrought». Остальные на просмотр(монитор).

При настройке камер 5MP (2592x1944) проц постоянно в 100% и начинает залипать сам веб интервейс ЗМ. Я добавил в систему AMD RX 550 2Gb что бы разгрузить проц хотя бы при просмотре но применяя DecoderHWAccelName vaapi нет эффекта. radeontop показывает что на карте нет активности.

В опциях ЗМ ffmpeg включен. ffmpeg -hide_banner -encoders отображает наличие vaapi

Не понимаю куда копать… Пытался в биосе менять местами видеоадаптеры и отключать встроенный, но нагрузка на ГПУ не появляется. Есть кто поднимал успешно ЗМ с аппаратным ускорением? Поделитесь опытом, пожалуйста. Или может кто в целом понимает в настройках аппаратного ускорения.

П.С. Сразу отвечу на вопрос почему именно CentOS 7 и он должен остаться: к сожалению НР драйвера для B120i остановила на Линукс данной версии. Это хоть и недорейд, но для данной цели подходит идельно.



Последнее исправление: Akhelinux (всего исправлений: 10)

Ответ на: комментарий от Dimez

[root@zmserver scripts]# ffmpeg -hwaccels ffmpeg version 3.4.12 Copyright (c) 2000-2022 the FFmpeg developers built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-44) configuration: –prefix=/usr –bindir=/usr/bin –datadir=/usr/share/ffmpeg –docdir=/usr/share/doc/ffmpeg –incdir=/usr/include/ffmpeg –libdir=/usr/lib64 –mandir=/usr/share/man –arch=x86_64 –optflags=‘-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong –param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic’ –extra-ldflags=‘-Wl,-z,relro ’ –extra-cflags=’ ’ –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libvo-amrwbenc –enable-version3 –enable-bzlib –disable-crystalhd –enable-fontconfig –enable-gcrypt –enable-gnutls –enable-ladspa –enable-libass –enable-libbluray –enable-libcdio –enable-libdrm –enable-indev=jack –enable-libfreetype –enable-libfribidi –enable-libgsm –enable-libmp3lame –enable-nvenc –enable-openal –enable-opencl –enable-opengl –enable-libopenjpeg –enable-libopus –disable-encoder=libopus –enable-libpulse –enable-librsvg –enable-libsoxr –enable-libspeex –enable-libtheora –enable-libvorbis –enable-libv4l2 –enable-libvidstab –enable-libvpx –enable-libx264 –enable-libx265 –enable-libxvid –enable-libzvbi –enable-avfilter –enable-avresample –enable-libmodplug –enable-postproc –enable-pthreads –disable-static –enable-shared –enable-gpl –disable-debug –disable-stripping –shlibdir=/usr/lib64 –enable-libmfx –enable-runtime-cpudetect libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 Hardware acceleration methods: vdpau qsv vaapi cuvid

Akhelinux
() автор топика
Ответ на: комментарий от KillTheCat

согласен что ZoneMinder не торт, НО! у него есть десктопное и мобильное приложения рабочие. А это важно.

frigate приметил недавно. буду изучать, но то что увидел на бегу - нет внятного описания как ставить на CentOS.

Agent DVR от ispy куда интереснее выглядит, но нам не понял мутки про подписку. Нужно тестить отдельно

Akhelinux
() автор топика
Ответ на: комментарий от Dimez

Спору нет что zfs лучше чем софт-рейд, НО! там сложности заменить диск. Имеется ввиду что нужно лезть в систему и т.д.

В данном случае мы имеем инициализированные в системе виртуальные диски рейда. Если диск умер, то вынимаем из корзины - перезагрузка - в процессе нее он видит битый массив - спрашивает пересобрать - подтверждаешь и поехали. Я же изначально написал, что и CentOS 7 из-за этого… Но такова задача. ( Таков путь!)) ) Р.С. Я не знаю как тут на форуме вставлять форматирования текста. Оно лепит все в одну массу…

Akhelinux
() автор топика

root@zmserver scripts]# lshw -c display

*-display

   description: VGA compatible controller

   product: Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X]

   vendor: Advanced Micro Devices, Inc. [AMD/ATI]

   physical id: 0

   bus info: pci@0000:04:00.0

   version: c7

   width: 64 bits

   clock: 33MHz

   capabilities: pm pciexpress msi vga_controller bus_master cap_list rom

   configuration: driver=amdgpu latency=0

   resources: irq:31 memory:e0000000-efffffff memory:dfe00000-dfffffff ioport:5000(size=256)

memory:fbfc0000-fbffffff memory:fbf00000-fbf1ffff

*-display

   description: VGA compatible controller

   product: MGA G200EH

   vendor: Matrox Electronics Systems Ltd.

   physical id: 0.1

   bus info: pci@0000:01:00.1

   version: 00

   width: 32 bits

   clock: 33MHz

   capabilities: pm msi pciexpress vga_controller bus_master cap_list rom

   configuration: driver=mgag200 latency=0

   resources: irq:16 memory:9f000000-9fffffff memory:fbde0000-fbde3fff memory:fb000000-fb7fffff
Akhelinux
() автор топика

[root@zmserver scripts]# lspci -k | grep VGA

01:00.1 VGA compatible controller: Matrox Electronics Systems Ltd. MGA G200EH

04:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X] (rev c7)

[root@zmserver scripts]# lspci -k

04:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X] (rev c7)

Subsystem: Hewlett-Packard Company Device 841e

Kernel driver in use: amdgpu

Kernel modules: amdgpu
Akhelinux
() автор топика

Тут в итоге выяснил что драйвера, то Я по сути не поставил ))) amdgpu-pro как оказалось это надстройка над amdgpu. Сейчас снес amdgpu-pro и поставил amdgpu 22.20

Но при этом вылезла другая проблема

[root@zmserver ~]# LIBVA_DRIVER_NAME=radeonsi vainfo

libva info: VA-API version 0.40.0

libva info: va_getDriverName() returns -1

libva info: User requested driver ‘radeonsi’

libva info: Trying to open /usr/lib64/dri/radeonsi_drv_video.so

libva error: /usr/lib64/dri/radeonsi_drv_video.so has no function __vaDriverInit_0_32

И вот тут поиски информации в инете не дают толковой информации куда копать… Причем Я эмулировал ситуацию на другой машине где только Вега64 стоит в основе и кстати результат тоже. Причем там дрова чутка свежее, но это не критично. Я думал проблема в ядре 3.10, но

Driver and hardware support added to kernel 3.10 includes support for the UVD hardware found in AMD Radeon graphics cards from the 4000 series and beyond, and allows for hardware accelerated video decoding.

Моя версия ядра 3.10.0-1160.83.1.el7.x86_64

Теперь нужно что бы vainfo дал информацию по декодерам. А он дает только ошибку…

Akhelinux
() автор топика
Ответ на: комментарий от KillTheCat

это где такое «везде» в реальном применении в докере? Вы о чем? Какой докер? В общем это перейдет в полемику. Давайте остановимся просто на том что вариант «в докере» мне не подходит.

Akhelinux
() автор топика
Ответ на: комментарий от mrjaggers

если бы Я был профи в линуксе, то меня бы тут не было. А так Я и не скрываю того факта что не разбираюсь. Я описал порядок который имел место быть. Как следствие «не работает системщина» мне не о чем не говорит. Если у вас есть что сказать по сути вопроса, то пожалуйста. Если нет, то в чем идея данного флуда? Вас как то лично задевает что обратился к конкретному человеку?

Akhelinux
() автор топика
Ответ на: комментарий от Akhelinux

Решил ошибки в vainfo понижением версии драйверов. На каком то ресурсе вычитал что для установки (точнее для работы) свежих драйверов на CentOS 7 нужно обновлять ядро до 5.15 и выше. Мне такой вариант не подходит т.к. тогда отваливаются драйвера на пресловутый B120i. Как следствие решил перебирать дрова до выхода ядра 5.15. остановился на Radeon™ Software for Linux® 18.50 и установка только AMDGPU All-Open. Кстати версии ниже не «завелись». В итоге

[root@zmserver ~]# vainfo --device /dev/dri/renderD128 --display drm
libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_0_40
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.40 (libva )
vainfo: Driver version: Mesa Gallium driver 18.2.0-rc3 for Radeon RX550/550 Series (POLARIS12, DRM 3.27.0, 3.10.0-1160.83.1.el7.x86_64, LLVM 7.0.1)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileNone                   :	VAEntrypointVideoProc

Следующий шаг это оценить эффект от применения параметров

DecoderHWAccelName vaapi 
DecoderHWAccelDevice /dev/dri/renderD128

запускаем radeontop

до применения параметров

9М / 2043М VRAM   0,46% │
7M / 3065M GTT   0,24% │
0,30G / 1,75G Memory Clock  17,14% │         
0,21G / 1,18G Shader Clock  18,09%
после применения параметров

132М / 2043М VRAM   6,45% │   
38M / 3065M GTT   1,25% │ 
0,30G / 1,75G Memory Clock  17,14% 
0,58G / 1,18G Shader Clock  48,09%

Видим что какая то активность на карте появилась, но при этом

  Графический канал   0,00% │
─────────────────────────────────────────┼──────────────────────────────────────
               Обработка событий   0,00% │
                                         │
Вертексный группировщик + Тесселятор   0,00%
                                         │
             Адрессовщик текстур   0,00% │
                                         │
                Экспорт шейдеров   0,00% │
       Кэш секвенсора инструкций   0,00% │
           Интерполятор шейдеров   0,00% │
                                         │
          Конвертер сканирования   0,00% │
              Сборщик примитивов   0,00% │
                                         │
                    Блок глубины   0,00% │
                      Блок цвета   0,00% 
нагрузка с процессора особо не упала... и вот не понимаю в итоге это все означает что аппаратное ускорение применилось или нет...

Я еще пробовал

ffmpeg -hide_banner -i rtsp://admin:admin@192.168.1.126:554/live/main -hwaccel_device:/dev/dri/renderD128 -hwaccel:vaapi /tmp/output.mp4
но онo мне выдает ошибки в терминал и пока с этим не разобрался... ZM при этом ошибок не сыпет.

Akhelinux
() автор топика
Ответ на: комментарий от Akhelinux

Поднял версию драйверов до 20.20 и radeontop начал нормально отражать загрузку карты. Но при этом нагрузка с проца не сильно снизилась. Я бы да же сказал что похоже что вообще не снизилась.

Это что получается просто АМД карты хуже подходят для декодирования видео? И нужно заменить на НВ… У кого есть опыт сравнения?

Akhelinux
() автор топика