Skip to main content
Version: yakutsk

Серверы VideoProcessing, Packhaus

Добавить репозиторий соответствующего релиза и репозиторий зависимостей Проверить пакеты в репозитории можно с помощью команды:

sudo yum search mvs

Драйвера nvidia

Драйвера nvidia нужных версий находятся в репозитории зависимостей mvs. Подключаем этот репозиторий.

Подготовка перед установкой драйверов:
note

Так как в версиях сборки выше 1160 некоторые функции считаются проприетарными и не могут быть использованы при сборке через dkms, нужно понизить версию сборки ядра до kernel-3.10.0-1160.88.1.el7

  • Устанавливаем плагин пакетного менеджера для запрета обновления ядра
sudo yum install yum-plugin-versionlock
  • Понижаем версию ядра
sudo yum install kernel-3.10.0-1160.88.1.el7 kernel-devel-3.10.0-1160.88.1.el7
  • Устанавливаем загрузку по-умолчанию на пониженную версию ядра
sudo grubby --set-default=/boot/vmlinuz-vmlinuz-3.10.0-1160.88.1.el7.x86_64
  • Замораживаем версии ядра
sudo yum versionlock kernel-3.10.0-1160.88.1.el7 kernel-headers-3.10.0-1160.88.1.el7 kernel-devel-3.10.0-1160.88.1.el7
  • Перезагружаемся
reboot
  • Установка дравйверов nvidia
sudo yum install -y nvidia-driver-latest-dkms
sudo yum install -y cuda-drivers

Автоматическая установка Lyra3.HP.Packhaus.API и Lyra3.HP.VideoProcessing.API

Выполнить команду:

yum install mvs-lyra3-hp-packhaus-videoprocessing-setup –y
  • Заполнить параметры файла автоконфигурации /etc/mvs.lyra3.hp/options-pavp.yml (configMap)
  • Выполнить проверку configMap командой:
sudo mvslyra3hppa-vprctl checkconfig
  • В случае обнаружения ошибок исправить их и перейти к следующему шагу.
  • Скопировать сертификат с core /var/lib/mvs.lyra3.hp/pki/hp.publicKey.pem по аналогичному пути
  • В случае чистой установки запустить скрипт конфигурирования:
sudo mvslyra3hppa-vprctl setup
  • В случае обновления релиза "Нижневартовск":
  1. Выполнить команду импорта коллекций Packhaus в базу данных mongo:
sudo mvslyra3hppa-vprctl importdb
  1. Запустить утилиту переконфигурирования, выполнив команду:
sudo mvslyra3hppa-vprctl reconfigure

Использование утилиты переконфигурирования для обновления конфигурации пакетов допускается и в случае чистой установки.

  1. Добавить в конфигурацию мастера следующее значение:
/MVS/Configuration/Storage/S3/UploadingUri <адрес s3 в видеосети>

Этот адрес будет использоваться пакгаузом для отправки операций в хранилище S3.

  1. Проверить статус сервисов.
systemctl status Lyra3.HP.Packhaus.API
systemctl status Lyra3.HP.VideoProcessing.API

Ручная установка Lyra3.HP.Packhaus.API и Lyra3.HP.VideoProcessing.API

  • Установить mongodb для Lyra3.HP.Packhaus.API
  • Подключить репозиторий nvidia
Внимание
Не Использовать репозиторий nvidia с официального сайта !!

Настраивать драйвер nvidia по ссылке

cat <<EOF > /etc/yum.repos.d/cuda-rhel7.repo
[cuda-rhel7-x86_64]
name=cuda-rhel7-x86_64
baseurl=https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64
enabled=0
gpgcheck=1
gpgkey=https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/D42D0685.pub
EOF

или

sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo

Установить драйвера nvidia:

## install kernel headers
sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
sudo yum install nvidia-driver-latest-dkms cuda cuda-drivers

Перезагрузить и проверить:

## install kernel headers
$sudo reboot
...
$sudo lshw -class video | grep driver

Установка Lyra3.HP.Packhaus.API

Выполнить команду:

sudo yum install -y mvs-lyra3-hp-packhaus-api ffmpeg-5.0

Конфигурация:

sudo vi /etc/mvs.lyra3.hp/Lyra3.HP.Packhaus.API.yml
...
LoggerOptions:
# Trace | Debug | Information | Warning | Error | Critical | None
LogLevel: Debug
# Verbose | Full | Short | Tiny | Systemd
LogFormat: Full
#UseColors: false

ListenOptions:
DmzEndpoints:
- 0.0.0.0:3316
PublicEndpoints:
- 0.0.0.0:3317

PublicKeyRepositoryOptions:
PublicKeyPemFilePath: /var/lib/mvs.lyra3.hp/pki/hp.publicKey.pem

