Posso adivinhar com base nos nomes, mas o que são especificamente o relógio de parede, o usuário-cpu-time e o sistema-cpu-time no UNIX?
O tempo da CPU do usuário é o tempo gasto na execução do código do usuário, enquanto o tempo da CPU do kernel é a quantidade de tempo gasto no kernel devido à necessidade de operações privilegiadas (como E / S no disco)?
Em que unidade de tempo é essa medida.
E o tempo do relógio de parede é realmente o número de segundos que o processo gastou na CPU ou o nome é apenas enganoso?
unix
operating-system
John Humphreys - w00te
fonte
fonte
Respostas:
A hora do relógio de parede é a hora que um relógio na parede (ou um cronômetro na mão) mediria como decorrido entre o início do processo e o 'agora'.
O tempo da CPU do usuário e da CPU do sistema são praticamente como você disse - a quantidade de tempo gasto no código do usuário e a quantidade de tempo gasto no código do kernel.
As unidades são segundos (e subsegundos, que podem ser microssegundos ou nanossegundos).
O tempo do relógio de parede não é o número de segundos que o processo gastou na CPU; é o tempo decorrido, incluindo o tempo gasto aguardando sua vez na CPU (enquanto outros processos são executados).
fonte
CPUtime = #clock_cycles / clock_rate
não pode ser o mesmo que calcular o tempo decorrido. Você sabe se posso obter o tempo decorrido do tempo da CPU?read()
ougetpid()
), o kernel executa o código em nome do seu programa. O kernel também lida com multitarefas preventivas para que outros programas executem sua vez, e realiza algumas tarefas gerais de manutenção para manter o sistema funcionando sem problemas. Este código é executado no 'código do kernel' (também no 'modo kernel'). Isso é diferente do código que você escreveu e das bibliotecas do usuário (incluindo a biblioteca C do sistema) que você executa.Hora do relógio de parede: o tempo decorrido de acordo com o relógio interno do computador, que deve corresponder à hora no mundo exterior. Isso não tem nada a ver com o uso da CPU; é dado para referência.
Tempo de CPU do usuário e tempo do sistema: exatamente o que você pensa. As chamadas do sistema, que incluem I / O chamadas como
read
,write
, etc. são executadas por saltar para o código do kernel e executar isso.Se o tempo do relógio de parede <tempo da CPU, você está executando um programa em paralelo. Se o tempo do relógio na parede> tempo da CPU, você está aguardando disco, rede ou outros dispositivos.
Todos são medidos em segundos, de acordo com o SI .
fonte
A hora do relógio de parede é exatamente o que diz: o tempo decorrido, medido pelo relógio na parede (ou no relógio de pulso)
Tempo de CPU do usuário é o tempo gasto em "terra do usuário", que é o tempo gasto em processos que não são do kernel
O tempo da CPU do sistema é o tempo gasto no kernel, geralmente o tempo gasto atendendo às chamadas do sistema.
fonte
real ou relógio de parede
7m2.444s reais
Em um sistema com processador de 24 núcleos, esse cmd / processo levou mais de 7 minutos para ser concluído. Isso utilizando o paralelismo mais possível com todos os núcleos fornecidos.
do utilizador
usuário 76m14.607s
O cmd / processo utilizou essa quantidade de tempo da CPU. Em outras palavras, na máquina com CPU de núcleo único, o real e o usuário serão quase iguais, portanto, o mesmo comando levará ~ 76 minutos para ser concluído.
sys
sys 2m29.432s
Este é o tempo gasto pelo kernel para executar todas as operações no nível básico / do sistema para executar esse cmd, incluindo alternância de contexto, alocação de recursos, etc.
fonte
(user + sys) / real
para representar isso.