Por que o tempo “real” seria muito mais alto do que os horários de “usuário” e “sys” combinados?

18

Eu executo e time de muitos comandos (por exemplo, nslookup ) até SSH e eu coleto o tempo total necessário para o serviço implícito ser concluído (por exemplo, DNS ). Então, eu coleciono o tempo user e sys , já que o tempo real conta o tempo em que meu processo está bloqueando, o que eu não preciso ... eu acho.

Mas alguns dos meus testes tiveram resultados assim:

real 3m22.033s
user 0m0.009s
sys 0m0.014s

Eu executo estes testes em caixas de linux de recursos limitados, mas ainda assim, o tempo real é significativamente alto. Isso indicaria apenas que a caixa está MUITO ocupada executando processos diferentes? Ainda é correto adicionar o user e sys vezes para saber quanto o serviço levou?

    
por Muhammad Gelbana 30.10.2012 / 13:03

1 resposta

20

Real é o tempo total que o processo levou para terminar (ou seja, a diferença entre a hora de início e a hora de parar):

$ time sleep 3

real    0m3.002s
user    0m0.000s
sys     0m0.000s

Nesta listagem, usuário e sys referem-se ao tempo gasto, respectivamente, no modo de usuário e no modo kernel. Estes não incluem o tempo gasto enquanto está inativo, no estado dormir . Um processo entra em estado de suspensão quando é solicitado deliberadamente ou quando está aguardando que o IO (acesso à rede / disco / interação do usuário) esteja disponível ou aguardando a finalização de outros processos, por falta de CPU disponível quando o sistema está sob carga muito alta , etc.

Normalmente, se você chamar time on wget , real corresponderá ao tempo que o download leva, usuário deve ser insignificante (a menos que wget seja solicitado a executar processamento intensivo de dados), sys deve ser pequeno (pode ser gasto algum tempo para lidar com buffers, movendo dados do espaço do kernel para o espaço do usuário).

    
por 30.10.2012 / 13:59