Eu tenho um script para converter arquivos de vídeo e o executo no servidor com dados de teste e meço seu tempo time
. Em resultado, vi:
real 2m48.326s
user 6m57.498s
sys 0m3.120s
Por que o tempo real é muito menor que o tempo do usuário? Isso tem alguma conexão com multithreading? Ou o que mais?
Edit: E eu acho que esse script estava rodando cerca de 2m48s
real
o tempo é tempo de relógio de parede como explicado abaixo (ou seja, o que mediria se tivéssemos um stop-relógio)Respostas:
A saída que você mostra é um pouco estranha, já que o tempo real geralmente seria maior que os outros dois.
Real
hora é hora do relógio de parede. (o que poderíamos medir com um cronômetro)User
time é a quantidade de tempo gasto no modo de usuário dentro do processoSys
é o tempo de CPU gasto no kernel dentro do processo.Portanto, suponho que se o trabalho fosse realizado por vários processadores simultaneamente, o tempo da CPU seria maior que o tempo decorrido do relógio de parede.
Esse era um tipo de aplicativo simultâneo / multithread / paralelo?
Apenas como exemplo, é isso que recebo no meu sistema Linux quando emito o
time find .
comando. Como esperado, oreal
tempo decorrido é muito maior que os outros neste processo de usuário único / núcleo único.A regra de ouro é:
fonte
avconv
é multiencadeado. Pode ser.avconv
é a nova geração deffmpeg
. Eu estava convertendo 7 arquivos flv curtos (cerca de 20 segundos cada).find
exemplo, ousr
valor é muito menor porque a maior parte do tempo foi gasta durante as interrupções, mesmofind
que tivesse sido multithread, ele permaneceria baixo (desculpe se eu não domino o inglês).Apenas para ilustrar o que foi dito, com dois processos encadeados fazendo algum cálculo.
compilar
(Isso é apenas para ilustrar, na vida real eu deveria ter adicionado o sinalizador -D_REENTRANT)
(Os tempos estão em um Intel Atom com dois núcleos lentos :))
fonte