Por que o comando “top” mostra um uso de CPU de 799%?

42

Estou executando um processo em um servidor Ubuntu de 4 núcleos. No entanto, o comando top mostra que o uso da CPU é de 799% o tempo todo.

Como isso pode ser possível? Eu sei que para CPUs multi-core, mais de 100% do uso da CPU é esperado, mas 799% é um valor realmente alto.

Alguém pode me explicar por que e quando isso pode acontecer?

Editar:

Como por sugestão de Gregory MOUSSAT, usando o htop eu consegui seguir:

    
por Arpssss 04.08.2012 / 21:48

1 resposta

58

A escala usada por top é 100% quando um núcleo é totalmente usado. Ou quando um núcleo é de 20% e um segundo é de 80%. Isso leva a resultados estranhos em computadores multicore porque pode facilmente ultrapassar 100%. Se você tem 8 núcleos, então top pode exibir de 0% (sistema inativo) a 800% (potência total).

Seu programa está apenas usando seus 4 núcleos com hyperthreading (portanto, 8 núcleos virtuais) na capacidade máxima. Então o topo te dá quase 8 x 100% = 800%.

Você não pode dizer explicitamente à JVM para usar um único encadeamento, ele usará vários encadeamentos para fazer seu trabalho, mesmo se você usar apenas um único encadeamento em seu aplicativo.

Você pode usar o utilitário htop como uma alternativa top melhor. Você verá seu programa usando todos os 8 núcleos.

    
por 04.08.2012 / 22:49