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

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

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

Tasks: 382 total,   2 running, 380 sleeping,   0 stopped,   0 zombie
%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 total, 16171664 used,   254016 free,    30492 buffers
KiB Swap: 16769020 total,   406056 used, 16362964 free. 15198692 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                         
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 root      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 root      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 root      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 root      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 ответ1

0

Во-первых, высокопроизводительный GPU увеличит кодирование на порядки. Обычно высококачественная видеокарта сокращает рендеринг с часов до минут. Вам может понадобиться графический процессор 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 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .