Story Transcript
Herramientas de medidas. Monitores. Cuando realizamos el estudio de un SI es necesario tener información real acerca de lo que esta ocurriendo en el sistema, para ello es de vital importancia disponer de herramientas que permitan obtener esta información. El monitor es una herramienta utilizada para observar la actividad de un sistema, generalmente observan, recogen datos estadísticos de la ejecución de los programas, analizan estos datos y los presentan de una manera adecuada al usuario. La medida debe ser repetitiva, esto es, la posibilidad de realizar una medición varias veces y que arroje los mismos resultados. En caso de que no sea así, las sucesivas medidas se usan para reducir los errores intrínsecos del proceso de medición. Generalmente los resultados de mediciones varían porque es imposible repetir las mismas condiciones de carga y en los mismos instantes, por ello es que al observar con estas herramientas hablamos de monitorización y no de medición. Estos instrumentos utilizan las tecnologías de hardware y software. Los monitores son utilizados por todos los usuarios del sistema. La información aportadas por los monitores puede ser útil: A) Para el usuario administrador, puede ser necesario conocer una serie de características del sistema (capacidad, posibilidad de ampliación, planificación, etc.). • Un administrador de sistema puede conocer la utilización de los recursos del sistema o el cuello de botella del mismo. • Un programador puede encontrar los segmentos de software más utilizados y, en consecuencia, puede mejorar el comportamiento de los programas. • Un administrador puede ajustar los parámetros del sistema y mejorar las prestaciones del mismo. • Un analista de sistema puede caracterizar la carga y crear cargas de prueba, cuyos resultados se pueden utilizar para planificar la carga del sistema. • Un analista de sistema puede encontrar los parámetros de un modelo y tener datos más reales para los modelos que representan el comportamiento temporal del sistema. B) Para el propio sistema, en aquellos que permiten su adaptación dinámica con la carga. Características El desarrollo de herramientas para observar el comportamiento de un sistema informático sometido a una carga ha seguido dos direcciones, caracterizadas por las tecnologías que se usan en dicho sistema. Los monitores software pueden ser programas, que detecten estados del sistema, o conjuntos de instrucciones, que se podrían denominar sondas software, capaces ambos de detectar acontecimientos. Los monitores hardware son dispositivos electrónicos que deben conectarse a puntos específicos del sistema (mediante sondas electrónicas) para detectar señales (niveles o impulsos de tensión) que caracterizan los fenómenos que deben observarse. La calidad de los monitores viene definida por las siguientes características:
Sobrecarga o interferencia. Como toda herramienta que miden fenómenos fisicos, los instrumentos que observan el comportamiento de los SI, sustraen energía del sistema que están midiendo. La energía consumida por el instrumento de medida debe ser tan poca como sea posible de forma que la perturbación introducida no altere los resultados de la observación. En cuanto a los monitores hardware este peligro existe a través de los puntos de conexión; no obstante, el uso de sondas de muy alta impedancia puede hacer despreciable esta perturbación. Por otro lado, los monitores software aumentan la carga del sistema y alteran su comportamiento. Sin embargo permiten la obtención de medidas inalcanzables por un monitor hardware y presentan ciertas ventajas de tipo operativo, por lo que se intentara reducir al mínimo posible los efectos de su presencia. Precisión. Se puede expresar por el error que puede afectar al valor de los datos recogidos. Las posibles causas son: interferencia del propio monitor, incorrecta instalación o utilización o mala representación de los datos observados (cantidad de dígitos para representar la medición). Cuando se utiliza un numero de herramientas todas ellas aportan un poco de error al error total. Normalmente, este coeficiente de error debería ser adjuntado por el fabricante, pero no lo suele dar y es, finalmente, el usuario quien lo evalua. Resolución. Es la máxima frecuencia a la que se pueden detectar y registrar correctamente los datos. Es decir, mide la capacidad de la herramienta de separar dos acontecimientos consecutivos en el tiempo. Ámbito o dominio de medida. Hace referencia al tipo de acontecimiento que puede detectar y, en consecuencia, a aquellas características que es capaz de observar y medir. Anchura de entrada. Es el máximo número de bits de información de entrada que el monitor puede extraer en paralelo y procesar cuando se produce el acontecimiento. Capacidad de reducción de datos. Es la capacidad que puede tener el monitor de analizar, procesar y empaquetar datos durante la monitorización para un mejor tratamiento y comprensión de los mismos y para reducir el espacio necesario para almacenar los resultados. Compatibilidad. El hardware y el software de monitorización debe ser fácilmente adaptables a cualquier entorno y a cualquier requerimiento de la aplicación. Es decir, no deben ser especificas para una determinada aplicación o sistema. Durante la operación de monitorización, la herramienta debe poder adaptarse de forma interactiva a las necesidades que puedan ir presentándose. Coste. Hay que considerar no solo el coste de adquisición sino también los de instalación, mantenimiento, formación y operación. Facilidad de instalación. Debe ser fácil instalarlo y fácil retirarlo del sistema, en caso de no ser necesario. Facilidad de utilización. Las herramientas de monitorización y medida deben ofrecer al usuario una interfaz que pueda ser utilizada por cualquier programador. El usuario debe poder centrar fácilmente su interés de forma dinámica desde cuestiones de alto nivel, como paralelismo, mensajes, etc., hasta otras de más bajo nivel o más puntuales, como procesos en espera, tiempos de retardo, etc. Monitorización durante la operación. Considerando un sistema distribuido que cambia continuamente por la creación y extinción de procesos y por la modificación de la estructura de interconexión entre las unidades distribuidas, es necesario tener un monitor que refleje la secuencia de modificaciones y la utilización de las unidades. Presentación orientada a la aplicación. La gran cantidad de datos debe presentarse de forma orientada a la aplicación, reflejando la organización y la semántica del programa, dando los resultados preferiblemente en forma de tablas y gráficos. El almacenaje
eficiente de la información puede aportar detalles acerca del pasado en caso de errores o comportamiento anormal del programa, a la vez que presentar resultados mas detallado para analizar los problemas de presentaciones y diseño. Integración. La instrumentación debe ser transparente a los usuarios debiendo permitir la realización de una monitorización continua del sistema sin una especial preparación. En general, la información acerca del sistema debe estar integrada en este, debiendo concebirse esta integración en fase de diseño del monitor. Realimentación. En algunos casos, para conseguir un comportamiento adaptativo del sistema, los resultado de la monitorización deben ser realimentados al sistema para mejorar su comportamiento, como, por ejemplo, para algoritmos de equilibrio de carga. Conceptos de medida Ante la existencia de sistemas complejos se hace necesario describir con precisión lo que se esta observando, puesto que se deben explorar las conexiones entro los acontecimientos para que sea posible explicarlos y predecirlos. Un método vital para alcanzar este objetivo es el de la medida, que permite tratar cuantitativamente los fenómenos; es decir, permite, sugerir, verificar y establecer las relaciones entre las cantidades que caracterizan un fenómeno. El estudio de un sistema informático, tanto cuando se esta diseñando, como cuando se esta trabajando, requiere el uso de técnicas de medida, que son particularmente útiles en la determinación del comportamiento del sistema. Cabria preguntarnos que significa medir o monitorizar un sistema?. En general, significa recoger información de la actividad del sistema mientras atiende a los usuarios. Estas pueden clasificarse en dos grandes categorías, atendiendo a quien las va a usar: las requeridas por los usuarios del sistema y las requeridas por el propio sistema. Todas las medidas concernientes a la utilización de los recursos del sistema llevadas a cabo para evaluar su comportamiento, controlar su uso y planificar la adición de nuevos recursos pertenecen a la primera clase. Las efectuadas para el propio control del sistema, que le permiten adaptarse dinámicamente a los factores que condicionan su actividad (principalmente la carga de trabajo) y mantener un nivel adecuado de comportamiento externo, pertenecen a la segunda clase. En general hay que tener en cuenta que ni el hardware ni el software de un sistema informático se han diseñado con el propósito de ser medidos. Actualmente esta concepción ha cambiado desde que se ha asumido la necesidad de conocer el comportamiento de un sistema informático. Este defecto de concepción restringe las observaciones que pueden realizarse de un sistema y requiere que se modifiquen algunas de sus funciones o que se añadan instrumentos caros para sobrepasar dichas restricciones. La mesurabilidad de un sistema informático se puede definir como una función de la información que se puede obtener con un monitor y del coste de las mediciones (relación: utilidad – coste). Es decir, la mesurabilidad de un sistema puede variar entre dos extremos, correspondiendo a la posibilidad de medir cada componente individual del sistema con el nivel de detalle deseado y a la totalidad inaccesibilidad al sistema, respectivamente. Hay diversas técnicas para observar un sistema informático; su elección depende del tipo de análisis que deba efectuarse y del nivel al que deba realizarse. Puesto que un acontecimiento es un cambio del estado del sistema, una forma de recoger datos determinadas actividades del sistema es capturar todos los acontecimientos asociados a
los cambios de estados y registrarlos en el mismo orden en que se producen. En este caso, la observación se efectúa por detección de acontecimientos (eventos). Otra técnica que con frecuencia se prefiere a la que se acaba de proponer es la de muestreo, que consiste en interrumpir el sistema a intervalos regulares o aleatorios para detectar el estado de alguno de sus componentes. Si el numero de muestras recogidas es lo suficientemente grande, este tipo de medidas puede ser suficientemente preciso. Detección de acontecimientos (Eventos) Un acontecimiento es un cambio de estado del sistema. Se puede definir estado de un sistema informático como el establecido por los valores de todas sus memorias. Evidentemente, el seguimiento del estado de todas ellas constituiría una tarea ímproba que requerirá un sistema tanto o más grande que el que se quiere observar. Cuando se observa un sistema con ánimo de evaluar su comportamiento, normalmente se restringe el estado del sistema a un conjunto limitado de memorias del sistema, que englobe aquellas que reflejen los cambios en el comportamiento del sistema que interesa retener, de acuerdo con los objetivos del estudio que se hayan planteado. Cuando un acontecimiento esta asociado con una función de un programa se dice que se esta frente a un acontecimiento software, como, por ejemplo, el hecho de iniciar un programa un operación de E/S. De forma similar un acontecimiento hardware consiste en la aparición de una o más señales en los circuitos de un componente de un sistema y es independiente del programa que se este ejecutando en ese momento, como, por ejemplo, los movimientos del brazo de un disco. No obstante, muchos acontecimientos hardware pueden ser reconocidos por el software ya que van acompañados de la modificación de alguna memoria accesible al software, es decir, llevan asociados un acontecimiento software. De ahora en adelante, en las discusiones sobre el tema, cuando se efectúen observaciones por detección de acontecimientos, se supondrá que se trata con acontecimientos reconocidos por el software. Por consiguiente, se ilustrara esta técnica haciendo referencia a acontecimientos software, aunque, conceptualmente se puede usar en medidas hardware. El principio de detección de acontecimiento software es el de insertar un código suplementario (traps, es decir, interrupciones controladas por el programa) en lugares determinados del sistema operativo. Cuando se produce un acontecimiento que se debe detectarse, esté código transferirá el control a la rutina de tratamiento, que almacenará sus datos significativos, junto con el instante de aparición, en un área tampón, para posteriormente grabarlos en disco y devolver el control al sistema operativo. El conjunto de todos los datos registrados de esta forma constituye lo que se denomina una traza de acontecimientos. No obstante, hay que ser prudente a la hora de seleccionar la cantidad de eventos que se desea registrar, ya que se corre el riesgo de que la observación de los eventos software provoque una distorsión notable en el comportamiento del sistema. En sistemas conducidos por interrupciones, se puede adoptar una técnica ligeramente distinta para detectar la aparición d determinados acontecimientos. En este caso, la dirección de la rutina de tratamiento de una interrupción determinada debe sustituirse por la dirección de inicio de la rutina de medición. Esto permite interceptar cada interrupción de este tipo y leer, cuando se produce la interrupción, los contenidos determinadas posiciones de memoria o tablas. Estos datos, junto con el instante de aparición, se registraran en cinta o en disco antes de devolver el control al sistema operativo para el tratamiento de la interrupción.
Algunos sistemas están equipados de hardware especial para facilitar la captación de eventos por parte del software y disminuir su coste, especialmente en necesidades de CPU. Muestreo Esta técnica se deberá utilizar cuando sea necesaria conocer la secuencia de estos acontecimientos o el número de veces que se han producido en un intervalo determinado. Cuando el conocimiento de estos elementos no es esencial para el estudio de un problema, puede adoptarse el método de muestreo. Es una técnica estadística que se puede usar siempre que el acontecimientos de todos los componentes, objetos o acontecimientos de una población sea imposible, poco practica o demasiado cara. Entonces en vez de examinar todos los elementos de la población completa, este método analiza solo una parte de ellos, denominado muestra. A partir de esta muestra es posible estimar algunos de los parámetros estadísticos que caracterizan la población. En la evaluación del comportamiento de un sistema informático, esta técnica prsenta la ventaja de producir un volumen de datos mucho menor, reduciendo y simplificando, por lo tanto su análisis. Además, el proceso de recogida de datos causa unos disturbios inferiores al sistema y esta reducción de interferencia hace que la alteración de la evaluación del comportamiento debida al insturmento de medida sea a menudo irrelevante y siempre más fácilmente controlable. El muestreo puede usarse con dos objetivos distintos: 1.- Evaluar las fracciones de un intervalo de tiempo dado que cada componente del sistema ha permanecido en distintos estados. Los datos recogidos durante el intervalo de medida están sujetos a un análisis posterior para determinar que sucedió durante dicho intervalo. 2.- Seguir la evolución de un sistema y predecir su comportamiento futuro de forma que puedan tomarse las decisiones que tendrán una influencia positiva en su comportamiento. El primer objetivo se alcanza con herramienta de medida especificas, utilizadas normalmente por usuarios de un sistema para evaluiar la eficiencia de uso de los recursos. La presicion de los resultados viene determinada por el tamaño de la muestra. Debe observarse que, puesto que las cantidades miestreadas son funcion del tiempo será necesario suponer que la carga es estacionaria durante largos períodos de tiempo. No obstante, pueden obtenerse situaciones razonablemente estacionarias subdividiendo el intervalo de medidas en peíodos de tiempo relativamente cortos y agrupando los bloques de datos homogéneos. El segundo objetivo se alcanza cuando la medida es una parte integrante del proceso de control de la actividad de un sistema informático. Muchas de las funciones del sistema operativo deben adaptarse dinámicamente a las variaciones de la carga o de forma mas general, a las variaciones de las condiciones del sistema. Las estimaciones de los parámetros, sobre las que se basan determinadas desiciones, consideran la historia reciente de sus valores. Puesto que la evolución de un sistema no puede predecirse de forma determinista , es necesario crear un modelo basado en la estructura estocástica adyacente. Estructura del monitor
La conexión entre el monitor y el sistema se realiza a través de la interfaz de instrumentación. Esta interfaz incluye todos aquellos elementos que permiten acceder a los puntos del sistema que contienen información relevante para la monitorización, tale como, por ejemplo, secciones de código, temporizadores, puntos de sondeo, etc. El elemento selector o de filtrado permite una captura selectiva de las actividades sondeadas. Esto le permite al usuario orientar la medida hacia lso aspectos especificos que desea explorar. Además tiene por misión generar aquellas variables que no teniendo existencia física directa en el sistema, pueden generarse en función de otras que directamente observables. El elemento procesador realiza las comprobaciones de los elementos del sistema que van a ser analizados o medidos. El resultado de las comprobaciones se graba en un medio de almacenamiento para poder ser analizado e interpretado y así obtener los resultados deseados. Algunas veces la fase de análisis e interpretación se realiza en paralelo on la detección y captura de eventos, mientras que otras veces se hace después de recoger toda la información. En el primer caso se dice que se tiene un sistema de medida en tiempo real. Los sistemas de meida en tiempo real tienen la posibilidad de ser utilizados para el control dinámico de las prestaciones del sistema, mientras que el análisis diferido (batch) se usa para la planificación y ajuste del sistema a largo plazo.
Sistema a medir Interfaz de instrumentación
Selector o Filtro Procesador Registrador Analizador Clasificación de los monitores En el caso de ordenadores personales o estaciones de trabajo son habitualmente programas, que o bien están incluidos en la distribución del sistema operativo (UNIX, Windows NT/2000/XP), o son utilidades externas (Windows 95/98); también pueden ser trozos de código unidos a un programa, como en el caso de los profilers de aplicaciones, o aparatos de medición, como en el caso de los monitores de prestaciones de la red.
Arrancar el temporizador
Permitir interrupciones
Espera
Inhibir interrupciones
Leer el estado
Almacenar el estado
Fin
Monitores software Son los más adecuados para monitorizar los sistemas operativos, las redes y las bases de datos, así como las aplicaciones que las utilizan. Cada activación del monitor implica la ejecución de varias instrucciones por parte de la CPU del sistema que está analizando, lo que puede provocar una gran sobrecarga en el sistema si la causa de la activación se produce con gran frecuencia. La aportación de código que necesitan los monitores software se puede realizar de tres formas distintas: 1) Por adición de un nuevo programa, es el más fácil de utilizar y de eliminar cuando ya no se necesite. Además se garantiza la integridad del sistema operativo y del propio programa que se va a medir. 2) Por modificación del software que se va a medir, se basa en la utilización de sondas software, que son conjuntos de instrucciones insertadas en puntos clave del programa que debe observarse. Cada sonda debe detectar la llegada del flujo de control al punto crítico donde está situada, con lo que se puede determinar el número de veces y los instantes que se pasa por ese lugar, a la vez que el contenido de ciertas variables cuando se está ejecutando esa zona de código. 3) Por modificación del sistema operativo, se utiliza cuando determinadas variables que se deben medir sólo están disponibles para el sistema operativo, como pueden ser relojes de tiempo real, estado de colas del planificador, etc.
Puesto que el monitor software necesita recursos del sistema (consume tiempo de CPU, ocupa memoria y realiza operaciones de E/S), se debe vigilar el cumplimiento de los siguientes requerimientos: • La extracción de datos del sistema debe realizarse de forma cualitativa y cuantitativa. • Las modificaciones del sistema operativo deben ser las mínimas posibles. • La alteración de las características y de las prestaciones de la carga no debe ser apreciable. Se debe llegar a un compromiso entre la precisión de las medidas y la interferencia que éstas pueden ocasionar en el sistema, ya que en general si se necesita una gran precisión en los resultados, se tendrán que realizar un gran número de observaciones, lo que provocará una sobrecarga del sistema que hará que las medidas obtenidas no sean fiables. Por el contrario un número de medidas reducido pueden no llegar a ser fiables. Una característica deseable en un monitor es la posibilidad de ser habilitado / deshabilitado según convenga, de tal forma que se evite sobrecargar al sistema cuando no se utilice. En general la prioridad del monitor debe ser superior a la de los acontecimientos que debe observar. Puesto que para el funcionamiento de un monitor software se requiere la ejecución de instrucciones del propio código del sistema analizado, el monitor no podrá detectar acontecimientos que se produzcan por debajo del tiempo de ejecución de una instrucción ni acceder a acontecimientos que no se reflejen en alguna posición de memoria del sistema que sea accesible por la ejecución de una instrucción. La mayoría de los monitores están escritos en lenguajes de programación de bajo nivel, tales como ensamblador o C, para mantener al mínimo la sobrecarga. En general es conveniente que el monitor software y el sistema operativo estén escritos en el mismo lenguaje de programación. a) Monitores software conducidos por acontecimientos Existen dos tipos de instrumentación en los monitores conducidos por acontecimientos o eventos: • Por Traps o segmentos de código que se insertan en determinadas partes del programa. Cuando el flujo de control llega a ellos, se ejecutan, realizando determinadas acciones encaminadas a señalar la aparición de ese evento y a extraer la información que lleva asociada. • Por interceptación de las interrupciones, que desvían el tratamiento de la interrupción, redireccionando dicho tratamiento a una zona de código donde se halla el monitor, el cual contabiliza el tipo de interrupción y recopila la información asociada al acontecimiento que ha provocado la interrupción. b) Monitores software de muestreo Un monitor de muestreo interfiere mucho menos en el funcionamiento del sistema que un monitor conducido por eventos. En este tipo de monitores es posible variar la frecuencia de muestreo y el número de variables que hay que medir en cada instante de muestreo. El procedimiento de extracción de datos utiliza un reloj interno que provoca una interrupción del sistema a intervalos regulares de tiempo para extraer los datos del estado del mismo. En ocasiones los datos se recogen a intervalos aleatorios aunque con una longitud media fija. En general se debe evitar un sincronismo entre muestreo y eventos que impida al monitor detectar todos los estados del sistema.
El programa de extracción de datos debe ser el de mayor prioridad y se debe ejecutar con las interrupciones inhibidas. En consecuencia, dicho programa debe ser muy rápido (poca demanda de CPU), con el fin de no interferir en las prestaciones del sistema. Los datos que se deben tomar son de dos tipos: • • • Acerca de las actividades suspendidas cuando se provocó el disparo del temporizador. • • • Acercadelas actividades en progreso, comoel estadodelos canales, contenido de ciertas áreas de memoria, etc. Los datos recolectados se deben almacenar compactamente, subdivididos en grupos temporales, formando los que se denominan registros lógicos, que son un conjunto de datos recogidos durante un determinado período de tiempo. Monitores hardware Son dispositivos que se conectan al hardware del sistema que se va a monitorizar por medio de sondas electrónicas, que detectan eventos de tipo eléctrico. Su principal característica es que son externos al sistema que van a medir, lo que implica: • No utilizan recursos del sistema que van a monitorizar. • No producen interferencias con éste. • Son muy rápidos. Sus principales desventajas: • Son más difíciles de instalar. • Existen magnitudes a las que no se puede acceder. • Requieren para su operación y análisis de resultados de personal especializado. • Puede interactuar a nivel eléctrico con el sistema que se va a monitorizar, provocando perturbaciones que resulten en un funcionamiento anómalo del sistema monitorizado. La siguiente Figura representa el esquema más simple de un monitor hardware. Reloj
Módulo Lógico
Contadores
Almacenamiento
En este esquema, los módulos lógicos se encargan de filtrar las señales, de forma que sólo se obtengan disparos cuando se produce una determinada combinación de las señales de entrada, lo que es equivalente a decir que se está produciendo un determinado evento. Los contadores se encargan de registrar el número de veces que se produce un determinado fenómeno. Mientras que la parte de almacenamiento tiene la misión de memorizar de forma permanente el valor de los contadores. Por otro lado el reloj se encarga de dar la señal de sincronismo con la que se deben capturar los eventos. El esquema anterior se puede ver en la siguiente figura; con este monitor se pretende determinar el tiempo de utilización de un determinado recurso.
Reloj
Biestable
Contador
Reloj Contador Biestable
Actualmente la tendencia es sustituir la mayor parte de los módulos de los que consta un monitor hardware por un microprocesador, ya que se puede encargar de realizar las operaciones de filtrado, cuenta y memorización. Los contadores son ahora actualizados y almacenados por el propio microprocesador, que, además, puede interpretar los resultados y visualizarlos. Por otra parte, los contadores pueden también ser sustituidos por una memoria RAM. La ventaja de utilizar un microprocesador es evidente ya que los módulos lógicos, que en un principio eran cableados, pasan a ser programados. Su principal inconveniente es que la frecuencia de muestreo se hace mas lenta, con lo que se pierde una de las principales ventajas de los monitores software, su rapidez. S O N D A S
Memoria Módulo Lógico
DMA CPU
Monitores híbridos Los monitores híbridos son una mezcla de los monitores software y hardware que tratan de aunar las ventajas de ambos monitores y evitar sus inconvenientes. Estos monitores añaden al sistema operativo una parte muy pequeña de código que envía información al monitor hardware que está observando de forma continua la ejecución del procesador principal.
La parte de código que se añade puede consistir en la ejecución de una instrucción de entrada / salida a la que se añade una palabra de 16 ó 32 bits que hace referencia al suceso que se desea monitorizar. La parte de hardware de un monitor híbrido es un sistema con microprocesador con una base de tiempos que cada vez que la parte software envía una información añade el tiempo en que tiene lugar la captura. El tiempo y la información que se captura son almacenados y procesados por el procesador del monitor. Finalmente toda la información monitorizada se presenta al final por pantalla, en forma de tablas y / o gráficos, almacenándose además en un archivo. Al reducirse generalmente la parte software a la ejecución de una instrucción de E/S, y al procesarse y almacenarse en otro computador, se elimina una parte de la sobrecarga que tenía un monitor software. Los monitores híbridos son los más usados en el diseño de nuevas arquitecturas de computadores, y vienen integrados en algunos computadores modernos. También son muy usados en el estudio del comportamiento de prototipos de nuevas máquinas. MONITOR HIBRIDO
SISTEMA CPU
Memoria
Captador de eventos
CPU
E/S
Base de tiempos
Memoria
E/S
Aunque durante la historia de la informática se han utilizado muchos tipos de monitores, los más habituales hoy en día son programas destinados a evaluar un sistema informático completo o una parte del mismo, y programas o aparatos de medición para medir las prestaciones de una red de ordenadores. Según la forma como miden las prestaciones, los monitores se denominan de eventos o acontecimientos, que se activan cada vez que sucede un proceso determinado en el ordenador (como leer de disco, por ejemplo), o de muestreo. Los segundos son los más habituales, se activan a intervalos de tiempo fijos, o aleatorios. Lo importante de los monitores es que introduzcan poco overhead, es decir, que interfieran poco en el funcionamiento del sistema; los primeros, en general, interfieren mucho más que los segundos. Un monitor, además, puede ser en tiempo real o en modo batch, según
presente los resultados durante su ejecución o al final. Según la presentación de los resultados, también pueden ser monitores gráficos o basados en texto. La mayoría de las veces, los monitores incluyen dos partes: un cliente y un servidor, sobre todo en el caso de los monitores gráficos. La parte cliente interroga a los servidores, que pueden ejecutarse en la máquina local o en otra máquina, y presenta los datos en forma gráfica, bien mediante diagramas de barras que indican porcentajes de utilización o mediante strip charts, es decir, diagramas temporales que representan en abscisas el tiempo y en ordenadas la utilización del recurso. En cuanto a los monitores software, hay también principalmente dos tipos: profilers, o programas pegados a otros que miden sus prestaciones, y programas que miden el estado de un sistema. Se verán a continuación. Profilers Los profilers son trozos de código linkados a un programa, y que son llamados cada cierto tiempo. Habitualmente, hay que instruir al compilador para que incluya esta opción de profiling. Estos fragmentos de programa generan un fichero, que es luego analizado por otros programas; el análisis muestra el tiempo empleado en cada una de los procedimientos de un programa y el número de veces que se ha llamado, de forma que el hábil programador pueda optimizar esos procedimientos. Esto puede tener un gran impacto en las prestaciones del programa; si un programa que tarda normalmente 10 segundos en ejecutarse se tira el 50% del tiempo en un procedimiento determinado, y, mediante alguna hábil técnica de optimización, conseguimos reducir el tiempo empleado en ese procedimiento a la mitad, habremos logrado que el programa tarde en ejecutarse solo 7.5 segundos, un 25% menos. Para hacer eso hay diversas técnicas, algunas de las cuales se muestran en la referencia. Flat profile: Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls ms/call ms/call name 12.26 0.19 0.19 837698 0.00 0.00 eoRng::uniform(double) 7.10 0.30 0.11 1095925 0.00 0.00 vector::begin(void) const 7.10 0.41 0.11 907355 0.00 0.00 vector::size(void) const 7.10 0.52 0.11 41897 0.00 0.01 __copy_d__H3Z20__bit_const_iteratorZ14__bit_iteratorZi_X01T0X11PX21_X11 5.16 0.60 0.08 778944 0.00 0.00 __ml__C20__bit_const_iterator 4.52 0.67 0.07 931658 0.00 0.00 __ml__C14__bit_iterator 4.52 0.74 0.07 701600 0.00 0.00 eoRng::flip(float) 3.87 0.80 0.06 910452 0.00 0.00 __pp__14__bit_iterator 3.87 0.86 0.06 837698 0.00 0.00 eoRng::rand(void) 3.23 0.91 0.05 1710602 0.00 0.00 __bit_reference::__bit_reference(unsigned int *, unsigned int) 3.23 0.96 0.05
990533 0.00 0.00 __mi__C20__bit_const_iteratorG20__bit_const_iterator 3.23 1.01 0.05 912052 0.00 0.00 __bit_iterator::bump_up(void) 3.23 1.06 0.05 673552 0.00 0.00 __bit_const_iterator::bump_up(void) 3.23 1.11 0.05 40000 0.00 0.01 eoBitMutation::operator()(eoBit &) 2.58 1.15 0.04 1027694 0.00 0.00 __opb__C15__bit_reference 2.58 1.19 0.04 81096 0.00 0.00 EO::operator herramientas administrativas (común) -> monitor del sistema. Sar, o system activity report; en system 5 da información sobre uso de la CPU Sa da información sobre que órdenes se han ejecutado y que recursos de CPU han necesitado (sólo BSD), prdaily hace lo mismo en SysV. Perfmeter se usa en sistemas OpenView, xload y otros programas hacen algo similar en Linux. En otros sistemas operativos, como en el Irix (que está a punto de fenecer, si es que no ha fenecido ya), hay programas como gr_osview, que muestran de forma gráfica todos los aspectos del sistema. El entorno de usuario Gnome viene con el gtop, un monitor gráfico equivalente a top y vmstat, que presenta los procesos que se están ejecutando en cada momento y la memoria que usan. También tiene una serie de monitores que se pueden usar como "applets" en la barra de Gnome: de disco, de CPU...
Otros programas sirven para evaluar las prestaciones de una red; o al menos los retrasos que la red introduce en las prestaciones de un ordenador. De forma equivalente a los vmstat e iostat, existe netstat, con múltiples opciones; algunas de ellas permiten medir el número de colisiones y errores que hay en la red. Ping es la utilidad más simple: simplemente mide lo que tarda un paquete, del tamaño que uno quiera, en ir y volver a un sistema determinado; da una idea de si ese sistema está conectado (independientemente de los protocolos que esté ejecutando), y del retraso
que hay. No es en realidad un monitor, salvo que uno quiera medir la velocidad de la red, y lo analice luego con alguna otra herramienta. Traceroute no solamente dice cuánto se tarde de un punto de Internet a otro, sino por dónde pasa y cuál es el retraso en cada uno de los nodos. Por alguna razón, en algunos ordenadores hace falta ser superusuario para usarlo.
En general, cada sistema operativo viene con multitud de programas de monitorización de la carga del sistema, algunos de ellos en forma de pequeñas aplicaciones (applets) que pueden tenerse siempre ejecutándose (por ejemplo, en la barra de Gnome o en la barra de estado del XEmacs). Es conveniente echar un vistazo a las descripciones de los programas del sistema operativo, a ver cuál es la más conveniente; también conviene mirar en sitios web de distribución de aplicaciones gratuitas, tales como Freshmeat o TuCows.También en un manual de Windows NT server vienen una serie de instrucciones para dejar instalado y configurado el WinNT (que para WinXP servirá también, supongo). En cuanto a otros sistemas operativos, en este documento de Sun explica como configurar y usar la orden s ar.
Representación gráfica aplicada a la evaluación de prestaciones Presentación de los resultados Para presentar y analizar los resultados obtenidos de la ejecución de un monitor sobre un sistema o una comparativa entre varios sistemas normalmente se usa algún tipo de gráfico, como por ejemplo el indicado en las ilustraciones del capítulo anterior, gráficos de barras de evolución temporal (las llamadas strip chart). Más habitualmente, para resumir las prestaciones de todo el sistema se suele usar un gráfico de Gantt, o bien un gráfico de Kiviat. Veremos éste con más detenimiento. En general, la visualización es esencial casi en cualquier tarea científica, pero en evaluación de prestaciones sirve para apreciar de un vistazo cuál es el estado del sistema, y si hay algún problema, de dónde puede prevenir. Ventajas adicionales son cantidades que se pueden calcular directamente sobre los gráficos, especialmente las llamadas figuras de mérito, que están relacionadas con algún aspecto de los gráficos. Gráficos de Gantt En un gráfico de Gantt, se representa en abscisas el tiempo, y en ordenadas una línea que representa los instantes durante los cuales un recurso ha estado ocupado. Se suelen usar gráficos similares en ingeniería del software, y, en general, en planificación de
proyectos. En este sitio se puede descargar el código fuente de un programa que traza un gráfico de Gantt; también se puede crear uno desde el mismo sitio. A partir de la gráfica de Gantt se puede hacer análisis de Pert, con el objetivo de calcular caminos críticos y demás. Este tipo de herramienta se usa en casos bastante específicos; en concreto, en programación en entornos paralelos, en programación de sistemas en tiempo real, y en diseño de circuitos, por ejemplo. No es el tipo de gráfica que uno debe hacer cada vez que se enfrenta al análisis de prestaciones.
Gráficos de Kiviat En un gráfico de Kiviat, se representan los porcentajes de uso y solapamiento de diferentes componentes del sistema como una figura geométrica que une diferentes puntos que representan esos porcentajes. Teóricamente, es posible ver de un vistazo el problema que tiene un sistema. Habitualmente está dividido en 8 sectores; y en ellos se suele colocar alternativamente magnitudes del tipo “alto es mejor” con magnitudes del tipo “bajo es mejor”. Una de las distribuciones puede ser, en sentido e las agujas del reloj, CPU ocupada, sólo CPU, CPU y un canal, un canal sin CPU, un canal activo, CPU esperando, CPU usuario, CPU sistema, alternando índices de uso con índices de solapamiento, e índices del tipo HB (más alto es mejor) con otros del tipo LB (más bajo es mejor).
Como “canal” normalmente se suele usar el o los discos, aunque también se podría representar la red o el subsistema gráfico, por ejemplo. Diferentes formas características indican diferentes "tipos" de sistemas, el sistema perfecto sería el denominado estrella de Kiviat, una estrella de 4 puntas (o 3, dependiendo del número de "canales" representados). En cualquier caso, hay que mirar siempre que los indicadores a las 12, 3, 6 y 9 sean altos, y los demás bajos, y que estos indicadores tengan más o menos el mismo valor. Valores altos de los indicadores impares indican un sistema que no funciona como debiera, y si los valores pares tienen valores muy diferentes, eso suele indicar un sistema desequilibrado, con demasiado uso de CPU o de alguno de los canales. Al gráfico de Kiviat se le puede añadir una tercera dimensión temporal, formando un tubo de Kiviat, que indica la progresión del gráfico de Kiviat a través del tiempo. En principio, sería posible extraer una figura de mérito (FOM, figure of merit) del diagrama de Kiviat directamente, pero adolece de una serie de fallos: por ejemplo, las variables están correlacionadas unas con otras; no todos los ejes tienen la misma escala; se consideran buenos valores extremos, y no necesariamente tiene por qué ser esto cierto. En cuanto a representar la información sobre un sistema o un benchmark en un gráfico, el tipo del gráfico dependerá, sobre todo, del tipo de variable que se va a presentar: cualitativa o categórica, ordenada o no, que están definidas por una serie de clases mutuamente exclusivas, y cuantitativa discreta o continua, que es aquella variable cuyos niveles se expresan mejor numéricamente.