Серверы VideoProcessing, Packhaus
Добавить репозиторий соответствующего релиза и репозиторий зависимостей Проверить пакеты в репозитории можно с помощью команды:
sudo yum search mvs
Драйвера nvidia
Драйвера nvidia нужных версий находятся в репозитории зависимостей mvs. Подключаем этот репозиторий.
Так как в версиях сборки выше 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
- В случае обновления релиза "Нижневартовск":
- Выполнить команду импорта коллекций Packhaus в базу данных mongo:
sudo mvslyra3hppa-vprctl importdb
- Запустить утилиту переконфигурирования, выполнив команду:
sudo mvslyra3hppa-vprctl reconfigure
Использование утилиты переконфигурирования для обновления конфигурации пакетов допускается и в случае чистой установки.
- Добавить в конфигурацию мастера следующее значение:
/MVS/Configuration/Storage/S3/UploadingUri <адрес s3 в видеосети>
Этот адрес будет использоваться пакгаузом для отправки операций в хранилище S3.
- Проверить статус сервисов.
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 по ссылке
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/Critical | 75 |
| /MVS/Configuration/DriveSpaceThresholds/Lyra3.HP.Packhaus/Warning | 60 |
| /MVS/Configuration/DriveSpaceThresholds/Lyra3.HP.Packhaus2/Critical | 75 |
| /MVS/Configuration/DriveSpaceThresholds/Lyra3.HP.Packhaus2/Warning | 60 |