2011-07-08 23 views
16

Quiero usar/proc para buscar el uso de recursos de un proceso en particular cada segundo. Los recursos incluyen cputime, uso de disco y uso de red. Miré/proc/pid/stat, pero no estoy seguro de si estoy obteniendo los detalles requeridos. Quiero el uso de 3 recursos y quiero monitorearlos cada segundo.Obtener el uso de recursos de proceso de Linux (CPU, disco, red)

+1

Quiero la información de los 3 recursos (cpu, disco y red) – sethu

+0

El/proc/pid/stat me da el tiempo de CPU pero puedo recopilar solo las estadísticas totales de red y disco de toda la máquina y no proceso particular – sethu

+0

No crea que hay una forma de recopilar estadísticas de disco y red por proceso, principalmente por la forma en que el tráfico del disco y la red se realiza a medida que el kernel trabaja. Por ejemplo, la lectura y la escritura en el disco se realizan a través de los búferes del núcleo y, por lo tanto, múltiples procesos pueden acceder al mismo búfer antes de que se vacíe en el disco. Lo mismo ocurre con la lectura, es posible que varios procesos lean el mismo archivo, solo que el primero generará acceso real al disco y el segundo solo obtendrá un puntero al buffer del núcleo. – Soren

Respuesta

0

No creo que haya una forma de obtener la información de disco y red por proceso.

Lo mejor que puede tener es el disco y la red globales, y el tiempo de CPU por proceso.

Todo documentado en man proc

+0

Puede rastrear cierta información de IO (consulte la utilidad 'iotop' para ver un ejemplo), pero no está disponible en todos los núcleos. – duskwuff

+0

iotop necesita una versión más nueva de kernel. Vi iotop for io y nethog para estadísticas de red, pero necesito recompilar una versión más nueva de kernel para eso. Estaba teniendo eso como último recurso. – sethu

4

Algunos granos más nuevos tienen /proc/<pid_of_process>/io archivo. Aquí es donde están las estadísticas de IO. No está documentado en el manual de usuario, pero puede intentar averiguar los números usted mismo.

Espero que ayude. Alex.

+0

Estoy usando centos 5.6 y es un kernel bastante antiguo. ¡No encuentro las estadísticas allí! – sethu

1

getrusage() realiza la CPU, la memoria y el disco etc.

man 2 getrusage

No sé acerca de la red.

0

La mejor manera de abordar los problemas de este tipo es para buscar el código fuente de herramientas que realizan el seguimiento y la presentación de informes similares. Aunque no hay garantía de que estén usando/proc directamente, lo llevarán a una forma eficiente de abordar el problema. Para su caso, vienen a la mente top (1), iotop (8) y nethogs (8).

0

Puede usar SAR

-x informe de estadísticas para un proceso determinado.

Ver este para más detalles: http://www.linuxcommand.org/man_pages/sar1.html

Ejemplo: sar -u -r -b 1 -X PID | grep -v Promedio | grep -v Linux

+0

Esta técnica requiere un reinicio del sistema y la raíz debe permitir la recopilación de estadísticas en todo el sistema. –

+0

Con la opción '-x' o' -X', solo estoy viendo estadísticas para 'minflt/s majflt/s% usuario% system nswap/s CPU', no estadísticas de disco o red. Por ejemplo, si también especifico '-n DEV' para ver las estadísticas de la red, sar da líneas separadas con encabezados separados. Lo probé en RHEL 5.7. – haridsv

0

echa un vistazo.

Tiene disco de CPU y red en una sola pantalla. No es por proceso, pero es mejor que mirar 3 herramientas separadas.

Cuestiones relacionadas