O que é "hora do sistema" ao usar "hora" na linha de comando

10

Estou usando timepara cronometrar um Perlscript no terminal padrão no Ubuntu 14.04.

Eu li que real timeé hora do cronômetro; o tempo que eu, como usuário, estou gastando olhando o programa em execução desde o início do programa até ele terminar. Mas não entendo o que userou os systempos são. A página de manual timeé vaga, para dizer o mínimo.

Embora esteja um pouco claro que o realtempo está dividido usere sysnão está claro o que eles representam.

No meu script, estou comparando [1] C ++ e Perl um com o outro para ver a diferença, e gostaria de saber quais dados realmente estou obtendo. Um exemplo de saída é:

real    0m24.198s
user    0m23.120s
sys     0m1.030s

Alguém poderia elaborar o que o formato padrão de hora está dizendo ao usuário? Sou iniciante no Linux, então, por favor, não assuma demais.

[1] Curiosamente, enquanto o C ++ é muito, muito mais rápido que o Perl no meu benchmark em relação ao realtempo, os systempos não diferem tanto, com o C ++ realmente usando mais systempo que o Perl. É por isso que eu quero saber o que eles significam

Alrekr
fonte

Respostas:

15

Da wikipedia :

  • Hora do Usuário x Hora do Sistema

O termo 'tempo de CPU do usuário' pode ser um pouco enganador no início. Para ficar claro, o tempo total da CPU é a combinação da quantidade de tempo que a (s) CPU (s) gastou (s) executando alguma ação para um programa e a quantidade de tempo que a (s) CPU (s) gastada (s) executando o sistema solicita o kernel em nome do programa. Quando um programa faz um loop através de uma matriz, está acumulando tempo de CPU do usuário. Por outro lado, quando um programa executa uma chamada do sistema, como exec ou fork, está acumulando tempo de CPU do sistema.

  • Tempo Real vs Tempo de CPU

O termo "tempo real" neste contexto refere-se ao tempo decorrido do "relógio de parede", como usar um cronômetro. O tempo total da CPU (tempo do usuário + tempo do sistema) pode ser maior ou menor que esse valor. Como um programa pode demorar algum tempo aguardando e não sendo executado (seja no modo de usuário ou no sistema), o tempo real pode ser maior que o tempo total da CPU. Como um programa pode bifurcar filhos cujos tempos de CPU (usuário e sistema) são adicionados aos valores relatados pelo comando time, o tempo total da CPU pode ser maior que o tempo real.

Konstantinos
fonte
1
Não entendo como consegui não encontrar esse artigo da Wikipedia. Obrigado.
Alrekr 25/05