Como leio htop

9

Estou tendo problemas para entender as informações exibidas pelo htoppopular substituto do comando top Linux.

despejo de tela htop

Na captura de tela acima, há muitas instâncias java listadas, mas apenas a principal usa o tempo da CPU. Quais são os outros?

Por que as barras de utilização da CPU mostram núcleos tão ocupados quando a coluna% da CPU não mostra muita coisa acontecendo em todos os processos? De fato, eles se movem sem correlação na maioria das vezes.

Por que a média de carga, no canto superior direito, que eu assumo é um histórico de três etapas, tão baixa quando os núcleos estão quase sempre verdes e parecendo ocupados?

Alguém seria tão gentil em explicar como ler essas informações?

Obrigado!

Luke Puplett
fonte
Fiz algumas alterações que ajudam muito. Exiba threads em uma cor diff, mostre os nomes dos threads, atualize os nomes dos processos na atualização e, principalmente, altere o atraso para 2/10 segundos. A velocidade de atualização padrão mostra apenas um grande atraso entre os medidores da CPU e os processos.
Luke Puplett
1
Para carga média, pelo menos, isso não é necessariamente um valor baixo. A carga é essencialmente um indicador de se o sistema precisa esperar para fazer alguma coisa. Um valor aceitável é menor que o número de núcleos, neste caso 4. Portanto, essas médias são razoáveis. São os últimos 1, 5 e 15 minutos. Para obter mais informações, consulte [Wikipedia] ( pt.wikipedia.org/wiki/Load_(computing))
ssmy

Respostas:

5
  1. Em relação a "Carga" e CPU%, a wikipedia possui uma explicação detalhada e exemplo, a seguir é uma citação parcial

    Um computador ocioso possui um número de carga 0 e cada processo usando ou aguardando CPU (a fila pronta ou fila de execução) aumenta o número de carga em 1. A maioria dos sistemas UNIX conta apenas processos na execução (na CPU) ou executável (aguardando CPU). No entanto, o Linux também inclui processos em estados de suspensão ininterrupta (geralmente aguardando atividade do disco), que podem levar a resultados significativamente diferentes se muitos processos permanecerem bloqueados na E / S devido a um sistema de E / S ocupado ou parado. Isso, por exemplo, inclui o bloqueio de processos devido a uma falha do servidor NFS ou a lentidão da mídia (por exemplo, dispositivos de armazenamento USB 1.x). Tais circunstâncias podem resultar em uma média de carga elevada, o que não reflete um aumento real no uso da CPU (mas ainda dá uma idéia de quanto tempo os usuários precisam esperar).

    Os sistemas calculam a média da carga como a média móvel exponencialmente amortecida / ponderada do número da carga. Os três valores da média de carga referem-se aos últimos um, cinco e quinze minutos de operação do sistema.

    Para sistemas de CPU única que estão ligados à CPU, pode-se pensar na média de carga como uma porcentagem da utilização do sistema durante o respectivo período de tempo. Para sistemas com várias CPUs, é necessário dividir o número pelo número de processadores para obter uma porcentagem comparável.

    As barras podem estar ocupadas em movimento, mas nunca atingem 100%, o que indicará que a CPU / núcleo está totalmente utilizada. A barra é apenas uma visualização da% de utilização da CPU, que é de 27%, 26,5%, 24,5%, 24,7% e 71,7%. Todos os núcleos da CPU ainda têm energia para "poupar". Eles são todos subutilizados nesse ponto.

    Um sistema de 5 núcleos / CPU totalmente utilizado terá carga 5 ou superior.

  2. Em relação às linhas Java, elas são processos pai (PID = 5073) e filho. Não sei explicar por que os pais acumulam mais tempo de CPU. Isso realmente depende da lógica interna do programa. No entanto, de acordo com o TIME +, esses processos filhos consumiram o tempo da CPU, com o último (PID = 5074) acumulado mais.

John Siu
fonte
É possível que os processos filhos sejam o conjunto de encadeamentos da JVM? Quando defino a opção de mostrar os nomes dos threads, todos têm o mesmo nome. Sou programador do Windows + .NET, fyi.
Luke Puplett
Sim, é possível que sejam thread.
precisa