Quais são as diferenças entre hora do relógio de parede, hora do usuário e hora da CPU

14

Estamos executando trabalhos de computação com o GridEngine. Todos os trabalhos retornam 3 vezes diferentes:

  • Relógio de parede
  • Hora do usuário
  • Tempo de CPU

Quais são as diferenças entre esses três? Qual destes três é o mais adequado para comparar o desempenho de dois aplicativos / scripts

Peter Smit
fonte

Respostas:

18

A hora do relógio de parede é a quantidade real de tempo necessária para executar um trabalho. Isso equivale a cronometrar seu trabalho com um cronômetro e o tempo medido para concluir sua tarefa pode ser afetado por qualquer outra coisa que o sistema esteja fazendo no momento.

O tempo do usuário mede a quantidade de tempo que a CPU gastou executando seu código. Isso não conta mais nada que possa estar em execução e também não conta o tempo de CPU gasto no kernel (como na E / S de arquivo).

O tempo da CPU mede a quantidade total de tempo que a CPU gastou executando seu código ou qualquer coisa solicitada pelo seu código. Isso inclui o tempo do kernel.

A medida "Tempo do usuário" é provavelmente a mais apropriada para medir o desempenho de diferentes tarefas, uma vez que será menos afetada por outras coisas acontecendo no sistema.

Greg Hewgill
fonte
3

Da Wikipedia:

O termo 'tempo de CPU do usuário' pode ser um pouco enganador no início. Para esclarecer o tempo total (tempo real da CPU), é a combinação da quantidade de tempo que a CPU gasta executando alguma ação para um programa e a quantidade de tempo que a CPU gasta realizando chamadas do sistema para 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

O tempo do relógio de parede é o tempo real gasto por um computador para concluir uma tarefa. É a soma de três termos: tempo da CPU, tempo de E / S e atraso do canal de comunicação (por exemplo, se os dados estiverem espalhados em várias máquinas). Ao contrário do tempo da CPU, que mede apenas o tempo durante o qual o processador está trabalhando ativamente em uma determinada tarefa, o tempo da parede mede o tempo total para a conclusão do processo. A diferença entre os dois consiste no tempo que passa devido a atrasos programados ou à espera de recursos disponíveis.

Maxwell
fonte