Análisis y diseño de sistemas

July 21, 2017 | Autor: Esteban Villalvir | Categoria: Sistemas de Información Geografica
Share Embed


Descrição do Produto

ANALISIS Y DISEÑO DE SISTEMAS INFORMATICOS TEMA 1 INTRODUCCIÓN Evaluación del rendimiento de un sistema informático. Intenta determinar de qué forma un conjunto de programas está utilizando un hardware. El conjunto de programas es la carga que está procesando el hardware. Según sea la utilización se obtendrán unas prestaciones. El concepto de prestaciones no se puede desligar de la carga. Se debe evaluar la potencia del ordenador para realizar un conjunto de tareas. Sin embargo es necesario poder emitir un juicio sobre la eficacia de un sistema en muchas situaciones en las que nos podemos encontrar. Dificultades - La carga no es estática. - Los índices que se utilizan para medir las prestaciones son diferentes según el tipo de estudio o sistema informático. - Siempre se intenta mejorar las prestaciones. Se debe negociar un nivel de servicio. Las prestaciones son fundamentales en el diseño, selección, compra y utilización del sistema informático. Uno de los principales problemas en el análisis de prestaciones es asegurar que los experimentos, se efectúan con la misma carga. La carga real es difícil de repetir, por tanto deberemos ser capaces de repetir esa carga. Pero surge otro problema, y es que la carga que utilicemos debe representar una carga hipotética. Si lo que pretendemos es comparar diferentes equipos, además de los problemas anteriores nos encontraremos que los instrumentos de medida y los índices que estamos utilizando pueden no ser exactamente los mismos. Motivos de un trabajo de evaluación - Un trabajo de evaluación de prestaciones arranca de unas necesidades. No se empieza el trabajo sin unos objetivos. - Se puede aplicar en todas las fases del ciclo de vida de un sistema informático: . en el diseño de una máquina . en el diseño del sistema informático . en la ampliación o configuración de un sistema informático . sintonización o ajuste. Sintonizar es equilibrar el consumo de recursos. . caracterización y predicción de la carga En general los estudios de prestaciones serán necesarios cuando se necesite predecir el comportamiento o mejorarlo.

1

Magnitudes a medir - Tanto el usuario como el responsable de un sistema tienen su idea sobre las prestaciones o rendimiento. - Esta idea se basa en magnitudes o parámetros los cuales pueden tener relación con: . consumo de tiempos . utilización de recursos . trabajo realizado por el sistema o por partes del mismo Por ejemplo para los usuarios una cosa determinante suele ser el tiempo de respuesta ante un comando interactivo ligero. Para el responsable del sistema podría ser la velocidad con la que se procesan grandes trabajos batch. Hay tres tipos de medidas a partir de las cuales se calculan índices de rendimiento: 1.- Características físicas del sistema. 2.- Condiciones operativas del sistema durante el tiempo que se está haciendo el estudio. 3.- Indices de prestaciones del sistema. Variables perceptibles por el usuario (Variables o índices externos) - Productividad (throughput). Para una carga dada es el trabajo útil por unidad de tiempo - Capacidad: máxima cantidad de trabajo útil por unidad de tiempo (máxima productividad que puede obtenerse). - Tiempo de respuesta: tiempo en procesar un trabajo. Trabajo puede significar cosas diferentes: transacciones, procesos, instrucciones... Variables internas o del sistema a) Factor de utilización: tiempo en el que un componente ha sido realmente utilizado. b) Solapamiento de los componentes: tiempo en el que varios componentes se han utilizado a la vez. c) Sobrecarga (overhead): carga que se ha procesado y que no ha sido pedida explícitamente por los usuarios. d) Factor de carga de multiprogramación: relación entre el tiempo de respuesta de un trabajo en un entorno de multiprogramación y en uno monoprogramado. e) Factor de ganancia de multiprogramación: relación entre el tiempo total de ejecutar un grupo de trabajos en multiprogramación y monoprogramación. f) Frecuencia de fallo de página: número de fallos de página que se producen por unidad de tiempo en un sistema de memoria virtual paginada. g) Frecuencia de swapping: número de programas expulsados de memoria por unidad de tiempo.

Magnitudes no relacionadas directamente con las prestaciones - Fiabilidad: probabilidad de funcionamiento correcto en un intervalo de tiempo. - Disponibilidad: probabilidad de que en un instante pueda estar funcionando. - Seguridad: que funcione correctamente sin perjudicar a nadie o sufra averías en las que no 2

se comprometa a nadie. - Performabilidad: en sistemas que siguen funcionando con fallos, probabilidad de mantener un nivel de prestaciones. - Facilidad para el mantenimiento. Carga de prueba - Para evaluar el sistema hay que hacerlo funcionar bajo una carga. - Esta carga debe representar la carga real (el problema que tiene es que es muy variable, quieres hacer unas modificaciones y la carga real que tienes en un momento no la tienes en otro). - Carga de prueba: la utilizada para tomar las medidas. Debe ser representativa y reproducible, puede ser real o sintética. - La carga de prueba o de test suele formarse por componentes de carga. En realidad se suele usar carga sintética porque permite poder experimentar y reproducir situaciones a nuestro gusto y sin tener que modificar el sistema real. En cambio en muchos casos hay que preocuparse de justificar si esa carga sintética es representativa de la situación o carga que queremos reproducir. Para comprobar esto último habrá que medir unas magnitudes para que podamos compararlas con las obtenidas bajo carga sintética. Magnitudes para los componentes de la carga -

Tiempo de CPU por trabajo. Número de operaciones de E/S por trabajo. Conviene desglosarlo por tipo de dispositivos. Prioridad. Memoria. Localidad de referencias: tiempo en el que las referencias permanecen en una página.

Magnitudes para el conjunto de la carga - Tiempo ente llegadas, entre dos peticiones. - Frecuencia de llegada, inversa del tiempo entre llegadas. - Distribución de los trabajos: proporción de los diferentes componentes de carga. - Para cargas conversacionales: -tiempo de reflexión del ususario: tiempo que el usuario de un terminal de un sistema interactivo necesita para generar una nueva petición al sistema. - número de usuarios: número de usuarios interactivos que trabajan simultáneamente sobre el mismo sistema en un instante dado. - intensidad del usuario: relación entre el tiempo de proceso de una petición y su tiempo de reflexión. Proposición de soluciones Para solucionar problemas de malas prestaciones: - Ajustar parámetros del S.O. - Modificar políticas de gestión del S.O. Puede que partes del S.O. adquirido no se adapten a una carga en particular. - Equilibrado de la carga: el objetivo es que se utilice el máximo de recursos al mismo 3

