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?

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.)


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.