8
Curso: Sistemas Operativos Grado Sistemas de la Información Práctica: MONITORIZACIÓN DE PROCESOS EN LINUX

PRACTICA 3B Monitorizacion Del Sistema Linux

Embed Size (px)

Citation preview

  • Curso:

    Sistemas Operativos

    Grado Sistemas de la Informacin

    Prctica:

    MONITORIZACIN DE PROCESOS EN LINUX

  • Prctica: Monitorizacin de Procesos en Linux Pgina 2 de 8

    ndice

    1 Objetivo ......................................................................................................................................................... 3

    2 Monitorizacin de procesos........................................................................................................................ 3

    2.1 Monitorizacin de procesos existentes en el sistema. .................................................................. 3

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

    3 Anlisis del mapa de memoria de un proceso.......................................................................................... 6

    3.1 El archivo /proc/pid/maps. ............................................................................................................ 6

    3.2 Descripcin de la funcionalidad que debe practicar el alumno................................................... 7

    4 Bibliografa .................................................................................................................................................... 8

  • Prctica: Monitorizacin de Procesos en Linux Pgina 3 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 4 de 8

    Figura 1. Pantalla de salida de ps axuf

    Cuntos procesos hay en ejecucin en 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.

    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

    root 1 0.2 0.0 500 248 ? S 11:29 0:04 init [5]

    root 2 0.0 0.0 0 0 ? SW 11:29 0:00 [keventd]

    root 3 0.0 0.0 0 0 ? SWN 11:29 0:00 [ksoftirqd_CPU0]

    root 4 0.0 0.0 0 0 ? SW 11:29 0:00 [kswapd]

    root 5 0.0 0.0 0 0 ? SW 11:29 0:00 [bdflush]

    root 6 0.0 0.0 0 0 ? SW 11:29 0:00 [kupdated]

    root 7 0.0 0.0 0 0 ? SW 11:29 0:00 [kinoded]

    root 9 0.0 0.0 0 0 ? SW 11:29 0:00 [mdrecoveryd]

    root 12 0.0 0.0 0 0 ? SW 11:29 0:00 [kreiserfsd]

    root 82 0.0 0.0 0 0 ? SW< 11:29 0:00 [lvm-mpd]

    root 496 0.0 0.0 0 0 ? SW 11:29 0:00 [eth1]

    root 549 0.0 0.2 1456 600 ? S 11:29 0:00 /sbin/syslogd -a /var/lib/dhcp/dev

    root 552 0.0 0.5 2324 1364 ? S 11:29 0:00 /sbin/klogd -c 1 -2

    root 601 0.0 0.0 0 0 ? SW 11:30 0:00 [khubd]

    root 802 0.0 0.2 1552 684 ? S 11:30 0:00 /sbin/resmgrd

    bin 816 0.0 0.1 1404 384 ? S 11:30 0:00 [portmap]

    root 861 0.0 0.2 1504 568 ? S 11:30 0:00 /usr/sbin/ypserv

    root 918 0.0 0.0 0 0 ? SW 11:30 0:00 [rpciod]

    root 919 0.0 0.0 0 0 ? SW 11:30 0:00 [lockd]

    at 1048 0.0 0.2 1492 564 ? S 11:30 0:00 [atd]

    root 1062 0.0 1.2 6164 3248 ? S 11:30 0:00 /usr/sbin/cupsd

    lp 1547 0.0 0.4 5880 1200 ? S 11:30 0:00 \_ lp1 39 doc kdeprint_RYv9LVS 1

    lp 1548 0.0 1.9 8812 4956 ? S 11:30 0:00 \_ /usr/bin/perl/usr/lib/cups/filt

    lp 1551 0.0 1.9 8808 4956 ? S 11:30 0:00 | \_ /usr/bin/perl/usr/lib/cups/

    lp 1552 0.0 1.9 8816 4960 ? S 11:30 0:00 | \_ /usr/bin/usr/lib/cups/

    lp 1553 0.0 0.4 4448 1204 ? S 11:30 0:00 | \_ sh -c level=0; echo -en

    lp 1554 0.0 0.1 3404 380 ? S 11:30 0:00 | \_ cat

    root 1549 0.0 0.5 4064 1492 ? S 11:30 0:00 \_ smb://:@150.100.10.67/HP 4000 3

    root 1088 0.0 0.3 12100 776 ? S 11:30 0:00 /usr/sbin/nscd

    root 1089 0.0 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd

    root 1090 0.0 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd

    root 1091 0.0 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd

    root 1092 0.0 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd

    root 1093 0.0 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd

    root 1094 0.0 0.3 12100 776 ? S 11:30 0:00 \_ /usr/sbin/nscd

    root 1150 0.0 0.2 5932 720 ? S 11:30 0:00 /usr/sbin/ypbind

    root 1151 0.0 0.2 5932 720 ? S 11:30 0:00 \_ /usr/sbin/ypbind

    root 1152 0.0 0.2 5932 720 ? S 11:30 0:00 \_ /usr/sbin/ypbind

    root 1153 0.0 0.2 5932 720 ? S 11:30 0:00 \_ /usr/sbin/ypbind

  • Prctica: Monitorizacin de Procesos en Linux Pgina 5 de 8

    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.

    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

  • Prctica: Monitorizacin de Procesos en Linux Pgina 6 de 8

    3 Anlisis del mapa de memoria de un proceso.

    3.1 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 /bin/cat

    0804a000-0804c000 rw-p 00001000 08:01 65455 /bin/cat

    0804c000-0804e000 rwxp 00000000 00:00 0

    40000000-40013000 r-xp 00000000 08:01 163581 /lib/ld-2.2.5.so

    40013000-40014000 rw-p 00013000 08:01 163581 /lib/ld-2.2.5.so

    40022000-40135000 r-xp 00000000 08:01 165143 /lib/libc-2.2.5.so

    40135000-4013b000 rw-p 00113000 08:01 165143 /lib/libc-2.2.5.so

    4013b000-4013f000 rw-p 00000000 00:00 0

    bfffe000-c0000000 rwxp fffff000 00:00 0

  • Prctica: Monitorizacin de Procesos en Linux Pgina 7 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 8 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 ). 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.