tiempo. - Modificación o sustitución de componentes hardware. Debe perseguir el recurso más cargado. - Modificación de programas. A efectuar por los usuarios, normalmente escapa al responsable del sistema. De lo que se trata es de mejorar el funcionamiento. Para ello habrá que determinar dónde está el problema. Luego habrá que evaluar si se puede solucionar sin cambiar componentes hardware o si hay que adquirir nuevo software. Si se puede solucionar sin nuevas adquisiciones, intentar modificar la carga desde el punto de vista de la explotación para intentar quitar trabajo a los elementos más solicitados. Algunos parámetros del S.O. - Tamaño del quantum. - Prioridad. - Factor de multiprogramación: número máximo de trabajos que están simultáneamente en memoria principal. - Tamaño de la partición de memoria: cantidad fija de memoria principal asignada a una cola de trabajos. - Máxima frecuencia de fallo de página. Si se sobrepasa este índice se manda el proceso a disco para que no aumente la sobrecarga. - Indice de supervivencia de páginas. Si una página no se ha utilizado un tiempo, se puede devolver a disco. Técnicas en la evaluación de sistemas - Monitorización: utilización de herramientas de medición sobre el sistema informático. - Modelado: para evaluar el comportamiento de un sistema en el que hay elementos que no están instalados. Se suelen implementar sobre la teoría de colas y resolver mediante métodos analíticos o simulación (programa que representa el comportamiento de un sistema. Se debe estar seguro de que se ha modelado bien el sistema y de que el programa funciona bien. Se utiliza cuando no se conoce otro método). - Benchmark: se trata de cargas utilizadas para la comparación de sistemas o configuraciones. Los métodos analíticos se basan en leyes que relacionan distintas partes del modelo. Se llega a crear un modelo matemático. En cambio estos modelos normalmente están limitados para modelar comportamientos extraños. En los modelos de simulación en principio se puede modelar cualquier cosa, pero suelen exigir mucho tiempo de desarrollo y ejecución. Además son muy difíciles de validar. Las técnicas de benchmarking suelen ser las más sencillas y unas de las utilizadas, aunque muchas veces los resultados obtenidos no dependen únicamente del benchmark, o el benchmark puede no ser representativo de una carga real.

4

TEMA 2 HERRAMIENTAS DE MEDIDA Monitor: herramienta utilizada para observar la actividad de un sistema informático mientras está procesando carga. - Observan el comportamiento. - Recogen datos estadísticos de la ejecución de los programas. - Analizan los datos captados. - Presentan resultados. El resultado de una medición será distinto unas veces de otras, ya que, normalmente, no es posible repetir las mismas condiciones de carga y en los mismos instantes. Por ello se habla de monitorización y no de medición ya que lo que estrictamente se efectúa es un seguimiento de la actividad realizada. Utilidad: - Un administrador puede conocer la utilización de los recursos. Puede intentar soluciones y comprobar el resultado. - Un usuario puede adaptar su carga a la del sistema. - Un analista de sistemas puede utilizarlo para caracterizar la carga, y crear cargas de pruebas. También puede servir para planificar el crecimiento de la carga. Sirve para extraer los parámetros de los modelos. - También hay sistemas adaptativos según las condiciones de la carga. Características del monitor - Sobrecarga o interferencia: consumo de los recursos necesarios para el propio monitor. - Precisión: nivel de error que pueden llevar los datos. - Resolución: máxima frecuencia a la que se pueden detectar y registrar los datos. - Ambito o dominio de medida: características que es capaz de medir. - Anchura de entrada: número máximo de unidades de información que el monitor puede extraer en paralelo. - Capacidad de reducción de datos: capacidad para analizar, procesar y empaquetar los datos. - Compatibilidad: facilidad para adaptarse a otros entornos o requerimientos. - Precio: adquisición, instalación, mantenimiento, operación. - Facilidad de instalación: fácil de instalar y retirar. - Facilidad de utilización: sencillo, completo y agradable. La sobrecarga hace que el monitor consuma recursos de lo que está midiendo. Esto hace que modifique los resultados de lo que está midiendo. Ej. el programa top suele aparecer el mismo como gran consumidor entre los procesos que enseña. Clasificación Según su implantación: - Monitores software, que son programas o ampliaciones del sistema operativo que acceden al estado del sistema, informando al usuario sobre dicho estado. - Monitores hardware, que son dispositivos electrónicos que se conectan a determinados puntos del sistema. 5

- Monitores híbridos, que son una combinación de las dos técnicas anteriores. Según su mecanismo de activación se clasifican en: - Monitores de eventos o acontecimientos, son aquellos que se activan por la aparición de ciertos eventos. Si el evento ocurre con frecuencia producen más sobrecarga. Se puede hacer una traza de lo que está ocurriendo. - Monitores de muestreo, son aquellos que se activan a intervalos mediante interrupciones de reloj. Según la frecuencia de muestreo se llega a un compromiso entre resolución y sobrecarga. Para evitar el sincronismo entre la evolución de los estados y los intervalos de medida se utilizan intervalos aleatorios. Y según su forma de presentar los resultados se clasifican en: - Monitores en línea, van presentando datos parciales. - Monitores batch, los datos se analizan cuando termina la ejecución del programa. Esquema conceptual Sistema a medir ⇓⇓⇓⇓⇓ Interface instrumentación ⇓ Filtro ⇓ Procesador ⇓ Registrador ⇓ Interpretador La interfaz de instrumentación es lo que conecta al monitor con lo que está observando. Por ejemplo si al S.O. se añaden interrupciones software para detectar determinadas acciones, esas interrupciones serían la interfaz. El selector permite hacer un registro selectivo de las muestras o variables que nos interesan. El procesador trata las muestras seleccionadas para poderlas registrar en el formato y con la información adecuada que necesitará la memoria a que se destine y para que se pueda interpretar o analizar. En algunos casos el analizador trabaja al mismo tiempo que el resto de elementos (on line) y en otros trabaja en diferido. Monitores software La activación del monitor implica la ejecución de instrucciones. Pueden ser guiados por sucesos, por muestreo o una mezcla de ambas técnicas. Inserción del código del monitor: - Adición de un nuevo programa, fácil de instalar y eliminar. - Modificación del software a medir, basado en el uso de sondas software. - Modificación del S.O., se suele utilizar para acceder a datos visibles desde el S.O. Son programas que se ejecutan junto con los programas y en el sistema que miden. 6

Las sondas software son conjuntos de instrucciones que se insertan en puntos clave de un programa. La prioridad de los monitores software deberá ser mayor que la de los elementos que deba medir. Suelen escribirse en el mismo lenguaje que el sistema operativo. Monitor software por muestreo: 1º) Un temporizador indica el momento del muestreo. 2º) Se inhiben las interrupciones. 3º) Se toman datos sobre las actividades suspendidas o sobre el estado de ciertos elementos. 4º) Almacenar los datos. 5º) Arrancar el temporizador. 6º) Habilitar las interrupciones. La utilización de registros temporales permite reducir el número de muestras. La interferencia introducida se pude controlar fijando el periodo de muestreo. Este parámetro se debe establecer de forma que los datos obtenidos sean fiables para el objetivo del estudio pero que no sea tan pequeño que la interferencia introducida sea grande. En algunos casos se pueden producir efectos de sincronismo entre fenómenos que se están midiendo y la frecuencia de muestreo. Para evitar este peligro se puede utilizar un periodo de muestreo generado aleatoriamente pero donde se puede fijar la media. Monitores software dirigidos por sucesos: - Por traps: código que se inserta en partes del programa para extraer información cuando se llega a esas partes. - Por interceptación de interrupciones: se desvía el tratamiento de una interrupción a código del monitor donde se registran datos sobre el estado en ese momento y luego se sigue el tratamiento de la interrupción. Monitores hardware Se conectan al sistema a través de sondas electrónicas. Suelen utilizarse para índices de prestaciones de bajo nivel. Su principal característica es que son externos al sistema que van a medir, lo que implica que: - no utilizan recursos del sistema - no producen interferencias - son rápidos Inconvenientes: - difíciles de instalar y utilizar - hay magnitudes que solo puede acceder el software - pueden producir errores en el hardware Esquema sencillo monitor hardware: reloj

módulo lógico

contadores

almacenamiento

7

