como o tempo comanda o trabalho

5

Então, quando digito time <some_program> , tenho uma boa medição do tempo da CPU. Mas exatamente como isso é alcançado? Isso também tem algum impacto no desempenho do some_program ?

    
por ren 23.01.2012 / 18:40

2 respostas

5

página man do tempo diz

The statistics of time command consist of

(i) the elapsed real time between invocation and termination,

(ii) the user CPU time (the sum of the tms_utime and tms_cutime values in a struct tms as returned by times(2))

(iii) the system CPU time (the sum of the tms_stime and tms_cstime values in a struct tms as returned by times(2)).

Você pode ver este onde o comando time é implementado no programa c.

O tempo total da CPU é a combinação da quantidade de tempo que a (s) CPU (s) gasta realizando alguma ação para um programa e a quantidade de tempo que a (s) CPU (s) gasta executando chamadas do sistema para o kernel em nome do programa. Quando um programa percorre uma matriz, ele está acumulando tempo de CPU do usuário. Por outro lado, quando um programa executa uma chamada de sistema, como exec ou fork, está acumulando tempo de CPU do sistema.

De acordo com o código-fonte da implementação do tempo GNU, a maioria das informações mostradas pelo tempo é derivada da chamada do sistema wait3. Em sistemas que não têm uma chamada wait3 que retorna informações de status, a chamada do sistema de horas é usada no lugar.

    
por 23.01.2012 / 18:59
9

O kernel mantém o controle das estatísticas de uso da CPU para todos os processos; time apenas pede ao kernel informações sobre seu processo filho, que é o comando que você pediu para executar. Como o kernel está mantendo o controle desta informação de qualquer maneira (necessário para agendamento, implementação de várias quotas de recursos, etc.), usar o comando time não faz seu comando rodar mais devagar.

    
por 23.01.2012 / 19:33