← Назад к статьям

Снижаем нагрузку на процессор: инструкция

cpu_load Существует множество способов снизить нагрузку на ЦП в Xeoma, в зависимости от ваших настроек и требований.

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

1. Попробуйте разделение потоков dual streaming.
В Xeoma можно указать поток/URL низкого разрешения для режима просмотра всех камер(1й URL в настройках модуля ‘Универсальная камера’), а для режима просмотра одной камеры и записи в архив указать поток высокого разрешения. Таким образом вы будете видеть поток низкого разрешения в режиме всех камер, а архив и режим просмотра одной камеры будут в высоком разрешении. С помощью разделения потоков dual-streaming вы можете значительно снизить нагрузку на ЦП, не теряя в качестве видео. Подробнее о данном методе можно прочитать в данной статье.

universal_camera_preivew_url_archive_url_ru

2. Включите декодирование только ключевых кадров в настройках модуля ‘Универсальная камера’.
Опция Декодировать только ключевые кадры отображается только для H264/H264+ потоков, прописанных в поле ‘Полный URL-адрес IP-камеры для просмотра’ (недоступна для MJPEG и H265 потоков).
Включите данную возможность для уменьшения нагрузки на процессор при декодировании сжатых H264 потоков, декодируя только ключевые кадры потока. Чем выше разрешение потока “для просмотра всех камер”, тем лучше данная возможность позволяет снизить нагрузку на ЦП. Данная опция может сказаться на плавности видео (картинка может стать более “прерывистой”), в зависимости от интервала поступления ключевых кадров, установленного на камере.

decode_only_keyframes_ru

3. Измените параметры декодирования.
Вы можете выбрать как декодирование на стороне Клиента Xeoma, так и на стороне Сервера.

Если используются H264-потоки, они поступают в Xeoma в сжатом виде. Для просмотра таких потоков в тот или иной момент требуется декодирование: если H264-потоки используются для просмотра (поле “URL для просмотра” в настройках “Универсальной камеры”), то они декодируются в момент поступления в Xeoma. Если H264-потоки используются для записи в архив, то декодируются они в момент просмотра архива.

Процесс декодирования H264-потоков (особенно потоков с высоким разрешением или битрейтом) может быть ресурсоёмким, нагружать процессор сервера и вызывать эффект “дёрганого видео” и другие проблемы с системой.

Для того чтобы облегчить нагрузку на сервер, вы можете перенести декодирование на сторону клиента. Таким образом, сервер будет получать и хранить H264-потоки в сжатом виде, а декодирование будет запускаться только тогда, когда клиент попросит воспроизвести поток – и делаться это декодирование будет на устройстве принимающей стороны. Также эта опция поможет, если сетевой канал между сервером и клиентом узкий (на Клиент будет передаваться сжатый поток, т.е. будет экономия пропускной способности сети). Включить декодирование на клиенте можно в меню “Режимы просмотра” – “настройки декодирования”.

client_decoding__layouts_ru

client_decoding_dialog_ru

Вы можете гибко настроить, какие именно потоки вы хотите отдать на декодирование на сторону клиента – только поток для просмотра в окне Просмотра всех камер, только поток просмотра в режиме Просмотра одной камеры, декодирование при просмотре архива, всё вместе или какие-то комбинации этих возможностей.

Подробнее можно прочитать здесь.

Кроме того, вы можете настроить принудительное декодирование на стороне клиента через Главное меню — Удаленный доступ — Пользователи

users_dialog_menu_forced_decoding_ru

4. Если ваше устройство позволяет, вы можете использовать аппаратное ускорение декодирования для снижения нагрузки на ЦП.
Подробности про аппаратное ускорение декодирования можно посмотреть здесь.

Сервер
Если один сервер должен обслуживать большое количество камер (например, 50), на нём понадобится мощный процессор, который справится с обработкой всех потоков в реальном времени. Часть этой нагрузки может взять на себя видеокарта, воспользовавшись аппаратным ускорение декодирования. В частности, современные карты Nvidia поддерживают технологию CUDA (Compute Unified Device Architecture, для Windows и Linux), а встроенные карты Intel – Quick Sync (только для Windows). Xeoma позволяет использовать оба варианта.

