it-swarm-es.com

¿Cómo puedo saber si un proceso es CPU, memoria o enlace de disco?

¿Cómo puedo saber si un proceso está vinculado a la CPU, la memoria o el disco?

40
ssanj

Eso requiere un poco de vudú. Depende. Ejemplo:

  • Si hay suficiente memoria y los discos no parecen estar demasiado ocupados, puede estar enlazado a la CPU. Mire el uso de la CPU y si está bordeando al 100%, está vinculado a la CPU. Si no es así, hay un cuello de botella artificial en la implementación. P.ej. En una CPU de doble núcleo, un proceso de subproceso único no superará el 50% de uso de la CPU.

  • Si la CPU y la memoria están disponibles, pero los discos están muy ocupados, o la latencia IO parece alta, es probable que su IO esté vinculada. Vea si agregar más discos (¿RAID?) Ayuda.

  • ¿Ninguna de las anteriores? Verifique la memoria disponible.

  • Suficiente memoria? Puede haber un cuello de botella artificial en el proceso en sí mismo, es decir, ¿tal vez alguien olvidó eliminar un sueño (1)? Naah no es tan fácil por lo general. ;)

¡Hay una razón por la que tenemos un laboratorio completo para ingenieros de rendimiento en la mayoría de las empresas que se ocupan de productos sensibles al rendimiento!

Use herramientas como sar, vmstat, iostat, oprofile, lockstat, dtrace, herramientas de monitoreo de rendimiento específicas del producto, etc., para depurar problemas de rendimiento.

15
Sudhanshu

echa un vistazo a iotopname__, puede ser útil

11
ithkuil

Una herramienta que puede ser útil para verificar en tiempo real una serie de estadísticas de proceso (memoria, uso de CPU, E/S, etc.) es htop. No reemplaza las herramientas más especializadas nombradas por Sudhanshu, pero podría ser un buen comienzo.

9
JanC

Además de las otras herramientas mencionadas, ejecute ps l PID, insertando la identificación de proceso relevante, o mire las columnas STATE y WCHAN en la parte superior o superior.

Si está en estado D (para disco), entonces está haciendo el archivo IO. Esto podría deberse a que está leyendo una gran cantidad de archivos o porque está usando mucha memoria e intercambio. La columna WCHAN le dirá qué función del núcleo está dentro; buscar en Google o preguntar aquí puede darte alguna indicación de lo que significan.

Si está en estado R (ejecución), está utilizando la CPU en el espacio del usuario, en otras palabras, está vinculada a la CPU en ese momento.

Si está en estado S (suspensión), está dentro de una llamada de sistema interrumpible, lo que puede significar que está realmente en suspensión o que está haciendo algo como esperar el tráfico de red o un bloqueo. Nuevamente, mirar el wchan específico le dará más información.

Vea también ¿Cuál es el "Canal de espera" de un proceso?

4
poolie

Ejecute top y mire la línea de uso de la CPU. Un usuario alto% indica que está vinculado a la CPU. Un alto% de espera indica que está IO enlazado.

2
psusi