MongoDbOptions:
ConnectionString: 'mongodb://mvslyra3hppackhaus:Passw0rd123@127.0.0.1:27017'
DatabaseName: '<databaseName_packhaus>'

HospitalPlatformOptions:
CoreAppUri: http://127.0.0.1:3302
AuthAppUri: http://127.0.0.1:3304
AppInstanceId: Lyra3.HP.Packhaus

AuditOptions:
##Confrim to "^[-a-zA-Z0-9_.]{3,32}$"
AuditId: Lyra3.HP.Packhaus

RabbitMQClientOptions:
## RabbitMQ service uri, like as 'amqp://[login[:password]]@host[:port][/virtualhost]:
RabbitMQServiceUri: "amqp://<user_rabbitmq_hp>:<password>@<ip_address>:5672"

ArtifactHandlerOptions:
TemporaryFolderPath: /mnt/raid1-data/var/lib/mvs.lyra3.hp/packhaus/tmp

ArtifactsServiceOptions:
ArtifactsFolderPath: /mnt/raid1-data/var/lib/mvs.lyra3.hp/packhaus/chunks

TranscodingOptions:
## List of qualities (frame width/frames bitrate in kilobytes) to transcode video
## Recommended values to selection: 1920/10000, 1280/4000, 960/2500, 640/1500, 320/600
## Must contain at least one Quality
## Valid values for Width: 320 - 4096
## Valid values for Bitrate: 500 - 40000
## Width must be divisible by 8
## Width must bee scalable to resolution 16:9 with even integer height
Qualities:
- Height: 2160
Bitrate: 20000
- Height: 1080
Bitrate: 10000
- Height: 720
Bitrate: 2500
- Height: 480
Bitrate: 1000
- Height: 360
Bitrate: 600

## Frequency of checks new processing tasks in seconds. Valid values: 10 - 600
ArtifactFolderPollInterval: 30
## Ffmpeg-supported codec. Required. Valid values: 'libx264' (software) or 'h264_nvenc' (for machines with NVidia hardware)
CodecName: libx264
## Specifies if hardware (videocard) transcoding should be used. Note that CodecName must match the selected mode. By default - true.
EnableHardwareTranscoding: false
## Number of concurrently running FFMPEG processes, should be less than number of cores of Packhaus server processor, min value 1
MaximumTranscodingProcesses: 32
## Maximum number of concurrently running FFMPEG processes with hardware (videocard) boost enabled. Min 1, default value 8
# ## 8 recommended for 5Gb video memory, larger number can be set for videocards with more than 5 Gb video memory, can increase transcoding productivity
MaximumParallelHardwareProcesses: 2
#Specifies if nvidia-smi video memory check should be enabled (true or false). Default false.
EnableVideoMemoryCheck: false
#Specifies if CPU-run ffmpeg processes should be limited by '-threads N' parameter. Default 0 (no limitation). Max value 256
CPUThreadsLimitation: 1

UploadingServiceOptions:
## Maximum value of parallel uploads to S3. Valid range 1-512. By default - 32
MaxParallelUploads: 32
# Maximum timeout to wait for S3 response before failure in seconds. Valid range 10-3600, default value 120.
MaxS3ResponseTimeout: 120

#DriveSpaceTrackingOptions:
## Required. Drive name to track used and free space
# DriveName: /mnt/raid1-data/var/lib/mvs.lyra3.hp/packhaus/chunks

Пояснения к файлу конфигурации:
Протестированные значения Qualities/Bitrate указаны в листинге конфигурации.

  • EnableHardwareTranscoding: включить или выключить аппаратное ускорение с помощью видеокарты

  • CodecName: <codec_name> указать 'libx264' при использовании программного кодирования на CPU или 'h264_nvenc' для использования аппаратного ускорения на видеокартах NVidia

  • MaximumParallelHardwareProcesses: Для RTX A2000 оптимальным количестством данного параметра является 4 процесса. Данное значение применяется к каждой видеокарте (если их несколько).

  • MaximumTranscodingProcesses: Указывается как сумма всех процессов, запущенных на видеокартах + CPU.
    Т.е. MaximumTranscodingProcesses = (MaximumParallelHardwareProcesses*количество_видеокарт) + количество процессов транскодинга на CPU
    Параметр «количество процессов транскодинга на CPU» определяется из количества ядер CPU. В случае с отдельным сервером Packhaus количество процессов на CPU должно быть не больше, чем количество ядер CPU (оптимально указать количество ядер - 2). В случае конфигурации All-in-One количество процессов на CPU нужно указывать не более чем количество ядер CPU/2.

  • CPUThreadsLimitation: В случае использования All-in-one рекомендуется установить значение 1 для контроля количества процессов и предотвращения замедления декодирования из-за возросшей конкуренции между процессами.

  • MaxParallelUploads: Увеличение данного параметра может значительно повысить скорость выгрузки в хранилище S3 при условии его достаточной производительности системы ввода-вывода. Рекомендуемые значения 32-128.

