Parte V. Supervisión del sistema
Los administradores de sistemas también supervisan el rendimiento del sistema. Red Hat En...
547
SystemTap
37.1. Introducción
SystemTap proporciona una interfaz de línea de comandos y un lenguaje de script que simpl...
548
Capítulo 37. SystemTap
Figura 37.1. Flujo de Datos en SystemTap
37.3. Utilización de System Tap
Systemtap trabaja trad...
549
Rastreo
37.3.1.1. Donde Sondear
Systemtap supports a number of built-in events. The library of scripts that comes with...
550
verbosos durante su procesamiento. Intente la opción -h para ver más opciones.
37.3.1.2. Que Imprimir
Debido a que est...
Upcoming SlideShare
Loading in …5
×

37 supervisión del sistema

476 views
385 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
476
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

37 supervisión del sistema

  1. 1. Parte V. Supervisión del sistema Los administradores de sistemas también supervisan el rendimiento del sistema. Red Hat Enterprise Linux contiene herramientas para asistir a los administradores con estas tareas.
  2. 2. 547 SystemTap 37.1. Introducción SystemTap proporciona una interfaz de línea de comandos y un lenguaje de script que simplifica la obtención de información sobre el kernel de Linux en ejecución para que éste pueda ser analizado en profundidad. Los datos pueden ser extraidos, filtrados y resumidos de manera rápida y segura, permitiendo así el diagnóstico de problemas complejos de funcionalidad o rendimiento. SystemTap permite que los scripts sean escritos en el lenguaje de script propio de SystemTap, el cual es luego compilado en los módulos de kernel en C e insertado en el kernel. La principal idea tras los scripts de systemtap es nombrar eventos y darles un manejador. Cuando un evento ocurre, el Kernel de Linux ejecuta el manejador como si fuera éste una subrutina rápida, luego continúa. Hay diferentes tipos de eventos, tales como entrar o salir de una función, el vencimiento de un cronómetro o el inicio o finalización de la sesión de systemtap. El manejador consiste de una serie de declaraciones a ejecutar una vez el evento ocurra. Entre estas declaraciones puede estar la extracción de datos del contexto del evento, almacenamiento de variables internas o la impresión de resultados. 37.2. Implementación SystemTap takes a compiler-oriented approach to generating instrumentation. Refer to Figura 37.1, “Flujo de Datos en SystemTap” "Flow of data in SystemTap" for an overall diagram of SystemTap used in this discussion. In the upper right hand corner of the diagram is the probe.stp, the probe script the developer has written. This is parsed by the translator into parse trees. During this time the input is checked for syntax errors. The translator then performs elaboration, pulling in additional code from the script library and determining locations of probe points and variables from the debug information. After the elaboration is complete the translator can generate the probe.c, the kernel module in C. El archivo probe.c es compilado en un módulo de kernel regular, probe.ko, utilizando el compilador GCC. La compilación puede incorporar código soporte de la bibliotecas de ejecución. Depués de que GCC ha generado la probe.ko,se inicia el demonio de System Tap para recoger las salidas del módulo de instrumentación. Este módulo es cargado en el kernel y se da inicio a la recolección de datos. Los datos del módulo de instrumentación se transfieren a un espacio de usuario por medio de relayfs y son presentados por daemon. Cuando el usuario presiona Control-C el demonio descarga el módulo, el cual también apaga el proceso de recolección de datos.
  3. 3. 548 Capítulo 37. SystemTap Figura 37.1. Flujo de Datos en SystemTap 37.3. Utilización de System Tap Systemtap trabaja traduciendo un script de SystemTap a C, ejecutando el compilador del sistema C para crear un módulo kernel de eso. Cuando se carga el módulo, activa todos los eventos probados conectándose al kernel. Después mientras los venetos ocurren en cualquier procesador, los manipuladores compilados ejecutan. Eventualmente, la sesión se detiene, la conexiones se deshacen y se elimina el módulo. Todo este proceso es dirigido desde un sólo programa de líneas de comandos, stap. 37.3.1. Rastreo La manera más simple de sondear es rastrear un evento. Este es el efecto de insertar declaraciones de impresión estratégicamente ubicadas en un programa. Con frecuencia este es el primer paso para resolver un problema: explorar para ver la historia de lo que ha pasado. Este estilo de instrumentación es el más simple. Sólo le pide a systemtap que imprima algo para cada evento. Para expresar esto en el lenguaje de scripts necesita decir donde se debe hacer el sondeo y lo que debe imprimir allí.
  4. 4. 549 Rastreo 37.3.1.1. Donde Sondear Systemtap supports a number of built-in events. The library of scripts that comes with systemtap, each called a "tapset", may define additional ones defined in terms of the built-in family. See the stapprobes man page for details. All these events are named using a unified syntax that looks like dot-separated parameterized identifiers: Evento Descripción begin El arranque de la sesión de systemtap. end El final de la sesión de systemtap kernel.function("sys_open") La entrada a la función llamada sys_open en el k e r n e l . syscall.close.return El retorno de la llamada del sistema cerrado. module("ext3").statement(0xdeadbeef) La instrucción dirigida en el controlador del sistema de archivos ext3. timer.ms(200) Un temporizador que dispara cada 200 milisegundos. Tabla 37.1. Eventos SystemTap We will use as a demonstration case that you would like to trace all function entries and exits in a source file, for example net/socket.c in the kernel. The kernel.function probe point lets you express that easily, since systemtap examines the kernel's debugging information to relate object code to source code. It works like a debugger: if you can name or place it, you can probe it. Use kernel.function("*@net/socket.c") for the function entries, and kernel.function("*@net/socket.c").return for the exits. Note the use of wildcards in the function name part, and the subsequent @FILENAME part. You can also put wildcards into the file name, and even add a colon (:) and a line number, if you want to restrict the search that precisely. Since systemtap will put a separate probe in every place that matches a probe point, a few wildcards can expand to hundreds or thousands of probes, so be careful what you ask for. Una vez identifique los puntos de sondeo aparecerá el esqueleto del script de systemtap. La palabra clave probe introduce un punto de prueba o una lista de ellas separadas por comas. Los parentesis { y } encierran el manipulador para todos los puntos de sondeo enumerados. Puede ejecutar este script tal como está aunque con manipuladores vacios no habrá salidas. Ponga las dos líneas en un archivo nuevo. Ejecute stap -v FILE. Déle fin en cualquier momento con ^C. (La opción -v le dice systemtap que imprima más mensajes
  5. 5. 550 verbosos durante su procesamiento. Intente la opción -h para ver más opciones. 37.3.1.2. Que Imprimir Debido a que está interesado en cada función a la que se entró y se salió, se debería imprimir una línea para cada una que contenga el nombre de la función. Para hacer que la lista sea fácil de leer, systemtap debe indentar las líneas de manera que las funciones llamadas por otras funciones rastreadas sean anidadas más a fondo. Para distinguir un proceso de los otros que se puedan estar ejecutando en ese momento, systemtap debe imprimir el identificador del proceso en la línea.

×