Los monitores pueden hacerse más complejos, con procesadores y memorias RAM para procesar y grabar los datos. A su vez estos procesadores pueden tener unidades de E/S como pantallas, teclado, etc. El caso más sencillo es una señal de reloj y una variable a medir conectadas a una puerta and, y la salida enviada a un contador. Se medirá la cantidad de pulsos que la señal está activada. Un ejemplo de un monitor hardware puede ser una analizador lógico. Monitores híbridos Suelen ser software que captan acontecimientos en el sistema operativo y los envía a un módulo hardware que está conectado al bus del sistema. El envío puede ser una instrucción de E/S. El módulo hw puede ser un procesador que graba el suceso recibido con una marca de tiempo. La información se va procesando y se puede ir representando en una pantalla conectada al procesador del monitor. Así se disminuye la sobrecarga ya que el tratamiento del monitor se hace en otro sistema y se aumenta la rapidez gracias a tener un hw dedicado. Se suelen usar en el diseño de nuevas arquitecturas. Algunas arquitecturas paralelas los llevan incorporados. Comparación Los monitores hardware: - más caros. - más difíciles de utilizar. - no sobrecargan el sistema. - tienen más resolución. - son más portables. - si el sistema falla pueden seguir midiendo y detectar la causa. Dato que un monitor hardware no pude acceder: contenido de una posición de memoria. Dato que un monitor software no pude acceder: cantidad de instrucciones máquina ejecutadas. Los monitores software: - pueden acceder a datos de más alto nivel. - en principio no hay límite al tipo de datos a los que pueden acceder (mayor ámbito de medida). - suelen ser más baratos.

TEMA 3 REPRESENTACIÓN DE RESULTADOS 8

Introducción - Toma de datos ⇒ presentación de resultados. - Para facilitar la interpretación ⇒ forma gráfica. - La representación debe ser clara, concisa, simple y fácil de utilizar. - Se puede utilizar todo tipo de gráficos, según los datos a representar. Tipos de variables Cualitativas: se definen por un conjunto de subclases mutuamente exclusivas que se expresan normalmente con palabras. Pueden estar ordenadas (superordenador, miniordenador, microordenador) o no (carga científica, de ingeniería). Cuantitativas: sus distintos niveles se expresan numéricamente. Pueden ser de dos tipos: . Discretas: toman valores contables (ej. número de procesadores en un sistema). . Continuas: toman valores no contables (ej. tiempo de respuesta de una operación). Si en el eje de abcisas (x) tenemos variables cualitativas o cuantitativas discretas, conviene usar gráficos de barras. Recomendaciones para la construcción de gráficos - Minimizar el esfuerzo del lector. - Maximizar la información. - Evitar la información innecesaria. - Seguir las pautas habituales. - Evitar ambigüedad: identificar los datos y no mezclar muchos datos en la misma gráfica. No se deben poner curvas de diferentes unidades y con diferentes escalas en un mismo gráfico. La información debe evitar explicaciones.

Diagramas de Gantt En un sistema se busca la utilización máxima de los recursos. Para que esté bien aprovechado, los recursos se deben utilizar a la vez. Los diagramas de Gantt permiten ver la utilización de los recursos y el solapamiento en su utilización. Es un tipo de gráficas que es interesante para el análisis del funcionamiento de un sistema informático. En general se utiliza para visualizar temporalmente los valores que toman un grupo de variables booleanas.

CPU

60

9

E/S

20

Red

30

0%

20%

20

10

5

40%

60%

15

80%

100%

Gráficos de Kiviat Permite caracterizar los problemas de forma rápida. Se trata de un círculo donde los radios representan índices de prestaciones. La intersección entre el radio y el círculo representa el 100%. Normalmente el funcionamiento ideal tiene una forma determinada. De forma que al ver el gráfico se identifica rápidamente lo bien o mal que está funcionando el sistema y cuales son las partes causantes. Normalmente se diferencian índices beneficiosos (que es bueno que tengan valores altos) de valores perniciosos como puede ser el índice de paginación el desaprovechamiento de algún recurso. Gráfico de Kiviat, versión de Kent: 1º) Seleccionar un número par de variables a estudiar la mitad buenos índices (a mayor valor, mejores prestaciones) y la otra mitad malos índices (mejores prestaciones a menor valor). 2º) Se subdivide el círculo en tantos sectores como variables hay que representar. 3º) Se numeran los radios en sentido horario. 4º) Se asocian los buenos índices a los radios impares y los malos a los pares.

CPU supervisor

CPU ocupada Solo CPU CPU y cualquier canal

CPU usuario Al menos un canal activo sin solape con CPU CPU en espera Al menos un canal activo

En un sistema ideal, todos los índices buenos tendrían valores altos y los malos, valores muy bajos. El gráfico de Kiviat de ese sistema, tendría forma de estrella.

TEMA 4 CARACTERIZACIÓN DE LA CARGA 10

Introducción Carga: demandas que realizan los usuarios de un sistema en un intervalo de tiempo. - No se puede hablar de prestaciones sin hablar de la carga con la que se han tomado las medidas. - Para poder comparar diferentes sistemas y configuraciones, será imprescindible aplicarles una carga. Necesidad de caracterizar la carga: - Tarea difícil debido a qué cambia con el tiempo • Realimentación interna: sistemas adaptativos. • Realimentación externa: introducidas por los usuarios. Caracterización de la carga Descripción cuantitativa según unos parámetros. Los parámetros que describe la carga se seleccionan según los objetivos de la caracterización. Objetivos ⇒ técnica de estudio e instrumentos de medida de parámetros para describir la carga. Ejemplo de parámetros para describir la carga: - tiempo de CPU. - operaciones de E/S. - espacio en memoria requerido - ficheros en disco. - mezcla de instrucciones. - tiempo medido de CPU entre operaciones de E/S. - número de usuarios Carga de prueba Carga que se procesa durante el periodo de medida. Para hacer estudios de comparación o de sintonización necesitaremos reproducir la misma carga. Reproducir la misma carga es difícil aunque se ejecuten los mismos programas. Se utilizan modelos de carga: - Más difíciles de repetir. - A veces la carga que se modela no existe (predicciones). Características de los modelos de carga: - Repetible o reproducible. - Compacto, para reducir el tiempo de ejecución. - Compatible con el tipo de estudio y con máquinas diferentes si es un modelo de carga ejecutable. - Permite evitar problemas de privacidad o seguridad. - Si no es carga real, deben ser representativos. - Flexible, fácil de modificar para ajustarlo a variaciones de la carga a la que representa. 11

- Independiente del sistema; que la representatividad del modelo no varíe al cambiarlo de sistema. Sesión de medida Intervalo de tiempo en el que se forman las medidas. No tiene porque ser continuo. Normalmente habrá varias sesiones de medida. En general unas medidas estarán destinadas a datos para ajustar la carga de prueba y otras serán las medidas realmente aplicando la carga de prueba. Utilizando varias sesiones de medida se intenta evitar que particularidades en una medida se tomen como un comportamiento general. Representatividad de un modelo de carga Es la precisión con que un modelo representa una carga. La carga puede representarse a distintos niveles: nivel físico, nivel virtual, nivel funcional. El modelo deberá ser representativo atendiendo al nivel al que está asignado. Representatividad a nivel físico - Los modelo se caracterizan por el consumo de recursos físicos. - Orientado al consumo de recursos físicos. - Muy dependiente del sistema. - Datos para el modelo fáciles de conseguir (S.O., monitores, hardware). Las mayores aplicaciones de estos modelos son: - estudio de sintonización. - planificación de capacidad residual. - diseño. Representatividad a nivel virtual - Consumos de recursos lógicos. - Menor dependencia del sistema que en el modelo anterior. - Más cercanos al usuario. - Parámetros más difíciles de obtener. - Se utilizan en estudios de ampliación. - Ej. de componentes: sentencias de lenguaje de alto nivel, número de ficheros utilizados, ordenes interactivas, espacio de memoria virtual. Representatividad a nivel funcional - Se trata de modelos que realizan las mismas aplicaciones que la carga a la que representan. - Son bastante independientes del sistema. - Es difícil diseñarlo de forma sistemática. A veces son bastante subjetivos. - Aplicaciones: selección de equipos, planificación de la capacidad.

