Entre os campos de saída do comando “ps”,% CPU não é o uso real da CPU do processo?

6

Por exemplo, um dos campos de saída deste comando do estilo BSD, ps aux , é "% CPU". O comando alternativo, ps -efl produz o campo "C" (ou CP).

De acordo com a página ps man:

  • % CPU é a utilização da CPU do processo no formato "##. #". Atualmente, é o tempo de CPU usado dividido pelo tempo que o processo foi executado (taxa cputime / realtime), expresso como uma porcentagem.
  • C é essencialmente% da CPU expressa como um inteiro

É assim que a página ps man detalha% de CPU ou C. Mas a maioria dos livros e sites na internet simplesmente diz: %CPU or C is CPU usage of a process .

Alguém poderia pensar que isso significa% do poder de processamento da CPU usado por um processo fora do poder de processamento total disponível da CPU. Ou é só eu?

    
por its_me 10.01.2012 / 00:17

1 resposta

5

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

    
por 10.01.2012 / 01:56