¿Cómo puedo saber si un proceso está vinculado a la CPU, la memoria o el disco?
¿Cómo puedo saber si un proceso está vinculado a la CPU, la memoria o el disco?
Respuestas:
Eso requiere un poco de vudú. Depende. Ejemplo:
Si hay suficiente memoria y los discos no parecen estar demasiado ocupados, puede estar vinculado 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. Por ejemplo, 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 de E / S parece alta, es probable que esté vinculada a E / S. 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.
Además de las otras herramientas mencionadas, ejecute ps l PID
, inserte la identificación del proceso relevante o mire las columnas ESTADO y WCHAN en la parte superior o superior.
Si está en estado D (para disco), entonces está haciendo el archivo IO. Esto podría ser porque está leyendo muchos 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 al 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.
Consulte también ¿Qué es el "Canal de espera" de un proceso?