Cargas de test

12

- Real - Sintética: utilizan extractos de carga real. Natural o híbrida. - Artificial: no utilizan extractos de carga real Ejecutables: Mix, Kernels, Programas sintéticos, Benchmarks No ejecutables: Distribuciones, Modelos de colas Carga de test real - Barata - Representativa - Las sesiones de medida se deben seleccionar para que sean representativas del funcionamiento normal o de la situación de estudio. - La situación que se quiere reproducir puede no darse en el instante deseado. - Poco reproducible porque es difícil que volvamos a crear la misma situación a voluntad. - Poco flexible. (No se puede modificar la carga). - Puede haber problemas de confidencialidad. - No se puede usar en problemas de selección. Se trata de la carga que realmente se está ejecutando en un sistema con todos sus usuarios y sus aplicaciones. Lo único que se tiene que seleccionar es durante cuánto tiempo se está midiendo. Carga de test sintéticas naturales - Subconjunto de programas extraídos de la carga real. - Se suelen usar en estudios de ampliación, reposición y selección. - Dificultades en la utilización de carga sintética: Prioridades de ejecución Parámetros diferentes en las monitorizaciones Parámetros o ampliaciones de sistemas operativos y programas como compiladores También se les llama benchmarks, aunque normalmente se llama benchmark a cualquier carga de test. Son programas extraídos de la carga real pero no es carga real porque los usuarios no los están utilizando para realizar trabajo útil. Cargas de test sintéticas híbridas - Son una mezcla de programas extraídos de la carga real y de carga artificial. - Permiten modelar parte de carga existente y parte inexistente (ej. ampliaciones de carga, programas confidenciales). Un ejemplo de esta situación puede ser que se estudia la adquisición de un nuevo software pero se quiere preveer cómo responderá el sistema, el cual ya se está utilizando para una serie de tareas. Cargas artificiales - Pueden servir para cargar el sistema real o modelos de sistemas. - No utilizan componentes de la carga real.

13

Se les llaman artificiales porque están construidas para ser modelos de carga. No son extracciones de la carga real. Hay carga artificial que es ejecutable, es decir que son programas. MIX (mezcla) de instrucciones Se trata de medir la frecuencia de aparición de las diferentes instrucciones. Así pues hacer un modelo representativo será hacer una secuencia de instrucciones en las que la proporción y frecuencia de aparición sean las mismas. El problema de esta técnica es que es difícil aplicarla de forma que solo evaluemos el procesador y no otros aspectos como la gestión de memoria. Otro problema es que la comparación sólo sería válida para procesadores con el mismo juego de instrucciones. MIX de instrucciones - Las frecuencias dependen de la carga. - Los tiempos dependen del procesador. - El sumatorio de la frecuencia por la carga dará el tiempo del MIX. - El en sumatorio según el tipo de instrucción y carga se pueden dar pesos. - Se usaron para comparar procesadores. - Son muy dependientes del sistema: gestión de memoria secuenciamiento de las instrucciones manejo de direcciones MIX de sentencias - Compuesto por sentencias de lenguajes de alto nivel. - Son más independientes del sistema pero muy dependientes del compilador. - La frecuencia de aparición de las sentencias se puede medir: a) Estáticamente: medir la frecuencia de aparición en los listados de los programas. b) Dinámicamente: frecuencia con la que realmente se están ejecutando las sentencias. - La forma dinámica es más fiable pero más costosa. En caso de utilizarlos habría que controlar dos cosas: el grado de optimización del compilador y el tipo de librerías que se utilizan. El problema de la medición estática es que puede haber partes de un software que sean importantes en talla pero que se ejecuten pocas veces. La medición dinámica es más complicada porque hay que conocer las partes del programa que más se utilizan utilizando el software con diferentes datos para no representar un comportamiento muy particular. Kernels (núcleo) - Fragmento de un programa que representa su parte más característica. - Son programas cerrados que tienen un consumo de recursos conocido. - Ej. función de Ackermann, Sieve, inversión de matrices, programas de ordenación. - Se seleccionan según su similitud con los programas de la carga real.

14

Hay que tener una precaución al utilizarlos. Como son una parte de una aplicación, puede que quepan enteros en una cache, con lo que los resultados pueden ser muy buenos, pero si se probase la aplicación entera serían completamente diferentes. Programas sintéticos - No realizan trabajo útil. Sólo consumen recursos. - La cantidad de recursos consumidos se fija con parámetros de control: for i:=1 to N1 do “Consume CPU” for i:=1 to N2 do “Consume E/S”

- Hay parámetros de corrección y calibrado para corregir el consumo que una parte del programa introduce en otra. Secuencias conversacionales - Para cargas transaccionales o conversacionales se utilizan ordenadores que simulan las peticiones. - Se suele utilizar el propio sistema a medir para simular esa carga. - En una carga conversacional se suele hacer un guión que representa el comportamiento de un usuario. Ej. de guión: 1- Conexión al sistema 2- Editar un fichero y añadir líneas 3- Compilar 4- Editar 5- Compilar 6- Ejecutar

Tendríamos dos sistemas conectados. Uno generaría las peticiones como si fuesen los usuarios. El otro sería el sistema bajo estudio y que se estaría monitorizando para tomar las medidas. Benchmarks - Son programas construidos con alguna de las técnicas anteriores que producen una carga genérica. - Se utilizan para la comparación entre ordenadores. - No representan una carga específica. La ventaja de estas cargas de prueba es que se suele tomar como una carga de prueba estandar. Los fabricantes y vendedores suelen apoyar su producto con resultados al aplicar alguno de estos benchmarks. El gran inconveniente es que estas cargas de prueba pueden ser muy poco representativas de nuestra carga. Cargas artificiales no ejecutables - Suelen basarse en medidas o procedimientos estadísticos que se utilizan en modelos basados en redes de colas. - Se resuelven mediante simulaciones y mediante modelos analíticos. 15

Por ejemplo en un modelo de redes de colas, la carga se caracterizará con datos como las tasas de llegadas, tiempos de utilización de cada recurso, qué recursos necesita cada cliente y cuántas veces lo visita, .... Implementación - Especificación: viene marcada por los objetivos del estudio de prestaciones. La especificación dará el nivel de detalle de los componentes de la carga de test. - Construcción: tendrá una parte de extracción de datos de la carga a representar y otra parte de diseño en la que realmente se construye la carga de prueba. - Validación: debe comprobar la representatividad de la carga de prueba y su validez para los objetivos iniciales. Al realizar la carga de prueba debemos pensar de qué forma podemos comprobar su es útil para nuestro estudio o no. Fase de especificaciones - Previsión del uso del modelo. - Sesión de medida. - Nivel de modelización. - Componente básico de carga. La unidad de trabajo más pequeña que es considerada. - Parámetros a utilizar. (Según el nivel de detalle y según su disponibilidad). - Criterio para evaluar su representatividad. Construcción - Análisis de los parámetros. (Medidas sobre el sistema). - Extracción de los valores representativos. De la cantidad de valores extraídos en el punto anterior, hacer una selección. Mediante técnicas estadísticas Algoritmos de agrupamiento Modelos markovianos

