Vous êtes sur la page 1sur 8

Curso: Sistemas Operativos Grado Sistemas de la Informacin

Prctica: MONITORIZACIN DE PROCESOS EN LINUX

ndice
1 2 Objetivo .........................................................................................................................................................3 Monitorizacin de procesos........................................................................................................................3 2.1 2.2 3 Monitorizacin de procesos existentes en el sistema. ..................................................................3 Monitorizacin de los procesos que consumen ms CPU en el sistema...................................4

Anlisis del mapa de memoria de un proceso..........................................................................................6 3.1 3.2 El archivo /proc/pid/maps. ............................................................................................................6 Descripcin de la funcionalidad que debe practicar el alumno...................................................7

Bibliografa ....................................................................................................................................................8

Prctica: Monitorizacin de Procesos en Linux

Pgina 2 de 8

1 Objetivo
El objetivo de est prctica es que el alumno pueda monitorizar los procesos existentes en una mquina con sistema operativo Linux y que sea capaz de observar los eventos del sistema significativos. Para ello se usarn dos mandatos de Linux: ps y top. Ambos mandatos son sencillos pero potentes en cuanto a la monitorizacin de proceso. Igualmente, en el tercer apartado (2.3) el objetivo principal es entender como est organizado el mapa de memoria de un proceso. Nivel: Introduccin

2 Monitorizacin de procesos.
El sistema operativo Linux tiene un sistema de archivos situado el directorio /proc. En este directorio se almacena informacin del sistema y de cada uno de los procesos y dentro del mismo se indica cunta memoria ha consumido el proceso, los archivos abiertos, sus conexiones, etc. Casi todos los mandatos de Linux relacionados con la monitorizacin local o remota ( ps, top,vmstat,etc.) obtienen su informacin de este directorio. La prctica tiene dos partes:

2.1 Monitorizacin de procesos existentes en el sistema.


En el caso de la prctica, el alumno debe monitorizar en primer lugar los procesos existentes en el sistema. Para ello usar el mandato ps con sus distintas opciones: ax : muestra los procesos activos en el sistema. u : muestra la identidad del usuario que cre el proceso. f : muestra las relaciones padre-hijo en la jerarqua de procesos. Cuando se ejecuta el mandato ps -axuf se obtiene una pantalla de salida como la que muestra la figura, donde cada uno de los campos tiene significado bien preciso: usuario, identificador del proceso, porcentaje de CPU consumida, porcentaje de memoria ocupada, etc. Para averiguar el significado de todas ellas, el alumno puede consultar la ayuda de Linux(man ps). Para probar el efecto de la ejecucin del mandato ps, reptalo despus de ejecutar varias veces un navegador de Internet. A continuacin guarde la salida del comando en el archivo pslog.txt, estudie la jerarqua de procesos y responda a las siguientes preguntas:

Prctica: Monitorizacin de Procesos en Linux

Pgina 3 de 8

USER
root root root root root root root root root root root root root root root bin root root root at root lp lp lp lp lp lp root root root root root root root root root root root root

PID %CPU %MEM


1 0.2 2 0.0 3 0.0 4 0.0 5 0.0 6 0.0 7 0.0 9 0.0 12 0.0 82 0.0 496 0.0 549 0.0 552 0.0 601 0.0 802 0.0 816 0.0 861 0.0 918 0.0 919 0.0 1048 0.0 1062 0.0 1547 0.0 1548 0.0 1551 0.0 1552 0.0 1553 0.0 1554 0.0 1549 0.0 1088 0.0 1089 0.0 1090 0.0 1091 0.0 1092 0.0 1093 0.0 1094 0.0 1150 0.0 1151 0.0 1152 0.0 1153 0.0 Cuntos

VSZ

RSS TTY

STAT START

TIME COMMAND

