Como você mesmo disse, você pode clicar em H para 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 Scheduler. O objetivo é garantir que todos os Processos e seus segmentos recebam uma parcela justa do tempo de computação. Eu não vou programar muito (é muito complicado). Mas no final há algo chamado fila de execução . É onde todas as instruções de todos os processos se alinham para aguardar a sua vez de serem executadas.
Qualquer processo coloca suas "tarefas" na fila de execução e, assim que o processador estiver pronto, elas são exibidas e executadas. 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 ser executado novamente.
A classificação nesta fila tem a ver com os processos ' Prioridade (também chamado de "valor agradável" - ou seja, um processo é legal sobre recursos do sistema).
O comprimento da fila determina o Carga do sistema. Uma carga de 2,5, por exemplo, significa que existem 2,5 instruções para cada instrução com a qual a CPU pode lidar em tempo real .
No Linux, a propósito, essa carga é calculada em intervalos de 10 ms (por padrão).
Agora, nos valores percentuais de utilização da CPU:
Imagine que você tem dois clocks, um é chamado t
e representa tempo real . Mede um segundo por segundo. O outro relógio que chamamos de c
. Só é executado se houver processamento para fazer. Isso significa que, somente quando um processo calcula alguma coisa, o relógio é executado. Isso também é chamado de tempo de 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 multi-core, isso pode resultar em um valor de 3.9, claro, porque a CPU pode calcular o valor de computação de quatro segundos a cada segundo, se utilizado perfeitamente.
A Wikipedia fornece este exemplo:
Um aplicativo de software em execução Máquina UNIX de 6 CPUs cria três UNIX processos para atender o usuário requerimento. Cada um destes três processos criam dois segmentos. Trabalho de aplicação de software é uniformemente distribuído em 6 threads independentes de execução criada para o aplicação. Se não houver espera por recursos está envolvido, o tempo total de CPU é esperado para ser seis vezes Real decorrido tempo.
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ê poderia inferir a partir disso que a carga do sistema é de 100 - 66,93 = 33,1%. (Mas, na realidade, isso estaria errado por causa de coisas complexas como espera de E / S, agendamento de ineficiências e assim por diante)
Em contraste com load , esses cálculos sempre resultarão 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 executa três tarefas, utilizando 100% de CPU, e uma máquina executando um milhão de tarefas, mal conseguindo qualquer trabalho feito em uma única delas, também em 100%. Se você está, por exemplo, tentando equilibrar um monte de processos em muitos computadores, a utilização da CPU é quase inútil. Carregar é o que você quer lá.
Agora, na realidade, há mais de um desses relógios de tempo de processamento. Há um para esperar em I / O por exemplo. Então, 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. :)