A relação entre o tempo da CPU e o tempo real (computada em uma das muitas maneiras sensatas) é a medida da porcentagem de poder de processamento da CPU usada por um processo fora da potência total de processamento disponível a CPU.
Cada processo no sistema pode estar em dois tipos de estado: está sendo executado em um processador ou está aguardando (a realidade é um pouco mais complexa do que isso e há mais estados de processo, mas, para simplificar, resposta não diferencia entre estados não-executáveis, como runnable, wait interrompível, wait não interrompível etc).
O processo comum geralmente passa um tempo em um processador e termina esperando que um evento aconteça (por exemplo, dados que chegam em uma conexão de rede, conclusão de E / S de disco, bloqueio disponível, CPU disponível novamente para um processo executável depois de ter esgotado seu tempo quântico).
A relação entre o tempo que um processo gasta rodando em um processador em um determinado intervalo de tempo e a duração desse intervalo é uma característica muito interessante. Os processos podem diferir significativamente nesta característica, e. um processo que executa um programa de computação científica provavelmente acabará usando muita CPU e pouca E / S, enquanto o seu shell aguarda a E / S e faz um pouco de processamento esporadicamente.
Em situação idealizada (sem sobrecarga do programador, sem interrupções, etc.) e com medição perfeita, a soma do tempo de CPU usado por cada processo em um sistema em um segundo seria menor que um segundo, sendo o tempo restante a CPU ociosa Tempo. À medida que você adiciona mais processos, especialmente aqueles ligados à CPU, a fração de tempo de CPU inativa diminui e a quantidade de tempo total de CPU usado por todos os processos dentro de cada segundo se aproxima de um segundo. Nesse ponto, a adição de processos extras pode resultar em processos executáveis aguardando a CPU e, portanto, aumentando os comprimentos das filas de execução (e, portanto, as médias de carga) e, eventualmente, reduzindo o tempo do sistema.
Note que ter uma proporção simples do tempo total da CPU do processo para o tempo decorrido desde o seu início acaba representando o uso da CPU de média do processo. Como alguns processos alteram o comportamento durante o tempo de execução (por exemplo, o servidor de banco de dados aguardando consultas versus o mesmo servidor de banco de dados executando várias consultas complexas), é mais interessante conhecer o uso mais recente da CPU. Por esta razão, alguns sistemas (por exemplo, FreeBSD, Mac OS X) empregam uma média de decaimento conforme esta página do manual :
The CPU utilization of the process; this is a decaying average over up to a minute of previous (real) time. Since the time base over which this is computed varies (since processes may be very young) it is possible for the sum of all %cpu fields to exceed 100%.
O Linux tem uma contabilidade simplificada que fornece o uso da CPU de acordo com esta página do manual :
CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process. This is not ideal, and it does not conform to the standards that ps otherwise conforms to. CPU usage is unlikely to add up to exactly 100%.