Серверы
  • Готовые серверы
  • Конфигуратор
  • Серверы с 1CPU
  • Серверы с 2CPU
  • 4 поколение AMD EPYC и Intel Xeоn
  • Серверы с AMD Ryzen и Intel Core i9
  • Серверы для хранения данных
  • Cерверы с портом 10 Гбит/c
  • GPU
  • Распродажа
  • VPS
    GPU
  • Выделенные серверы с GPU
  • Виртуальные серверы с GPU
  • Распродажа
    Маркетплейс
    Colocation
  • Размещение серверов в дата-центре в Москве
  • Обслуживание серверов в других ЦОД
  • Кластеры
    Прокат
    Услуги
  • Аренда сетевого оборудования
  • Защита L3-L4 от DDoS атак
  • IPV4 и IPV6 адреса
  • Администрирование серверов
  • Уровни технической поддержки
  • Мониторинг сервера
  • BYOIP
  • USB диск
  • IP-KVM
  • Трафик
  • Коммутация серверов
  • О нас
  • Работа в HOSTKEY
  • Панель управления серверами и API
  • Дата-центры
  • Сеть
  • Тест скорости
  • Специальные предложения
  • Отдел продаж
  • Для реселлеров
  • Гранты для специалистов по Data Science
  • Гранты для научных проектов и стартапов
  • Документация и Частые вопросы
  • Новости
  • Блог
  • Оплата
  • Документы
  • Сообщите о нарушении
  • Looking Glass
  • 14.06.2022

    Многопоточный энкодинг: переплатить вдвое или уйти на «встройку»?

    server one

    Проведенный нами тест NVIDIA A4000 почти подтвердил, что она способна вытянуть на энкодинге до 16 независимых видеопотоков FullHD в формате H264. Удастся ли кратно увеличить производительность с профессиональной видеокартой, которая стоит в два раза дороже? Попробуем проверить.

    HOSTKEY
    Арендуйте выделенные и виртуальные GPU серверы с профессиональными графическими картами NVIDIA RTX A5000 / A4000 в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.

    В нашей второй статье про энкодинг (с тестом А4000) мы упустили, что видеопоток бывает и большего разрешения, поэтому стоит протестировать энкодинг файлов в формате 4К. Для полноты картины мы также сравним энкодинг на решениях от NVIDIA с встроенным GPU от Intel. Некоторые профессионалы полагают, будто достаточно собрать тот же FFmpeg с включенным QuickSync и внешняя видеокарта станет не нужна. Проверим и это утверждение.

    Мы не будем подробно расписывать процесс тестирования для видеокарт от NVIDIA и зачем нам FFmpeg, поскольку информация об этом есть в предыдущих статьях (первая и вторая части). Лучше сосредоточимся на новых результатах и полезных лайфхаках.

    A4000 vs A5000

    Используем тот же самый тестовый стенд из имеющихся в наличии серверов HOSTKEY, но установим в него видеокарту NVIDIA A5000 с большим количеством блоков энкодинга, 24 ГБ видеопамяти и более высоким энергопотреблением.

    NVIDIA A5000

    Для начала проверим ее работу на количестве потоков, оказавшемся предельным для А4000 по результатам предыдущего теста:

    14 потоков

    gpu pwr gtemp mtemp sm mem enc dec mclk pclk fb bar1
    Idx W C C % % % % MHz MHz MB MB
    0 97 47 - 92 3 100 0 7600 1920 3502 33
    gpu Idx 0
    pwr W 97
    gtemp C 47
    mtemp C -
    sm % 92
    mem % 3
    enc % 100
    dec % 0
    mclk MHz 7600
    pclk MHz 1920
    fb MB 3502
    bar1 MB 33

    frame=1015 fps=31 q=28.0 Lsize= 9056kB time=00:00:33.80 bitrate=2194.8kbits/s speed=1.02x

    Удивительно! Мы получили сравнимые с результатом A4000 цифры. Несмотря на большую частоту работы чипа, больший объем используемой видеопамяти и большее энергопотребление, A5000 осилила энкодинг только 14 потоков и спасовала на пятнадцатом. Это фиаско еще раз доказывает, что профессиональные видеоадаптеры предназначены для других целей.

    Включаем 4K

    Теперь попробуем запустить трансляцию потока с разрешением 3840x2160 (оно же 4K), благо есть и такая версия файла про кролика. Энкодинг силами только центрального процессора захлебнулся уже на одном потоке, когда объем данных кратно увеличился:

    frame= 2902 fps=27 q=29.0 size=104448kB time=00:01:33.56 bitrate=9144.7kbits/s dup=436 drop=0 speed=0.878x

    Каковы возможности GPU (помним, результаты у A4000 и A5000 сравнимы)? Это 3 потока.

    gpu pwr gtemp mtemp sm mem enc dec mclk pclk fb bar1
    Idx W C C % % % % MHz MHz MB MB
    0 96 46 - 100 3 96 0 7600 1920 1112 9
    gpu Idx 0
    pwr W 96
    gtemp C 46
    mtemp C -
    sm % 100
    mem % 3
    enc % 96
    dec % 0
    mclk MHz 7600
    pclk MHz 1920
    fb MB 1112
    bar1 MB 9

    Как видим, по потребляемой мощности и загрузке блоков энкодинга видеочип работает явно не в режиме повышенного комфорта, хотя при этом расходуется лишь около 1 ГБ видеопамяти.

    Вывод FFmpeg подтверждает, что видеокарта справляется:

    frame= 1465 fps=33 q=35.0 Lsize=12584kB time=00:00:48.80 bitrate=2112.4kbits/s dup=159 drop=0 speed=1.09x

    А вот 4 потока адаптер уже не переваривает. Хотя загрузка железа остается примерно на тех же значениях, начинаются просадки по кадрам:

    frame= 614 fps= 26 q=35.0 Lsize=4978kB time=00:00:20.43 bitrate=1995.6kbits/s speed=0.858x

    Сборка FFmpeg с поддержкой QuickSync

    Если верить заявлению компании-разработчика, технология QuickSync должна «используя специальные возможности обработки мультимедийных данных графических технологий Intel® для ускорения декодирования и кодирования, позволить процессору параллельно выполнять другие задачи и повышая быстродействие системы».

    Для тестов понадобился подходящий процессор Intel (мы нашли машину с Core i9-9900K CPU @ 3.60GHz) и собранная с поддержкой Quick Sync утилита FFmpeg. С первым проблем не возникло (достаточно чипа старше 6-го поколения и наличия в нем GPU, что несложно проверить), но сборка FFmpeg под тестовую Ubuntu 20.04 вызвала стойкие ассоциации с практическим освоением Камасутры. Чтобы не заставлять вас тратить драгоценное время, опишем, как нам удалось решить проблему.

    Поскольку пакеты в репозиториях сломаны, первым делом нужно собрать и установить в систему библиотеки gmmlib и libva, а также последние версии Intel media driver и Media SDK. Для этого в домашней директории создадим папку GIT, зайдем в нее и выполним последовательно следующие команды (если будет не хватать каких-то зависимостей, установим их из репозитория; мы рекомендуем сделать sudo apt install autoconf automake build-essential cmake pkg-config):

    git clone https://github.com/intel/gmmlib.git && cd gmmlib 
    mkdir build && cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib/x86_64-linux-gnu ..
    make -j8
    sudo make install 
    
    git clone https://github.com/intel/libva.git && cd libva
    ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu 
    make -j8
    sudo make install 
    
    git clone https://github.com/intel/media-driver.git && cd media-driver
    mkdir build && cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib/x86_64-linux-gnu ..
    make -j8
    sudo make install 
    
    git clone https://github.com/Intel-Media-SDK/MediaSDK.git && cd MediaSDK
    mkdir build && cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib/x86_64-linux-gnu ..
    make -j8
    sudo make install

    Затем нужно собрать FFmpeg с помощью нескольких магических команд:

    git clone https://github.com/ffmpeg/ffmpeg
    cd ffmpeg
    ./configure --enable-libmfx --enable-vaapi --enable-opencl --enable-libvorbis --enable-libvpx --enable-libdrm --enable-gpl --cpu=native --enable-libfdk-aac --enable-libx264 --enable-libx265 --extra-libs=-lpthread --enable-nonfree
    make -j8
    sudo make install

    Стоит убедиться, что у нас появилась поддержка Quick Sync:

    ffmpeg -decoders|grep qsv

    Вывод команды должен быть примерно таким:

    V....D av1_qsv              AV1 video (Intel Quick Sync Video acceleration) (codec av1) 
    V....D h264_qsv             H264 video (Intel Quick Sync Video acceleration) (codec h264) 
    V....D hevc_qsv             HEVC video (Intel Quick Sync Video acceleration) (codec hevc) 
    V....D mjpeg_qsv            MJPEG video (Intel Quick Sync Video acceleration) (codec mjpeg) 
    V....D mpeg2_qsv            MPEG2VIDEO video (Intel Quick Sync Video acceleration) (codec mpeg2video) 
    V....D vc1_qsv              VC1 video (Intel Quick Sync Video acceleration) (codec vc1) 
    V....D vp8_qsv              VP8 video (Intel Quick Sync Video acceleration) (codec vp8) 
    V....D vp9_qsv              VP9 video (Intel Quick Sync Video acceleration) (codec vp9) 
    

    Ура! Все готово к тестам.

    Тестирование энкодинга с Quick Sync

    Для начала проверим, как справляется с энкодингом видео в FullHD процессор без Quick Sync: он выдерживает максимум 4 потока, при которых все ядра загружены под 100%

    frame= 1461 fps= 33 q=29.0 size=24064kB time=00:00:46.33 bitrate=4254.7kbits/s speed=1.05x

    Пятый поток процессор уже не осиливает, поэтому можно смело приступать к тесту с Quick Sync. В скрипте из предыдущей статьи для этого нужно будет заменить энкодер на h264_qsv, и он примет следующий вид (подробнее об использовании QuickSync с FFmpeg можно почитать тут):

    #!/bin/bash
    for (( i=0; i<$1; i++ )) do
    	ffmpeg -i http://78.0.75.110:5454/ -an -vcodec h264_qsv -y Output-File-$i.mp4 &
    done

    Сразу делаем проверку на 6 потоках (+2 к тесту на чистом CPU):

    frame=291 fps=55 q=29.0 size=1280kB time=00:00:10.13 bitrate=1034.8kbits/s dup=2 drop=0 speed=1.93x

    Разница очевидна: загрузка процессора не превышает 50%, а имеющийся запас вычислительных ресурсов позволяет прогнозировать 11 – 12 итоговых потоков.

    Ставим 11 потоков:

    frame=157 fps=30 q=38.0 Lsize=628kB time=00:00:05.69 bitrate=903.0kbits/s dup=2 drop=0 speed=1.09x

    Загрузка процессора возрастает незначительно, но GPU уже подходит к пределу возможностей. Двенадцатый поток роняет битрейт и скорость обработки до 24 – 28 кадров.

    Теперь проверяем потоки в 4K. В отличие от AMD, наш процессор Intel спокойно обрабатывает один поток в таком разрешении и без аппаратного ускорения:

    frame=655 fps=31 q=-1.0 Lsize=30637kB time=00:00:21.73 bitrate=11547.9kbits/s speed=1.03x

    На большее он, увы, не способен. С включенным Quick Sync тестовый компьютер смог вытянуть три потока с разрешением 4K:

    frame= 509 fps=31 q=33.0 Lsize=8010kB time=00:00:17.42 bitrate=3764.7kbits/s dup=2 drop=0 speed=1.07x

    Спасовал он только на четвертом, но столько же у нас выдержала и видеокарта Nvidia A5000.

    Недостатки у решения, увы, тоже есть. При использовании модуля BMC (к примеру, при управлении машиной через IPMI), вы не получите доступ ко всем возможностям аппаратного ускорения, даже если GPU процессора будет определяться в системе. Придется выбирать между удобством удаленного управления или получением всех плюсов от использования Quick Sync.

    Итоги

    Выводы вы можете сделать самостоятельно. Мы лишь отметим, что для энкодинга видео разница в мощности видеокарт не всегда определяется их ценой, а для решения некоторых задач стоит обратить внимание на специализированные технологии внутри центральных процессоров. Также мы использовали для тестов H264, но кодеки HEVC (H265) или VP1 в теории должны дать лучшие результаты, особенно на разрешениях 4K. Если вы самостоятельно проведете подобные тесты с первым (VP1 пока что представлен аппаратно и массово только для декодинга), поделитесь результатами в комментариях.

    Арендуйте выделенные и виртуальные GPU серверы с профессиональными графическими картами NVIDIA RTX A5000 / A4000 в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.

    Другие статьи

    14.07.2024

    Как смотреть видео на YouTube при замедлении сервиса в России?

    Мы протестировали скорость работы YouTube и качество видео при подключении к серверам сервиса в Европе и США.

    12.07.2024

    Создаем чат-бота техподдержки с RAG из документации компании в OpenWebUI | блог компании HOSTKEY

    Рассказываем о нашем опыте создания чат-бота технической поддержки, который призван помогать отделу фронтлайна отвечать на вопросы пользователей (а в будущем — стать частью нашей команды)

    17.06.2024

    Slack блокируют! Переходим на Rocket.Chat?!

    Есть ли жизнь после блокировки Slack? Рассказываем о плюсах альтернативного корпоративного мессенджера Rocket.Chat.

    06.06.2024

    ТОП-10 трендов хостинга, на которые следует обратить внимание в 2024 году

    С учетом технологического прогресса и меняющихся потребностей пользователей провайдеры хостинга делают все больше для предоставления более эффективных, безопасных и устойчивых услуг.

    13.05.2024

    Могут ли LLM-агенты взламывать сайты и эксплуатировать уязвимости?

    Рассказываем про исследование в рамках которого тестировалась способность LLM-агентов взламывать сайты.

    HOSTKEY Выделенные серверы в Европе, России и США Готовые решения и индивидуальные конфигурации серверов на базе процессоров AMD, Intel, карт GPU, Бесплатной защитой от DDoS-атак и безлимитный соединением на скорости 1 Гбит/с 30
    4.3 48 48
    Upload