¿Por qué el comando "superior" muestra un uso de CPU del 799%?

47

Estoy ejecutando un proceso en un servidor Ubuntu de 4 núcleos. Sin embargo, el topcomando muestra que el uso de la CPU es del 799% todo el tiempo.

como puede ser esto posible? Sé que para las CPU de múltiples núcleos, se espera más del 100% de uso de la CPU, pero el 799% es un valor realmente alto.

¿Alguien puede explicarme por qué y cuándo podría suceder esto?

Editar:

Según la sugerencia de Gregory MOUSSAT, usando htop obtuve lo siguiente:

ingrese la descripción de la imagen aquí

Arpssss
fuente
1
¿Los 4 núcleos tienen 2 hilos cada uno (por ejemplo, Intel Core i7)?
Renan
@ Renan, lo estoy ejecutando en un solo hilo.
Arpssss
OK entonces. Porque he visto que esto sucede en algunos sistemas i7.
Renan
1
¿Pero la JVM es de un solo subproceso?
Ignacio Vazquez-Abrams
66
Esto realmente se parece a un i7 completamente cargado, generalmente lo obtengo cuando
codifico

Respuestas:

65

La escala utilizada por topes del 100% cuando un núcleo se utiliza por completo. O cuando un núcleo es 20% y el segundo es 80%. Esto conduce a resultados extraños en computadoras multinúcleo porque fácilmente puede superar el 100%.
Si tiene 8 núcleos, toppuede mostrar desde 0% (sistema inactivo) hasta 800% (potencia máxima).

Su programa solo utiliza sus 4 núcleos con hyperthreading (por lo tanto, 8 núcleos virtuales) a su máxima capacidad. Entonces top te da casi 8 x 100% = 800%.

No puede decirle explícitamente a la JVM que use un solo hilo, usará múltiples hilos para hacer su trabajo, incluso si solo usa un solo hilo en su aplicación.

Puede usar la htoputilidad como una mejor topalternativa. Verá su programa utilizando los 8 núcleos.

Gregory MOUSSAT
fuente
Puede limitar cualquier conjunto de procesos a un conjunto de núcleos o limitar el% de CPU. Sin embargo, no recuerdo los comandos. (uno es cpulimit)
ctrl-alt-delor
+1 para htop, mucho mejor que en la cima o top
CodeLikeBeaker
+1 para htop. ¡Esto me ayudó a clavar dos hilos hambrientos de CPU!
Arun
3
Todoshtop
saluden