- Asignación de valores a los componentes del modelo. De valores representativos a componentes ejecutables. El número de componentes aumenta la representatividad y disminuye la compacidad. - Reconstrucción de mezclas de componentes significativos. Reproducir situaciones que se producen en la carga real. Muestreo de distribuciones de cada parámetro - Se calcula la función de distribución de cada parámetro que se haya medido. - Se generan los componentes de la carga de test, generando una variable aleatoria que sigue cada una de las distribuciones. Este método de extracción de valores representativos es sencillo, en cambio presenta el inconveniente de perder la relación que hay entre los parámetros. Los diferentes parámetros los trata como distribuciones independientes pero esto es falso y se pueden generar modelos de carga poco representativos. Muestreo de los componentes de la carga real - Se muestrea la carga real y los parámetros de los componentes muestreados se incluyen en 16

el modelo de carga. - Un inconveniente es que la probabilidad de ser muestreado es proporcional al tiempo de ejecución. - Se puede corregir tomando una muestra cada n componentes ejecutados. Esta es una forma sencilla de decidir los componentes que estarán en el modelo de carga de prueba. Para que sea representativo debe haber bastantes muestras. Los componentes del modelo se pueden construir con métodos artificiales. Métodos de agrupamiento - Agrupar las muestras según criterios de similitud para formar los componentes básicos de la carga. - Se basan en las distancias entre los elementos. - Una nube de puntos la convertimos en un número de puntos donde cada uno de ellos representa un grupo de muestras. - Un paso previo a estos algoritmos consiste en normalizar los parámetros que caracterizan cada punto de la nube: • A partir de la media y la desviación típica: p’ik = (pik - mk)/σk i = 1...m (número de valores), k = 1...n (número de parámetros). Media del parámetro

∑x

Desviación típica m

n

ik

∑x

2 ik

m

∑x

2 ik

σ k = im= − 1 − mi(=m − 1) n • Normalización entre 0 y 1, se realiza para que con la misma escala se vean las distancias en cada uno de los parámetros. p’ik = (pik - min(pk)) / (max(pk) - min(pk)) • A partir de una ponderación: p’ik = pik * wk - Permite destacar un parámetro. Se puede combinar con las anteriores. m

k

=

i =1

1

1

Algoritmos de agrupamiento jerárquicos - En cada paso agrupan los dos componentes que están más cerca entre sí. - Se calcula la distancia de cada punto a todos los demás. - Un problema es que al fundir dos puntos, uno de ellos puede representar un gran número de ellos y debería tener más peso en la fusión. Fusión de puntos 2 - Encadenamiento simple dc,(a,b) = min (dc,a, dc,b) - Encadenamiento completo dc,(a,b) = max (dc,a, dc,b) Algoritmo del árbol de expansión mínimo (algoritmo jerárquico): 17

1- Obtener la matriz de distancias. 2- Determinar la distancia mínima. 3- Fundir los elementos de distancia mínima, calcular la nueva distancia al resto de puntos. 4- Generar la nueva matriz de distancias. 5- Volver hasta 2 hasta que: - Sólo haya un grupo. - Haya un número de grupos determinado. - La distancia de agrupamientos sea superior a un valor. Métodos de agrupamiento no jerárquicos - El espacio inicial se divide en k clases. - Iterativamente se va mejorando la asignación a esas clases. - Termina cuando no hay componentes que cambian de grupo. - Mejorar el índice: k

m

n

∑ ∑ ∑ (a ik − y ck ) x X c =1 i =1 k =1

2

ic

yck es el centro de masas de un grupo:

yck =

1

m

∑a

c i ∈c

ik

xic variable booleana. 1 si ai pertenece a C, 0 si no. Los métodos no jerárquicos buscan minimizar la suma de distancias al centro de masas: SUMc SUMm SUMn (pik-yck)2*xic c clusters, m muestras, n parámetros. yck es el centro de masas y x es cierto o false según el elemento pertenezca a la clase o no. Algoritmo de las nubes dinámicas Algoritmo de agrupamiento no jerárquico. 1- Se fijan k puntos de forma aleatoria, que representan los centros iniciales. 2- Cada punto se asigna al centro que esté más próximo. 3- Se recalculan los centros de masas de los nuevos grupos. 4- Ir a 2 hasta obtener una clasificación estable. 5- Se repite todo el procedimiento con nuevos centros al azar. 6- Se usa la intersección de las clasificaciones obtenidas. Esquema global Fases en la construcción de un modelo de carga Fase de especificación

Fase de construcción

Fase de validación

18

Fase de especificación - Uso previsto del modelo - Sesión de medida - Nivel de modelización - Componente básico de la carga - Parámetros a utilizar - Criterio para evaluar la representatividad Fase de construcción - Análisis de los parámetros - Extracción de valores representativos - Asignación de valores a los componentes del modelo - Reconstrucción de mezclas de componentes significativos Fase de validación - Ejecución del modelo - Aplicación del criterio de representatividad { Modelo listo para el uso - Es representativo { { Modificación de parámetros o mezclas en el modelo

TEMA 5 TECNICAS ANALITICAS Introducción - Mediante la teoría de colas se intenta determinar el tiempo que los trabajos pasan en las colas de los recursos. - Red de colas: servidores y clientes: Los servidores son los recursos Los clientes son los usuarios o los trabajos

- El análisis operacional intenta deducir los índices de prestaciones a partir de parámetros cuantificables en el sistema y de relaciones entres esos parámetros. - Las relaciones entre ellos son las leyes operacionales (verificables mediante mediciones). Estación de servicio

Llegadas (A)

Terminaciones (C)

Cola

Servidor

Una red de colas de espera será un conjunto de estaciones como ésta donde las salidas de unas estaciones están conectadas a las entradas de otras. 19

Cuando llega un cliente, pasará a servirse en la estación si está desocupada o se añadirá a la cola en caso contrario. En el caso más simple esta estación la podríamos caracterizar con dos parámetros: la tasa de llegadas de clientes y el tiempo que cada cliente necesita para servirse. Definiciones - Intensidad de carga, tasa de llegada de los clientes. - Demanda de servicio, promedio del tiempo de recurso que necesita cada petición. - Utilización, proporción de tiempo que el servidor está ocupado. - Tiempo de residencia, tiempo que un cliente pasa en el servidor: cola + servicio. - Longitud de la cola, número medio de clientes en la estación. - Productividad, tasa de salidad de clientes. Supongamos el ejemplo anterior con una tasa de llegadas S=0’5 clientes/sg y una demanda de servicio D=1’25. La utilización sería U=B/T = (C*S)/T, como A=C por la ley del equilibrio de flujo y 0’5 = A/T, U = (0’5*T*1’25)/T = 0’625 Variables operacionales básicas Son las que se pueden medir directamente sobre el sistema durante un tiempo de observación finito. - T (time), intervalo de observación. - A (arrivals), peticiones durante T. - C (completions), peticiones servidas durante T. - B (busy), tiempo en el que el servidor está ocupado durante T. Variables operacionales deducidas - λ, tasa de llegada. λ = A/T - X, productividad. X = C/T - U, utilización. U= B/T - S, tiempo medio de servicio. S= B/C U = X * S (ley operacional de la utilización) Por el equilibrio de flujo, A=C, λ=X, U=λ*S. Esto se debe cumplir para periodos de T muy grandes. Redes de colas - Con algunos parámetros como llegada de demandas y demanda de servicio de cada cliente a cada estación podremos deducir el funcionamiento (tiempo de respuesta, utilizaciones, ...). - Las redes de colas pueden ser abiertas o cerradas, pero como las tasas de llegada y de salida son iguales, se pueden tratar de la misma forma. Supuestos - Todos los índices de los que se parte son valores medios. - Una petición está únicamente en un servidor. 20

- El tiempo que una petición está en una estación no depende del tamaño de las colas en otras estaciones. (Supuesto del tiempo de servicio homogéneo). - El número de peticiones que llegan a una estación es independiente del tamaño de las colas en otras estaciones. (Supuesto de llegadas homogéneo). - Las redes que cumplen estos supuestos se llaman redes de colas separadas u homogéneas. Variables operacionales básicas en redes Durante un periodo de medida T se han obtenido las siguientes medidas para cada estación i: - Ai - Bi - Cik trabajos que piden servicio en la estación k inmediatamente después de servirse en i. - A0k trabajos cuya primera petición es a estación i. - Ci0 trabajos cuya última petición es a estación i. - Ci suma de todos los Cik 0 significará el exterior del modelo, es decir, en los sistemas abiertos será la fuente de clientes y donde van a parar los clientes que han terminado trabajos. Variables operacionales deducidas - Ui = Bi / T - Si = Bi / Ci - Xi = Ci / T - qik = Cik / Ci representa los trabajos que después de servirse en el recurso i piden el servidor j (representa una probabilidad o una frecuencia de encaminamiento). Leyes operacionales a) Ley de la utilización: Bi / T = (Ci / T)*(Bi / Ci) ⇒ Ui = Xi * Si La utilización es igual al flujo de clientes por el servicio medio que pide cada uno. b) Ley de Little: W, tiempo acumulado en el sistema. Peticiones * unidad de tiempo. N = W / T, número medio de peticiones en el sistema. R = W / C, tiempo medio de residencia en el sistema por petición. W / T = (C / T)*(W / C) ⇒ N = X * R, el número medio de peticiones en el sistema es la productividad por el tiempo medio de residencia de cada petición en ese sistema. - La ley de Little se aplica a diferentes niveles. Cada nivel tendrá sus parámetros. Ejemplo - 10 terminales. - 7.5 terminales trabajando por término medio. - Productividad del sistema 0.5 interacciones/sg. - Disco del nivel 1: Sirve 40 peticiones/Sg. Tiempo de servicio por petición 0.0225Sg. Número medio de peticiones presentes 4.

a) Número medio de peticiones recibiendo servicio en el disco 1: U = S * X ⇒ 40 * 0.025 = 0.9, que también será el número medio de peticiones sirviéndose. 21