0.0 500 248 ? S 11:29 0:04 init [5] 0.0 0 0 ? SW 11:29 0:00 [keventd] 0.0 0 0 ? SWN 11:29 0:00 [ksoftirqd_CPU0] 0.0 0 0 ? SW 11:29 0:00 [kswapd] 0.0 0 0 ? SW 11:29 0:00 [bdflush] 0.0 0 0 ? SW 11:29 0:00 [kupdated] 0.0 0 0 ? SW 11:29 0:00 [kinoded] 0.0 0 0 ? SW 11:29 0:00 [mdrecoveryd] 0.0 0 0 ? SW 11:29 0:00 [kreiserfsd] 0.0 0 0 ? SW< 11:29 0:00 [lvm-mpd] 0.0 0 0 ? SW 11:29 0:00 [eth1] 0.2 1456 600 ? S 11:29 0:00 /sbin/syslogd -a /var/lib/dhcp/dev 0.5 2324 1364 ? S 11:29 0:00 /sbin/klogd -c 1 -2 0.0 0 0 ? SW 11:30 0:00 [khubd] 0.2 1552 684 ? S 11:30 0:00 /sbin/resmgrd 0.1 1404 384 ? S 11:30 0:00 [portmap] 0.2 1504 568 ? S 11:30 0:00 /usr/sbin/ypserv 0.0 0 0 ? SW 11:30 0:00 [rpciod] 0.0 0 0 ? SW 11:30 0:00 [lockd] 0.2 1492 564 ? S 11:30 0:00 [atd] 1.2 6164 3248 ? S 11:30 0:00 /usr/sbin/cupsd 0.4 5880 1200 ? S 11:30 0:00 \_ lp1 39 doc kdeprint_RYv9LVS 1 1.9 8812 4956 ? S 11:30 0:00 \_ /usr/bin/perl/usr/lib/cups/filt 1.9 8808 4956 ? S 11:30 0:00 | \_ /usr/bin/perl/usr/lib/cups/ 1.9 8816 4960 ? S 11:30 0:00 | \_ /usr/bin/usr/lib/cups/ 0.4 4448 1204 ? S 11:30 0:00 | \_ sh -c level=0; echo -en 0.1 3404 380 ? S 11:30 0:00 | \_ cat 0.5 4064 1492 ? S 11:30 0:00 \_ smb://:@150.100.10.67/HP 4000 3 0.3 12100 776 ? S 11:30 0:00 /usr/sbin/nscd 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd 0.2 5932 720 ? S 11:30 0:00 /usr/sbin/ypbind Figura 1. Pantalla de salida de ps axuf 0.2 5932 720 ? S 11:30 0:00 \_ /usr/sbin/ypbind 0.2 5932 720 ? S 11:30 0:00 \_ /usr/sbin/ypbind 0.2 5932 hay 720en ? ejecucin S en 11:30 0:00 \_ /usr/sbin/ypbind procesos el sistema?

Cuntos usuarios hay conectados al sistema? Cuntos procesos son del usuario root? Cuntos navegadores hay abiertos? Describa una jerarqua de procesos de un usuario conectado.Qu shell est ejecutando? Cul es el proceso que ms tiempo de CPU ha consumido? Cul es el proceso que ms espacio de memoria ha consumido? Qu procesos llevan ms tiempo arrancados?Qu fecha y hora arranc el sistema?

2.2 Monitorizacin de los procesos que consumen ms CPU en el sistema.


La segunda parte de la prctica consiste en monitorizar la situacin del sistema en un determinado momento y de los procesos que consumen CPU en un momento dado. Para ello se usar el mandato top, que arroja una pantalla de salida como la de la figura 2, y se volcarn los resultados al archivo toplog.txt.

Prctica: Monitorizacin de Procesos en Linux

Pgina 4 de 8

