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

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

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

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

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

  PID USER PR NI VIRT RES SHR S%CPU% MEM TIME + КОМАНДА                                                                                                                         
31308 root      20   0  486568  26000   5560 S  92,2 0,2 ​​188:10,72 avconv                                                                                                                          
10340 root      20   0  475832  19920   5532 S  91,2 0,1  13:40,42 avconv                                                                                                                          
12547 root      20   0  473832  23672   5528 S  89,9 0,1   5:40,23 avconv                                                                                                                          
 8179 root      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 root      20   0  477812  16976   5532 S  88,9 0,1  25:23,15 avconv                                                                                                                          
 8725 root      20   0  476068  21696   5560 S  87,2 0,1  62:12,02 avconv                                                                                                                          
12657 root      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 root      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 root      20   0  485420  18116   5560 S  84,9 0,1  22:18,23 avconv                                                                                                                          
 7356 root      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 root      20   0  475004  24304   5532 R  81,6 0,1   6:30,16 avconv 

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

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

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

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

Более подробная информация: Компьютер, с которого я работаю, - Dell R900 с Ubuntu 14.04. cat /proc/cpuinfo перечисляет 16 процессоров Intel(R) Xeon(R) E7330 @ 2,40 ГГц и cat /proc/meminfo 16 Гб Рам. Другие машины в группе похожи и показывают то же поведение. Все это кодирование видео с 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 
Другие вопросы по тегам