Pregunta Comprender el máximo rendimiento en Linux


Estoy tratando de determinar el uso de la CPU de un programa mirando la salida de Top en Linux. Entiendo que% us significa "espacio de usuario" y "% sy" significa "sistema / núcleo", etc. Pero digamos que veo 100% de nosotros. ¿Esto significa que la CPU realmente solo está haciendo un trabajo útil? ¿Qué sucede si una CPU está atascada esperando recursos que no están disponibles, o fallas en la memoria caché, también aparecería en la columna% us, o en cualquier otra columna?

Gracias.


2


origen


Es posible que esté interesado en "htop" para uso interactivo. Pero eso es tangencial a la pregunta.
Depende de la definición de "útil". Si un programa está agotado, espere a la E / S, se está ejecutando técnicamente en el espacio de usuario pero no está haciendo nada útil (y ese es solo uno de muchos ejemplos de ejecución en tiempo de usuario pero no de trabajo útil). - Travis Gockel
No relacionado con la programación - votar para migrar a superuser.com - danben


Respuestas:


Como Travis señaló, esta es una pregunta difícil, y una que realmente depende de definir qué trabajo útil realmente es, pero eso es más una cuestión académica.

Creo que la forma en que esto probablemente se calcula es el porcentaje de ciclos de CPU totales que se ejecutan en el espacio de usuario que no se gasta en ralentí. Mientras el programa se quede dormido mientras espera ciertos recursos, no debería consumir CPU.

Si no puede hacer esto por alguna razón, la parte superior le dice el porcentaje de tiempo dedicado específicamente a esperar IO como% wa.

Respuesta breve:% us of 100% probablemente incluya algunos trabajos, pero la cantidad exacta dependerá del tipo de procesador que tenga, el tipo de software que esté ejecutando y una docena de otros factores. Para obtener la historia completa de lo que te dice la parte superior, probablemente necesites acceder al código fuente (que afortunadamente está disponible gratuitamente).


1



¿Se considera que el almacenamiento en caché es una tarea complicada y, por lo tanto, aparece en la columna% us?
Eso dependería de qué parte superior considere IO y, por lo tanto, lo que pone en% nosotros versus% wa. Supongo que sin hacer más excavaciones, diría que agitar entre diferentes niveles de memoria (es decir, L1, L2, etc.) pasaría por debajo de% us, mientras que las llamadas implícitas al disco / almacenamiento secundario mientras el procesador se vio obligado a esperar (en lugar de eso) ser capaz de hacer otras cosas si es multiproceso) iría por debajo de% wa. Pero para ese nivel de detalle, debe verificar la fuente u otra documentación detallada. - Jacinda