b) Tiempo medio de residencia de una petición en el disco 1: R = N / X ⇒ 4 / 40 = 0.1 Sg.

c) Tiempo medio de espera en cola de una petición en el disco 1: 0.1 = t. cola + 0.0225 ⇒ t. cola = 0.1 - 0.0225 = 0.0775 Sg.

d) Número medio de peticiones en cola de espera del disco 1: Peticiones en cola + peticiones en servicio = 4 Hay una media de 0.9 peticiones en servicio Numero medio de peticiones en cola = 4 - 0.9 = 3.1

e) Tiempo medio de respuesta percibido por el usuario: R = N / X = 7.5 / 0.5 = 15 Sg.

En este caso N = 7.5 representa la media de usuarios trabajando.

f) Tiempo de reflexión de los usuarios (Z): Aplicamos Little a todo el sistema. La población será el número total de usuarios (10 terminales). R = (N / X)-Z ⇒ Z = (N / X)-R = (10 / 0.5) - 15 = 5 Sg.

Leyes operacionales c) Ley del flujo forzado: - Relaciona la productividad del sistema con las productividades de los recursos individuales. - Todas las productividades deben ser proporcionales en todas las partes del sistema. - Razón de visita de un recurso: relación entre el número de terminaciones en un recurso y las terminaciones en el sistema. - Se puede ver como el número de peticiones de un recurso que hace una interacción del sistema. Vk = Ck / C, recurso k. C son las interacciones a nivel de sistema. ⇒ Xk = Vk * X Demanda de servicio a un recurso: Dk = Vk * Sk

La ley del flujo forzado relaciona los parámetros de todas las partes del sistema. - Xk = Ck / T = (Ck / C)*(C / T) = X * Vk - Xk = X * Vk, es una relación entre la productividad total y la de un recurso. Ejemplo: - En un sistema batch cada trabajo requiere una media de 6 accesos a un disco específico. - Ese disco atiende 12 peticiones/sg. - ¿La productividad del sistema? X = Xk / Vk = 12 / 6 = 2 trabajo / sg.

- Si otro disco sirve 18 peticiones/Sg. ¿Cuántos accesos requiere un trabajo a ese disco? Vk = Xk / X = 18 / 2 = 9 accesos

Supuesto del equilibrio de flujo - Para que un sistema funcione las llegadas deben ser igual a las salidas: A = C - Por tanto podemos decir que las tasas de llegada y salida también son iguales: λ = X

TEMA 6 CUELLOS DE BOTELLA Introducción - Las prestaciones no son las esperadas. - Uno o varios servidores no son capaces de abastecer las peticiones que les llegan. - Su utilización es del 100%. - Las peticiones que les llegan pierden tiempo esperando. 22

- Mejoras en el sistema que no afectan al recurso responsable del cuello de botella no mejorarán las prestaciones. Cuellos de botella - Al tratar un CB pueden aparecer otros. Habrá que ir tratándolos hasta que el sistema quede equilibrado. - Los CB no dependen únicamente de la configuración. Son función también de la carga. - Hay CB temporales que aparecen un corto periodo de tiempo respecto a la sesión de medida. - Los CB temporales es difícil eliminarlos analizando, en diferido, los datos registrados anteriormente. - Para los CB temporales se recomiendan métodos de monitorización y toma de decisiones en tiempo real (on-line). Terapias - Al detectar un CB hay que evaluar las consecuencias y coste de las posibles terapias. - Modificaciones HW. Reemplazar o ampliar componentes HW. Terapias de reposición (upgrading). - Modificaciones que tienen efecto en la organización del sistema. Terapias de sintonización (tuning). - Las sintonizaciones suelen ser más baratas. - En las reposiciones deberíamos tener alguna garantía sobre el resultado ⇒ utilización de modelos simulados o analíticos. Los modelos analíticos permiten por un lado detectar los Cbs y por otro predecir las mejoras que se obtendrían con diferentes soluciones. Límites asintóticos - Método analítico que permite ver los límites de productividad y tiempo de respuesta del sistema en función de la intensidad de la carga. - Recomendable para evaluar diferentes configuraciones o posibles reposiciones. - Se basan en la teoría de redes de colas. - Nos limitaremos a una sola clase de clientes. - Suponemos que la demanda de servicio de un cliente a una estación no depende de las demandas a esa estación ni a otras. Se busca un límite superior e inferior de las prestaciones que obtendrá el sistema. Al aplicar una terapia veremos como se modifican estos límites y por tanto qué impacto pueden tener las mejoras que vamos a aplicar. Parámetros - K, número de estaciones de servicio. - Dmax, la mayor de las demandas de servicio de entre las diferentes estaciones. - D, la suma de las demandas de servicio en las estaciones. (suma de las demandas de un cliente a todas las estaciones). - Z, tiempo medio de pensar (sistemas interactivos). El dispositivo que tenga la máxima demanda será el candidato a ser el CB. Será el que antes llegará a una utilización del 100% (saturación). 23

