Как оптимизировать Linux для кодирования большого количества видео или набора таких же ресурсоемких задач?

Как оптимизировать Linux для кодирования большого количества видео или набора таких же ресурсоемких задач?

У меня есть набор из 4-5 машин, которые почти исключительно кодируют видео весь день, а иногда и всю ночь. Я много раз искал способы оптимизировать их для этой цели, но безуспешно.

Моя предпосылка: я смогу использовать почти все ресурсы своего процессора для кодирования видео, если и только если я одновременно запускаю несколько процессов кодирования, что я и делаю.

Проблема: (сверху)

Задания: всего 382, ​​2 бегущих, 380 спящих, 0 остановленных, 0 зомби
%Cpu(s): 51,6 us, 36,8 sy, 0,0 ni, 9,6 id, 0,0 wa, 2,0 hi, 0,0 si, 0,0 st
KiB Mem: всего 16425680, использовано 16171664, свободно 254016, буферов 30492
КиБ обмена: 16769020 всего, 406056 использовано, 16362964 свободно. 15198692 кэшированной памяти

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ КОМАНДА                                                                                                                         
31308 корень 20 0 486568 26000 5560 S 92,2 0,2 ​​188:10,72 avconv                                                                                                                          
10340 корень 20 0 475832 19920 5532 S 91,2 0,1 13:40,42 avconv                                                                                                                          
12547 корень 20 0 473832 23672 5528 S 89,9 0,1 5:40,23 avconv                                                                                                                          
 8179 корень 20 0 477132 21200 5560 S 89,2 0,1 71:50,15 avconv                                                                                                                          
 9059 корень 20 0 472776 17960 5540 S 89,2 0,1 48:12,62 avconv                                                                                                                          
 9798 корень 20 0 477812 16976 5532 S 88,9 0,1 25:23,15 avconv                                                                                                                          
 8725 корень 20 0 476068 21696 5560 S 87,2 0,1 62:12,02 avconv                                                                                                                          
12657 корень 20 0 472332 22012 5524 S 86,9 0,1 6:21,28 avconv                                                                                                                          
12915 корень 20 0 473732 41888 5516 S 86,6 0,3 5:22,63 avconv                                                                                                                          
 8578 корень 20 0 476840 24100 5536 S 85,6 0,1 63:17,07 avconv                                                                                                                          
 7822 корень 20 0 472740 18940 5536 S 85,2 0,1 75:22,04 avconv                                                                                                                          
 9948 корень 20 0 485420 18116 5560 S 84,9 0,1 22:18,23 avconv                                                                                                                          
 7356 корень 20 0 476744 20084 5560 S 84,6 0,1 92:31,91 avconv                                                                                                                          
 9425 корень 20 0 471096 19684 5552 S 82,9 0,1 37:48,28 avconv                                                                                                                          
12464 корень 20 0 475004 24304 5532 R 81,6 0,1 6:30,16 avconv

Несмотря на кодирование 14 различных видеофайлов одновременно, загрузка ЦП колеблется всего на уровне 50-55%. Если я запускаю меньше потоков одновременно, отдельные потоки будут использовать около 400% ЦП, тогда как, как показано выше, они используют только около 80-90% ЦП.

Это единственное, что я хочу, чтобы этот блок делал. Возможно ли более эффективно использовать мощность процессора или мои предположения ошибочны?

Я до сих пор экспериментировал с renice, но эффекта не было. Я установил NI на -20 и 19, и это не увеличило или не уменьшило использование процессора в целом или по отдельным кодировкам.

Я немного почитал о vm.swappiness, но не получил четкого представления для своего варианта использования, будет ли лучше больше или меньше swappiness. Может ли это повысить производительность?

Дополнительные сведения: Машина, с которой я включаю top, — это Dell R900, работающая под управлением Ubuntu 14.04. cat /proc/cpuinfoВ списке 16 процессоров Intel(R) Xeon(R) CPU E7330 @ 2.40GHz и cat /proc/meminfo16 Gb Ram. Другие машины в группе похожи и показывают такое же поведение. Все это кодирование — видео DV в видео Mpeg2, иногда мы кодируем и другие виды видео. Источник для этих кодирований находится на сетевом рейде, который ничего не записывает по состоянию на верхний пост выше и получает скорость чтения более 300 Мбит/с. Место назначения — также сетевые рейды, не такие быстрые, но полученные данные mpeg намного меньше входных данных.

решение1

Во-первых, высокопроизводительный графический процессор ускорит кодирование на порядки. Обычно высокопроизводительная видеокарта сокращает рендеринг с часов до минут. Вам может понадобиться графический процессор NVIDIA.

‘-hwaccel_device[:stream_specifier] hwaccel_device (input,per-stream)’

    Select a device to use for hardware acceleration.

    This option only makes sense when the ‘-hwaccel’ option is also specified. Its exact meaning depends on the specific hardware acceleration method chosen.
    ‘vdpau’

        For VDPAU, this option specifies the X11 display/screen to use. If this option is not specified, the value of the DISPLAY environment variable is used
    ‘dxva2’

        For DXVA2, this option should contain the number of the display adapter to use. If this option is not specified, the default adapter is used. 

Кроме того, это необходимо для процессора.

‘-threads[:stream_specifier] integer (input/output,video)’

    Possible values:

    ‘auto’

        autodetect a suitable number of threads to use 

Связанный контент