Tasks: 89 total, 3 running, 86 sleeping, 0 stopped, 0 zombie Cpu(s): 11.6% user, 2.0% system, 0.0% nice, 86.4% idle Mem: 254376k total, 251032k used, 3344k free, 28688k buffers Swap: 514040k total, 0k used, 514040k free, 111696k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ Command 1546 root 15 0 145m 16m 2920 R 10.9 6.8 0:29.34 X 1 root 15 0 248 248 212 S 0.0 0.1 0:04.12 init 2 root 15 0 0 0 0 S 0.0 0.0 0:00.04 keventd 3 root 34 19 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd_CPU0 4 root 15 0 0 0 0 S 0.0 0.0 0:00.01 kswapd 5 root 25 0 0 0 0 S 0.0 0.0 0:00.00 bdflush 6 root 15 0 0 0 0 S 0.0 0.0 0:00.00 kupdated 7 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kinoded 9 root 25 0 0 0 0 S 0.0 0.0 0:00.00 mdrecoveryd 12 root 15 0 0 0 0 S 0.0 0.0 0:00.01 kreiserfsd 82 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lvm-mpd 496 root 15 0 0 0 0 S 0.0 0.0 0:00.00 eth1 549 root 15 0 600 600 504 S 0.0 0.2 0:00.01 syslogd 552 root 15 0 1364 1364 428 S 0.0 0.5 0:00.06 klogd 601 root 22 0 0 0 0 S 0.0 0.0 0:00.00 khubd 802 root 15 0 684 684 592 S 0.0 0.3 0:00.00 resmgrd 816 bin 15 0 384 384 316 S 0.0 0.2 0:00.00 portmap 861 root 24 0 568 568 496 S 0.0 0.2 0:00.00 ypserv 918 root 15 0 0 0 0 S 0.0 0.0 0:00.00 rpciod 919 root 15 0 0 0 0 S 0.0 0.0 0:00.00 lockd 1048 at 15 0 564 564 500 S 0.0 0.2 0:00.00 atd 1062 root 15 0 3248 3248 1372 S 0.0 1.3 0:00.26 cupsd 1088 root 15 0 780 776 652 S 0.0 0.3 0:00.02 nscd 1089 root 15 0 780 776 652 S 0.0 0.3 0:00.00 nscd 1090 root 15 0 780 776 652 S 0.0 0.3 0:00.00 nscd 1094 root 15 0 780 776 652 S 0.0 0.3 0:00.01 nscd 1150 root 19 0 724 720 604 S 0.0 0.3 0:00.00 ypbind

Figura 2 Esta segunda parte tiene cuatro apartados: Control de la situacin del sistema. En la cabecera de salida del mandato top se muestran datos de fecha de monitorizacin y de la situacin del sistema. Describa en la memoria de la prctica qu indican estos datos.Qu ha hecho la computadora la mayor parte del tiempo? Monitorizacin del efecto de un programa que consume CPU. Programe una pequea aplicacin en C que incluya un bucle infinito. Ejectela y observe su efecto en la pantalla de top. Monitorizacin del efecto de un programa que consume memoria. Programe una pequea aplicacin en C que incluya un bucle que consuma mucha memoria con malloc y no la libere. Ejectela y observe su efecto en la pantalla de top. Monitorizacin del efecto de un programa que genera entradas. Programe una pequea aplicacin en C que incluya un bucle que pida un entero por la entrada estndar. Ejectela y observe su efecto en la pantalla de top.

Prctica: Monitorizacin de Procesos en Linux

Pgina 5 de 8

3 3.1

Anlisis del mapa de memoria de un proceso. El archivo /proc/pid/maps.


El sistema operativo Linux ofrece un tipo de sistema de archivos muy especial: el sistema de archivos proc. Este sistema de archivos no tiene soporte en ningn dispositivo. Su objetivo es poner a disposicin del usuario datos del estado del sistema en la forma de archivos. Esta idea no es original de Linux, ya que casi todos los sistemas UNIX la incluyen. Sin embargo, Linux se caracteriza por ofrecer ms informacin del sistema que el resto de variedades de UNIX. En este sistema de archivos se puede acceder a informacin general sobre caractersticas y estadsticas del sistema, as como a informacin sobre los distintos procesos existentes. La informacin relacionada con un determinado proceso se encuentra en un directorio que tiene como nombre el propio identificador del proceso (pid). As, si se pretende obtener informacin de un proceso que tiene el identificador 1234, habr que acceder a los archivos almacenados en el directorio /proc/1234/. Para facilitar el acceso de un proceso a su propia informacin, existe, adems, un directorio especial, denominado self. Realmente, se trata de un enlace simblico al directorio correspondiente a dicho proceso. As, por ejemplo, si el proceso con identificador igual a 2345 accede al directorio /proc/self/, est accediendo realmente al directorio /proc/2345/. En el directorio correspondiente a un determinado proceso existe numerosa informacin sobre el mismo. Sin embargo, en esta prctica nos vamos a centrar en el archivo que contiene informacin sobre el mapa de memoria del proceso: el archivo maps. Cuando se lee este archivo, se obtiene una descripcin detallada del mapa de memoria del proceso en ese instante. Como ejemplo, se incluye a continuacin el contenido de este archivo para un proceso que ejecuta el programa cat:
08048000-0804a000 r-xp 00000000 08:01 65455 0804a000-0804c000 rw-p 00001000 08:01 65455 0804c000-0804e000 rwxp 00000000 00:00 0 40000000-40013000 r-xp 00000000 08:01 163581 40013000-40014000 rw-p 00013000 08:01 163581 40022000-40135000 r-xp 00000000 08:01 165143 40135000-4013b000 rw-p 00113000 08:01 165143 4013b000-4013f000 rw-p 00000000 00:00 0 bfffe000-c0000000 rwxp fffff000 00:00 0 /lib/ld-2.2.5.so /lib/ld-2.2.5.so /lib/libc-2.2.5.so /lib/libc-2.2.5.so /bin/cat /bin/cat