Límites asintóticos en cargas transaccionales a) Productividad: - El límite de la productividad indica la tasa máxima de llegada de clientes que el sistema puede procesar satisfactoriamente. A partir de ese punto el sistema está saturado. - Para la estación k, Uk = XkSk (Ley de la utilización). - Xk = λDk - Si una Uk = 1 ⇒ no podremos procesar una carga mayor. - La estación k, con Uk = 1 será el CB. - X se limita a la λ que satura alguna estación. - Umax(λ) = λDmax ≤ 1, si Umax(λ) = 1 ⇒ λsat = 1 / Dmax Los parámetros que utilizaremos para evaluar las prestaciones serán la productividad y el tiempo de respuesta. La tasa de llegadas que satura el sistema es 1 / Dmax Esta tasa de llegadas dará la productividad máxima alcanzable con una determinada carga, recursos y configuración. b) Tiempo de respuesta: - El caso más favorable, sólo hay un trabajo en el sistema. El tiempo de respuesta es la suma de las demandas de servicio D. - Pero caso (cuando se sobrepasa la saturación), a partir de este momento no hay límite en el tiempo de respuesta. Límites asintóticos en cargas interactivas a) Productividad: - Uk(N) = X(N) Dk ≤ 1, los recursos dan una utilización para un número de clientes. - X(N) ≤ 1 / Dmax, (límite para carga pesada). - Si sólo hay un cliente. La productividad será 1 /(D+Z) donde D es la suma de las demandas de servicio en las diferentes estaciones. Con N clientes, N / (D+Z). - Los siguientes clientes que van llegando esperan (N-1) D unidades en las colas. - La productividad será N / (ND+Z), se procesan N clientes con tiempo (ND+Z). - (N / (ND+Z)) ≤ X(N) ≤ min(1/Dmax, N / (D+Z)). - N * /(D+Z) = 1 / Dmax ⇒ N* = (D+Z) / Dmax, N* punto de saturación. (N/(ND+Z) ≤ X(N) ⇒ Caso en el que todos los clientes piden el mismo recurso a la vez. X(N) ≤ N/(D+Z) ⇒ Es el caso más óptimo en el que todas las peticiones a los recursos se solapan completamente. No se hace ninguna cola. X(N) ≤ 1/Dmax ⇒ Un recurso se ha saturado. La productividad no podrá crecer más. A partir de esta carga empiezan a producirse colas (al menos en el recurso saturado). b) Tiempo de respuesta: - Ley de Little N = XR: (N/(ND+Z) ≤ (N/(R(N)+Z)) ≤ min(1/Dmax, N/(D+Z))

- max (Dmax, (D+Z)/N) ≤ ((R(N)+Z)/N) ≤ ((ND+Z)/N) - max (D, NDmax-Z) ≤ R(N) ≤ ND - Con Z=0 tenemos los límites para cargas Batch. - D ≤ R(N) ⇒ Si no hubiese colas. - (NDmax-Z) ≤ R(N) ⇒ Si solamente limitase la velocidad el recurso cuello de botella - R(N) ≤ ND ⇒ Se sirven con anterioridad todos los demás clientes. 24

TEMA 7 SELECCION Y CONFIGURACION DE COMPUTADORES. BENCHMARKING Benchmark - Se utiliza como sinónimo de carga de test (kernels, carga sintética, carga sintética natural...) - Programas utilizados para cargar el sistema y medir el rendimiento del sistema o de partes de éste. - Benchmarking: comparar sistemas mediante la obtención de medidas. - Aplicaciones muy variadas: - Comparar sistemas. - Problemas de sintonización. - Planificación de capacidad. - Comparación de compiladores.

Pasos en el benchmarking - Objetivos de las mediciones. - Selección de los componentes apropiados para cubrir la finalidad. - Comprobar los aspectos del sistema que se va a estudiar y que pueden influir en las prestaciones. - Toda la información anterior, así como la fecha de aplicación debe presentarse en los resultados. - Análisis de los resultados llegando a comprender las razones de los índices obtenidos. Aspectos que pueden influir de forma no intencionada en los resultados: versiones de las librerías, opciones de los compiladores, hardware específico, ... Utilización de los benchmarks - Para la adquisición de equipos. El benchmark deberá reflejar las necesidades del comprador. - Sintonización. Se deben conocer muy bien los bench. para conocer las causas de los diferentes resultados. - Planificación de la capacidad. Se va aumentado la carga para conocer la capacidad que queda disponible. - Comparación de compiladores. - Diseño de sistemas informáticos o procesadores. Los bench. se suelen tomar como entrada para simuladores. Factores que influyen en el benchmarking - Tipo y versión del sistema operativo. - Compilador. Versión y directivas de compilación. - Lenguajes de programación. - Librerías. Pueden ir más rápido con menos precisión. IEEE dicta un estándar para las librerías. - Antememoria (memoria caché). - Verificación de ejecución correcta del bench. (los resultados son los apropiados). Es importante comprobar que el benchmark realiza alguna tarea y que se ha resulto bien.

25

Errores comunes - Representar en la carga de test sólo comportamientos medios. Si se representan valores medios se pueden dar sincronizaciones en los consumos que no son reales. - Controlar de manera inadecuada el nivel de carga. Modificamos ciertos parámetros esperando que los resultados no cambien. - Ignorar los efectos de la caché. Las prestaciones de las cachés son muy sensibles al orden en el que se hace las peticiones. En los estudios de caracterización de la carga se suele perder información relativa al orden en que se producen los consumos. - Ignorar la sobrecarga introducida en la monitorización. - No validar las medidas. Errores en la medida suelen pasar inadvertidos. - No asegurar las mismas condiciones iniciales. Por ejemplo, ejecutar dos veces el benchmark. - No medir las prestaciones del transitorio. Se suelen tomar las medidas una vez el sistema funciona de forma estable. A veces interesa medir el coste de las operaciones de inicio. - Almacenar muchos datos pero realizar poco análisis. Normalmente la toma de datos y la experimentación ocupan la mayor parte del tiempo del proyecto. Se debe planificar para que el análisis sea el adecuado. Benchmarking games - Falsear intencionadamente los resultados: - Utilizar configuraciones diferentes para ejecutar la misma carga en dos sistemas. - Compiladores diseñados para optimizar la carga. - Utilizar una secuencia de trabajos sincronizada. - Selección de la carga de forma parcial (sin verificar su representatividad de la carga real). - Utilizar benchmarks muy pequeños. Caben en la caché y no enseñan problemas con la memoria. - Traducciones manuales de los benchmarks para mejorar las prestaciones.

Descripción de algunos benchmarks - Linpack. Argone National Laboratory. Jack Dongarra 1976. Usados para sistemas científicos y de ingeniería. Resuelven sistemas densos de ecuaciones lineales. Muy vectorizable y dependiente de las operaciones en coma flotante y de las librerías de álgebra. - BYTE, PCW, EDN. Propuestos por estas publicaciones. Suelen ser pequeños. Las operaciones que realizan suelen ser variadas: - Función de Ackermann: programa recursivo. Sirve para evaluar la facilidad de los lenguajes en las llamadas a subprogramas. - Sieve: calcula números primos. Se usa para comparar procesadores, pc y lenguajes de alto nivel.

- Dhrystone: R.P. Weicker Siemens-Nixdorf Information System. No tiene instrucciones en coma flotante ni llamadas al sistema, gran cantidad de instrucciones de manejo de tiras, pocos bucles (tamaño de caché muy importante). Unidades en Dhrystone/Sg. - Whetstone: H.J. Curnow, B.A. Wichmann National Physical Laboratory (G.B.) 1979. Actualmente en Fortran. Compuesto por módulos con diferentes tipos de consumos. El peso de los módulos se puede ajustar fijando los límites de los bucles. Resultados en MegaWhetstones/Sg. Usa muchas operaciones en coma flotante, muy dependiente de librerías matemáticas, pequeño tamaño, pocas variables locales. - SSBA1.21E: paquete para la evaluación de sistemas UNIX. Diseñado por la asociación francesa de usuarios de UNIX. Compuesto por 12 programas. Testean los siguientes aspectos: 26

- Potencia CPU. - Implementación del sistema en general y del sistema de ficheros. - Compiladores de C y Fortran. - Manejo de memoria y rendimiento de las cachés. - E/S de disco y rendimiento del controlador. - Rendimiento multiusuario frente a tareas significativas.

- SPEC (Systems Performance Evaluation Cooperative). Hecho por un grupo de marcas comerciales, intenta ser representativo de la carga actual. Compuesto por 10 programas: - gcc (compilador). - Espresso (herramienta de automatización de diseño electrónico). - Spice 2g6 (herramienta EDA). - Docuc (programa extraído de un simulador Monte Carlo de reactores nucleares). - NASA7 (operaciones matriciales en coma flotante). - LI (programa de las “ocho reinas” usando LISP). - Eqntott (representar ecuaciones lógicas en tablas de verdad). - Matrix300 (operaciones con matrices usando rutinas de Linpack en coma flotante) muy vectorizable. - Fpppp (benchmark de química) poco vectorizable. - Tomcatv (programa de generación de red vectorizada) muy vectorizable.

Formas de aplicar los benchmarks - Uno detrás de otro. Para ver cuanto tarda un ordenador en ejecutar una colección de programas. - Como los ladrillo en un muro. Para comprobar el comportamiento en multitarea. - Lanzando peticiones desde otro equipo. Comprobar el funcionamiento en carga interactiva. Resumen de cosas a comprobar - Optimizaciones del compilador. - Comprobar la talla de memoria para estar seguros de lo que se mide. - Vigilar otros procesos que se están ejecutando. - Comprobar el tiempo que tarda en ejecutarse y el tiempo que realmente está consumiendo recursos. - Asegurarse que los resultados son los esperados y con la misma precisión. - Analizar los resultados en el ordenador actual. Se pueden descubrir mejoras en el propio ordenador y dará una idea de las mejoras que se pueden obtener. MIPS - Millones de instrucciones por segundo. - El ordenador que se toma como referencia es el DEC VAX 11/780 (1978). A veces se le llama VAX MIPS. - VAX sacaba 470000 instrucciones /sg y apuradito. Por convenio 1657 dhrystones/sg = 1 MIPS. MFLOPS - Millón de operaciones coma flotante /sg. - Son operaciones realizables por hardware. - Suelen medirse con programas que son mezclas de sumas y multiplicaciones.

27

En algunas ocasiones se habla de picos de megaflops mayores que la frecuencia del procesador. En cambio ojo con estos valores pico ya que se obtienen bajo cargas muy apropiadas a las características. Creando benchmarks - Tiempo de ejecución. - Memoria. - Utilización de kernels. - Forma de aplicar los benchmarks. - Portabilidad.

TEMA 8 COMPILADORES Qué hace un compilador - Traduce de un lenguaje de alto nivel a lenguaje máquina. - Esta traducción debe ser lo más eficiente posible. - En algunas partes críticas la traducción se optimiza a mano y no se utilizan compiladores. - El resultado del compilador está encaminado a una arquitectura específica. - El compilador intentará reorganizar el código para que sea más eficiente. - En RISC, intentar que varios encaminamientos trabajen a partir de una mezcla de instrucciones diferentes. En las mejoras que introduce el compilador suele ocurrir que el tamaño del fichero aumenta aunque la ejecución es más rápida. Lenguaje intermedio - El compilador traduce el fuente a un lenguaje parecido a ensamblador, permite manejar variables. Tras el análisis sintáctico se traduce el programa a éste lenguaje. - Hay instrucciones que en el fuente no aparecen y deben aparecer en este lenguaje. - Ejemplo: - Todas las instrucciones tienen un código de operación y 2 operandos. - Las instrucciones tienen la forma X:=Y op Z. - Todas las referencias a memoria son lecturas o escrituras explícitas. - Los valores lógicos utilizados para saltos se calculan aparte. - Los saltos son a direcciones absolutas.

Bloques básicos - Esto facilita el análisis del código. Sabemos que todas las instrucciones en un bloque se ejecutan una detrás de otra. - Las flechas entre bloques forman un diagrama de flujo. - Podemos saber las variables que se usan en cada bloque y las que se modifican. - Nos permite concentrarnos en las interacciones entre bloques.

28

Identificar bloques básicos

Sabemos que cuando se entra en un bloque se ejecutan todas sus instrucciones.

A:: t1 := j t2 :=n t3 :=t10 será cierto en todas las líneas donde el tercer campo (secuencia de caracteres separadas por blancos) sea mayor que 0. - La acción: {printf $1,$2*$3} sacará por la salida estándar el primer campo de la línea y la multiplicación de los campos 2 y 3. - $0 indica toda la línea que está procesando. -Al procesar una línea $n indica el campo n. - La variable predefinida NF indica el número de campos que tiene la línea que se está tratando. - La variable pedefinida NR indica el número de líneas que ya han sido procesadas. Patrones y acciones - En los patrones no es necesario escribir if (patron). - Los patrones son opcionales: si una parte del programa no tiene patrón, se supone cierto. - Las acciones son opcionales: la acción por defecto es imprimir la línea entera. - El programa se puede escribir en un fichero: awk -f programa.awk fichero.datos

Programa.awk Todas las partes son opcionales. Las acciones pueden ser conjuntos de instrucciones, secuencias de control, etc.

41

- Tiene la forma siguiente: BEGIN {acción 1 acción 2 acción n} patrón 1 {acción 1 acción n} patrón n {acción 1; acción n} END {acción1; acción n} Patrones predefinidos - Hay dos patrones predefinidos: BEGIN Es cierto antes de procesar ninguna línea. Sirve para hacer inicializaciones. END Es cierto después de haber procesado la última línea. Sirve para tratar datos que se han ido almacenando al recorrer el fichero. Formato de salida - La forma más simple es print. - Se puede utilizar printf como en C: {printf(”paga total de %s es %.2f\n”,$1,$2*$3)} {printf(“%-8s pesetas %6.2f\n”,$1,$2*$3)}

Patrones - $2 >= 5 - $2*$3 > 5 - $1 == “Pepe” - Expresiones regulares. - Combinación lógica de los anteriores (&&,||, !). - (($2 >= 5) && ($2*$3 > 5)) || !($1==“Pepe”) Variables - No hay que definirlas. - Se ponen “a pelo” donde se van a utilizar. - Se inicializan automáticamente a 0. - El contexto da el tipo. - frase = $0 #La variable frase será una cadena de caracteres que contiene toda una línea del fichero de datos. - vector[20]=1 #Creará un vector de 21 componentes. Todas las componentes a 0 menos la 20 que valdrá 1. - tabla[10,20] = 1 Los comentarios se preceden de #. Funciones pedefinidas - Aritméticas: - Raíces, potencias, logaritmos, números aleatorios, ...

- Funciones sobre tiras de caracteres: - Longitud, concatenar, sustituir, ... 42

- Funciones definidas por el usuario: function max(m,n) { return m > n ? m : n }

Instrucciones de control - Igual que en C. - if - else - while - for - Admite argumentos (argc y argv). - Se pueden ejecutar comandos de UNIX a través de la función syntax. Parámetros de entrada - awk -f prog.awk a v=1 b ficherodatos - ARGC = 4 - ARGV[0] = awk - ARGV[1] = a - ARGV[2] = v=1 - ARGV[3] = b - ARGV[4] = ficherodatos La variable v ya se puede utilizar en el programa.

43

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.