Como é calculada a porcentagem de uso da CPU?

Como é calculada a porcentagem de uso da CPU?

No meu Ubuntu 12.04, com psensor, vi um número percentual atualizado para uso da CPU. Eu me pergunto como esse percentual foi calculado? Especificamente, qual é o numerador e o denominador da proporção?

Obrigado!

Responder1

Oporcentagem de uso do processadoré calculado com "a quantidade de tempo que o processador não fica ocioso". Quer dizer, esse cálculo é feito a partir de um contador que registra a utilização do processo "inativo" em execução. Enquanto outro pré-processo "rouba" a potência do processador do processo ocioso, o registro consumidor do processador ocioso é diminuído por um fator; como a linha do tempo é fixa e constante, o (1- "% tempo nas tarefas ociosas") é a quantidade de carga do processador usada para todos os processos em execução em um processador:

insira a descrição da imagem aqui

Definindo a utilização da CPU

Para nossos propósitos, defino a utilização da CPU, U, como a quantidade de tempo fora da tarefa ociosa, conforme mostrado na Equação 1.

A tarefa ociosa é a tarefa com prioridade absolutamente mais baixa em um sistema multitarefa. Essa tarefa às vezes também é chamada de tarefa em segundo plano ou loop em segundo plano, mostrado na Listagem 1. Essa lógica tradicionalmente tem um tipo de loop while(1). Em outras palavras, um loop infinito gira a CPU aguardando uma indicação de que um trabalho crítico precisa ser realizado.

Listagem 1: Exemplo simples de loop de fundo

int main( void )
{
   SetupInterrupts();
   InitializeModules();
   EnableInterrupts();

   while(1)      /* endless loop - spin in the background */
   {
      CheckCRC();
      MonitorStack();
      ... do other non-time critical logic here.
   }
}

Esta representação é na verdade uma simplificação excessiva, já que algum trabalho "real" geralmente é feito na tarefa em segundo plano. No entanto, a lógica codificada para execução durante a tarefa ociosa não deve ter requisitos rígidos de tempo real porque não há garantia de quando essa lógica será concluída. Na verdade, uma técnica que você pode usar em um sistema sobrecarregado é mover parte da lógica com requisitos de temporização menos rígidos das tarefas difíceis em tempo real para a tarefa ociosa.

informação relacionada