Prctica: Monitorizacin de Procesos en Linux

Pgina 6 de 8

Cada lnea del archive describe una regin del mapa de memoria del proceso. Por cada regin aparece la siguiente informacin: Rango de direcciones virtuales de la regin (en la primera lnea, por ejemplo, de la direccin 08048000 hasta 0804a000. Proteccin de la regin: tpicos bits r (permiso de lectura), w (permiso de lectura) y x (permiso de ejecucin). Tipo de compartimiento: p (privada) o s (compartida). Hay que resaltar que en el ejemplo todas las regiones son privadas. Desplazamiento de la proyeccin en el archivo. Por ejemplo, en la segunda lnea aparece 00001000 (4096 en decimal), lo que indica que la primera pgina de esta regin se corresponde con el segundo bloque del archivo (o sea, el byte 4096 del mismo). Los siguientes campos identifican de forma nica al soporte de la regin. En el caso de que sea una regin con soporte, se especifica el dispositivo que contiene el archivo (en el ejemplo, 08:01) y su nodo-i (para el mandato cat, 65455), as como el nombre absoluto del archivo. Si se trata de una regin sin soporte, todos los campos estn a cero.

A partir de la informacin incluida en ese ejemplo, se puede deducir a qu corresponde cada una de las nueve regiones presentes en el ejemplo de mapa de proceso: Cdigo del programa. En este caso, el mandato estndar cat. Datos con valor inicial del programa, puesto que estn vinculados con el archivo ejecutable. Datos sin valor inicial del programa, puesto que se trata de una regin annima que est contigua con la anterior. Cdigo de la biblioteca ld, encargada de realizar todo el tratamiento requerido por las bibliotecas dinmicas que use el programa. Datos con valor inicial de la biblioteca ld. Cdigo de la biblioteca dinmica libc, que es la biblioteca estndar de C usada por la mayora de los programas. Datos con valor inicial de la biblioteca dinmica libc. Datos sin valor inicial de la biblioteca dinmica libc. Pila del proceso.

3.2 Descripcin de la funcionalidad que debe practicar el alumno.


Este apartado de la prctica consiste en analizar un programa simple, proporcionado como cdigo de apoyo programa1.c, el cual realiza labores que afectan al mapa de memoria para que el alumno analice como evoluciona el mapa debido a estas acciones. Para ello, se incluir en los puntos de inters del programa la impresin del mapa de memoria del proceso en ese instante. En el programa programa1.c, proporcionado como cdigo de apoyo, se incluyen

Prctica: Monitorizacin de Procesos en Linux

Pgina 7 de 8

variables globales con y sin valor inicial, as como variables locales (por ejemplo, variables definidas dentro de la funcin main), tanto de tipo escalar como vectores. Adems, el programa usa una variable externa al mdulo. Concretamente la variable global errno (#include <errno.h>). El programa imprime su mapa de memoria junto con las direcciones de estas variables, incluida errno, y de la propia funcin main. Una vez ejecutado, se analizar el mapa impreso identificando a que regin pertenecen las distintas variables y la propia funcin main. Recomendacin general Antes de empezar con la monitorizacin de todo el sistema de archivos, se recomienda monitorizar acciones sencillas. La ejecucin de mandatos de Linux es un buen ejemplo. Para conocer el comportamiento de los mandatos propuestos se puede consultar el manual de Linux para los mismos (man ps y man top, respectivamente).

4 Bibliografa
A.Afzal. Introduccin a Unix. Prentice-Hall, 1997. C.Newham y B.Rosenblatt. Learning the bash shell. O'Reilly, 1995. S.R. Bourn. The UNIX System. Addison-Wesley, 1983. J. Carretero Prez. Sistemas operativos: una visin aplicada, Mc Graw Hill, 2001. Resto de la bibliografa de la asignatura. Pginas del man.

Prctica: Monitorizacin de Procesos en Linux

Pgina 8 de 8

Vous aimerez peut-être aussi