Por que o tempo “real” seria muito maior do que o tempo de “usuário” e “sys” combinados?

19

Eu executo e timemuitos comandos ( nslookuppor exemplo) SSHe coleciono o tempo total necessário para a conclusão do serviço implícito (por exemplo, DNS ). Então eu coleciono o tempo usere syso realtempo que conta quando o meu processo está bloqueando, o que eu não preciso ... eu acho.

Mas alguns dos meus testes tiveram resultados como tais:

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

Eu executo esses testes em caixas linux de recursos limitados, mas ainda assim, o realtempo é significativamente alto. Isso indicaria apenas que a caixa está MUITO ocupada executando processos diferentes? Ainda é correto para somar os usere sysvezes para saber quanto o serviço levou?

Muhammad Gelbana
fonte

Respostas:

22

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

$ time sleep 3

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

Nesta listagem, user e sys se referem ao tempo gasto, respectivamente, no modo de usuário e no modo de kernel. Isso não inclui o tempo gasto enquanto está inativo, no estado de suspensão . Um processo entra em suspensão quando solicitado deliberadamente ou quando está aguardando a disponibilidade de E / S (acesso à rede / disco / interação com o usuário), ou aguardando a conclusão de outros processos, por falta de CPU disponível quando o sistema está com carga muito alta etc.

Normalmente, se você chamar timeem wget, verdadeiro corresponderá ao momento em que o download demora, usuário deve ser insignificante (a menos que wgetseja solicitado a executar o processamento de dados intensivo), sys deve ser pequeno (algum tempo pode ser gasto para lidar com buffers, voltando dados do espaço do kernel para o espaço do usuário.)

Stéphane Gimenez
fonte
Me desculpe, eu adicionei wgetà pergunta, na verdade eu não faço timeisso, mas obrigado pela explicação. Dizer que realinclui tempos de bloqueio, como esperar pela E / S da rede, me faz pensar em incluir esse tempo também porque, na verdade, estou testando a rede. Obrigado.
Muhammad Gelbana 30/10/12
Você poderia confirmar o seguinte, para testar o desempenho da rede e a capacidade de resposta da máquina consultada, seja um DNSservidor ou uma máquina pingada, é suficiente apenas para medir o realtempo?
Muhammad Gelbana 30/10/12
@MuhammadGelbana: Este tempo real é apenas um cronômetro, nada mais. Se você deixar pingcorrer por 3 minutos 22, ele retornará 3 minutos 22. Nesse caso, é inútil (e na verdade é inútil como referência na maioria das vezes, o resultado depende de fatores externos).
Stéphane Gimenez
obrigado. Mas você saberia por que não expirou o tempo limite? Eu li que o tempo limite padrão nslookupé de 5 segundos!
Muhammad Gelbana 30/10/12