Como posso otimizar o linux para codificar lotes de vídeo ou um conjunto das mesmas tarefas intensivas de cpu?

0

Eu tenho um conjunto de 4 a 5 máquinas que quase codificam vídeo o dia todo, e às vezes a noite toda também. Eu procurei muitas vezes para encontrar maneiras de otimizá-los para esse fim, mas não tive sucesso algum.

Minha premissa: eu deveria ser capaz de usar quase toda a minha cpu para codificação de vídeo, se e somente se, eu estou executando vários processos de codificação simultaneamente, o que eu sou.

O problema: (do topo)

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 

Apesar de codificar 14 arquivos de vídeo diferentes de uma só vez, o uso da CPU fica em torno de apenas 50-55%. Se eu estiver executando menos streams de uma só vez, os streams individuais irão rodar até cerca de 400% da CPU, onde como na foto acima eles usam apenas 80-90% da CPU.

Esta é a única coisa que eu quero que esta caixa faça, é possível fazer mais uso do poder da CPU ou minha premissa é falha?

Até agora experimentei o renice, sem nenhum efeito. Eu configurei NI de -20 e 19 ele não fez maior ou menor uso geral ou em codificações individuais.

Eu fiz algumas leituras sobre vm.swappiness, mas não tive uma noção clara do meu caso de uso se mais ou menos swappiness fosse melhor. Isso poderia aumentar o desempenho?

Mais detalhes: A máquina da qual estou incluindo o topo é um Dell R900 rodando o Ubuntu 14.04. cat /proc/cpuinfo lista 16 CPUs Intel (R) Xeon (R) E7330 @ 2.40GHz e cat /proc/meminfo 16 Gb Ram. As outras máquinas no grupo são semelhantes e mostram o mesmo comportamento. Toda essa codificação é de vídeo DV para vídeo Mpeg2, às vezes codificamos outros tipos de vídeo também. A origem dessas codificações está em uma invasão em rede que não está gravando nada da postagem acima e obtém velocidades de leitura de 300 + Mb / s. O destino também é um ataque em rede, não tão rápido, mas os dados mpeg resultantes são muito menores que os dados de entrada.

    
por markjwill 23.05.2015 / 00:08

1 resposta

0

Primeiro, uma GPU de alto nível aumentará a codificação por ordens de grandeza. Normalmente, uma placa de vídeo de alto nível reduz a renderização de horas para minutos. Você pode precisar de uma 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. 

Além disso, você precisa disso para a CPU

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

    Possible values:

    ‘auto’

        autodetect a suitable number of threads to use 
    
por 26.05.2015 / 05:54