Чтобы включить аппаратное ускорение декодирования, зайдите в настройки модуля «Универсальная камера» и поставьте соответствующую галочку:

CUDA_acceleration_server.ru_

Чтобы оно применилось, необходимо соблюсти 2 условия:

1. поток, стоящий на просмотр (первый URL-адрес в модуле), должен быть как минимум HD-качества (720p или 1280×720) — в противном случае, аппаратное ускорение нецелесообразно;
2. видеокарта должна быть не старше серии Nvidia GeForce 400 (для Linux: GeForce GTX 750, GTX 900 или выше).

Количество обрабатываемых камер напрямую зависит от мощности видеокарты. Например, GeForce GT 730 справится с 4-6 камерами, в то время как GTX 1060 может работать с десятками камер.

Клиент
Если клиентские машины смогут декодировать потоки, это позволит значительно снизить нагрузку на сервер. Для этого тоже можно использовать аппаратное ускорение декодирования — на сервере нужно настроить декодирование клиентами. Зайдите в Меню просмотра → Настройки декодирования и задайте необходимые параметры:

CUDA_acceleration_client.ru_

5. Вы можете снять галочки с «Распознавания автомобилей» и «Распознавания людей» в настройках модуля «Детектор движения».

car_human_recognition_motion_detector_ru

6. Отключить поток на просмотр всех камер в Xeoma.
Если просмотр в режиме всех камер не требуется, а нужно просматривать только по одной камере (и архив), то можно убрать поток с просмотра в настройках модуля «Универсальная камера» и оставить только 2й URL (для просмотра в режиме одной камеры и записи архива):

rtsp_saving_ok_universal_camera_ru

Результат в режиме просмотра всех камер:

rtsp_saving_ok_xeoma_preview

Кроме того, убедитесь что слайдер «Максимальное количество камер, для которых будет отображаться поток высокого разрешения (из архива)» стоит на 0 в меню «Режимов просмотр» (иконка окна на нижней панели) — Настройки декодирования:

layouts_maximum_number_of_cameras_high_res_ru

7. Используйте mjpeg URL в режиме просмотра всех камер.
Для снижения нагрузки на процессор вы можете переключиться на mjpeg поток в настройках модуля «Универсальная камера» для просмотра всех камер (укажите URL вида http://CAMERA’S_IP_ADDRESS… для просмотра всех камер). Таким образом нагрузка на ЦП будет ниже, но может возрасти нагрузка на сеть.

mjpeg_for_preview_universal_camera_ru

8. Снизьте параметры камеры (битрейт).
В настройках камеры в браузере (в админ-странице) вы можете снизить параметры камеры (битрейт), чтобы снизить нагрузку на процессор. Xeoma подхватит изменения.

9. Удалите все ненужные модули из цепочки.
Кроме того, если вы используете такие модули как ‘Поворот изображения’, ‘Обрезка изображения’ или ‘Уменьшение’, вы можете рассмотреть вариант с использованием зума самой камеры, или повернуть камеру под определенным углом, чтобы удалить данные модули из цепочки, т.к. они дают дополнительную нагрузку на ЦП.

10. Отключите некоторые камеры.
Если вы используете слишком много камер, процессор может просто не справляться с нагрузкой. Поэтому вы можете попробовать снизить количество камер.

11. Для веб интерфейса: вы можете переключиться на ‘Трансляцию со звуком через WebRTC (перекодирование на стороне браузера)’ в настройках модуля ‘Веб сервер’ для снижения нагрузки на процессор.

webrtc_on_browser_side_ru

5 мая 2021

Читайте также:
Камеры видеонаблюдения и многопоточное видео dual streaming: что нужно знать?
Модуль “Универсальная камера” в Xeoma и его настройки