Добавить в конфигурацию мастера следующее значение:

/MVS/Configuration/Storage/S3/UploadingUri <адрес s3 в видеосети>

Этот адрес будет использоваться пакгаузом для отправки операций в s3 Запуск сервиса:

sudo systemctl enable --now Lyra3.HP.Packhaus.API

Packhaus должен иметь сетевую связность с GERS (через видеосеть), с госпитальной платформой (внутренняя госпитальная сеть) и s3 хранилищем. По умолчанию Dmz-endpoint Packhaus на порту 3316.
Настроить firewalld:

firewall-cmd --zone=public --permanent --add-port=3316/tcp
firewall-cmd –reload

Установка Lyra3.HP.Videoprocessing.API

sudo yum install -y mvs-lyra3-hp-videoprocessing-api

Настройка конфигурации /etc/mvs.lyra3.hp/Lyra3.HP.VideoProcessing.API.yml:

...
LoggerOptions:
# Trace | Debug | Information | Warning | Error | Critical | None
LogLevel: Debug
# Verbose | Full | Short | Tiny | Systemd
LogFormat: Full
UseColors: false

ListenOptions:
DmzEndpoints:
- 0.0.0.0:3324
PublicEndpoints:
- 0.0.0.0:3325

PublicKeyRepositoryOptions:
PublicKeyPemFilePath: /var/lib/mvs.lyra3.hp/pki/hp.publicKey.pem

HospitalPlatformOptions:
CoreAppUri: http://<ip_address>:3302
AuthAppUri: http://<ip_address>:3304
AppInstanceId: Lyra3.HP.VideoProcessing

AuditOptions:
##Confrim to "^[-a-zA-Z0-9_.]{3,32}$"
AuditId: Lyra3.HP.VideoProcessing

RabbitMQClientOptions:
## RabbitMQ service uri, like as 'amqp://[login[:password]]@host[:port][/virtualhost]:
RabbitMQServiceUri: "amqp://<user_rabbitmq_hp>:<password>@<ip_address>:5672"

VideoProcessorOptions:
## Interval before checking for new videoProcessing tasks in seconds
VideoProcessingTasksInterval: 10
## the path to the folder where temporarily downloaded files will be stored and processed
WorkDirectoryPath: "/mnt/raid1-data/var/lib/mvs.lyra3.hp/processing/tmp"
## Maximum parallel ffmpeg processes to be allowed
MaxParallelVideoProcessingCount: 160
## ffmpeg-supported codec, libx264 (software) or h264_nvenc (for machines with NVidia $
CodecName: libx264
#Number of concurrent S3(minio) downloads. Default 100, min 1, max 512
MaxParallelDownloads: 100
#Specifies how long can S3 upload/download operation last before reporting a failure, in minutes. Default 10 mins, range 1-1000 mins
MaxS3OperationTimeout: 100
## Slice video preparation have two stages: concatenation of chunks into a single video
## and video cut operation to match the result to exact seconds requested by user
## Videos with duration more than specified setting (in minutes) skip second stage, to save processing power and time
## Default 10 minutes, min 0 min (no videos are cut up to second), Max 720 minutes
MaxVideoDurationWithVideoCut: 10
## Specifies the name of the bucket where ICU-related chunks and previews are stored
ICUBucketName: icu20bucket

Запуск сервиса:

sudo systemctl enable --now Lyra3.HP.VideoProcessing.API

Настроить firewalld:
Служба Lyra3.HP.VideoProcessing.API по умолчанию занимает порт 3324. Служба VideoProcessing должна иметь сетевую связность с сервером госпитальной платформы и S3. Открытие порта 3324 необходимо для Healthcheck. Сама же служба получает данные о задачах через очередь VIDEO_DOWNLOADS_QUEUE в rabbitmq (по умолчанию разворачивается на сервере госпитальной платформы).

firewall-cmd --zone=public --permanent --add-port=3324/tcp
firewall-cmd –reload

Настройка Lyra3.HP.Packhaus в Lyra3.HP.Master

Необходимо для отображения занимаемого места на Packhaus.
Через Master.SPA (начиная с релиза Yukki1.1) https://master-spa-fqdn:3443/configuration добавить набор ключей-значений

Key:Value:
/MVS/Configuration/DriveSpaceThresholds/Lyra3.HP.Packhaus/Critical75
/MVS/Configuration/DriveSpaceThresholds/Lyra3.HP.Packhaus/Warning60
/MVS/Configuration/DriveSpaceThresholds/Lyra3.HP.Packhaus2/Critical75
/MVS/Configuration/DriveSpaceThresholds/Lyra3.HP.Packhaus2/Warning60