Como você mesmo disse, pode clicar Hpara mostrar os tópicos do usuário.
Apenas para referência futura (e por diversão), vamos calcular a utilização da CPU!
Um pouco de fundo:
Em um sistema operacional moderno, há um agendador. O objetivo é garantir que todos os processos e seus threads tenham uma boa parte do tempo de computação. Não vou agendar muito (é realmente complicado). Mas, no final, há algo chamado fila de execução . É aqui que todas as instruções de todos os processos se alinham para aguardar sua vez de serem executadas.
Qualquer processo coloca suas "tarefas" na fila de execução e, quando o processador está pronto, ele as abre e as executa. Quando um programa entra em suspensão, por exemplo, ele se remove da fila de execução e retorna ao "fim da linha" quando estiver pronto para executar novamente.
Classificando nessa fila tem a ver com os processos Prioridade (também chamado de 'bom valor' - ou seja, um processo é agradável sobre os recursos do sistema).
O comprimento da fila determina a carga do sistema. Uma carga de 2,5, por exemplo, significa que existem instruções de 2,5 para todas as instruções com as quais a CPU pode lidar em tempo real .
A propósito, no Linux, essa carga é calculada em intervalos de 10 ms (por padrão).
Agora, sobre os valores de porcentagem de utilização da CPU:
Imagine que você tem dois relógios, um é chamado t
e representa em tempo real . Mede um segundo por cada segundo. O outro relógio que chamamos c
. Só é executado se houver processamento a ser feito. Isso significa que somente quando um processo calcula algo o relógio funciona. Isso também é chamado de tempo da CPU. Todo e qualquer processo no sistema 'tem' um desses.
A utilização do processador agora pode ser calculada para um único processo:
ou para todos os processos:
Em uma máquina com vários núcleos, isso pode resultar em um valor de 3,9, é claro, porque a CPU pode calcular quatro segundos de computação a cada segundo, se utilizada perfeitamente.
A Wikipedia fornece este exemplo:
Um aplicativo de software em execução na máquina UNIX de 6 CPUs cria três processos UNIX para atender aos requisitos do usuário. Cada um desses três processos cria dois encadeamentos. O trabalho do aplicativo de software é distribuído igualmente em 6 encadeamentos de execução independentes criados para o aplicativo. Se nenhuma espera por recursos estiver envolvida, o tempo total da CPU deverá ser seis vezes o tempo decorrido em tempo real.
Aqui está um pequeno trecho de python que faz isso
>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %
Em um mundo perfeito, você pode inferir disso que a carga do sistema é 100 - 66,93 = 33,1%. (Mas, na realidade, isso seria errado devido a coisas complexas como espera de E / S, agendamento de ineficiências e assim por diante)
Ao contrário da carga , esses cálculos sempre resultam em um valor entre 0 e o número de processadores, ou seja, entre 0 e 1 ou 0 a 100%. Agora não há como diferenciar entre uma máquina que está executando três tarefas, utilizando 100% da CPU, e uma máquina executando um milhão de tarefas, realizando quase todo o trabalho em qualquer uma delas, também a 100%. Se você está, por exemplo, tentando equilibrar vários processos em muitos computadores, a utilização da CPU é quase inútil. Carga é o que você quer lá.
Agora, na realidade, há mais de um desses relógios de ponto de processamento. Há um para aguardar E / S, por exemplo. Portanto, você também pode calcular a utilização de recursos de E / S.
Isso pode não ter sido útil em relação à pergunta original, mas espero que seja interessante. :)