Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TEMA 1 INTRODUCCIÓN
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.
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.
- 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...
2
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.
Proposición de soluciones
3
- 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.
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
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:
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.
- Monitores híbridos, que son una combinación de las dos técnicas anteriores.
5
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.
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.
Son programas que se ejecutan junto con los programas y en el sistema que miden.
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.
Monitores hardware
reloj
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
7
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
Introducción
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).
Diagramas de Gantt
CPU 60
E/S 20 20
Red 30 10 5 15
Gráficos de Kiviat
9
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.
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 ocupada
CPU supervisor Solo CPU
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.
Introducción
Caracterización de 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
- 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.
- 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.
11
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.
- 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
- 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
- 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.
12
- 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.
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
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.
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
13
- 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
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)
Programas sintéticos
Secuencias conversacionales
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.
Implementación
Fase de especificaciones
15
- 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
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:
16
p’ik = (pik - mk)/k i = 1...m (número de valores), k = 1...n (número de parámetros).
x x
n
x
2 2
ik ik
ik i 1 i 1
m
i 1
k
n m 1 m(m 1)
k
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.
- 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 jerárquico):
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.
ic
c 1 i 1 k 1
1
a
yck = mc ic
ik
yck es el centro de masas de un grupo:
xic variable booleana. 1 si ai pertenece a C, 0 si no.
17
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.
Esquema global
Fase de especificación
Fase de construcción
Fase de validación
Fase de especificación
Fase de construcción
Fase de validación
18
- Es representativo {
{ Modificación de parámetros o mezclas en el modelo
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
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.
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
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
19
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.
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
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.
- Ui = Bi / T
- Si = Bi / Ci
20
- 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.
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
21
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
- 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
Introducción
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.
22
- 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
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.
23
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.
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
- 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.
Errores comunes
Benchmarking games
- 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:
- 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.
- 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.
26
- 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
MFLOPS
Creando benchmarks
- Tiempo de ejecución.
- Memoria.
- Utilización de kernels.
- Forma de aplicar los benchmarks.
- Portabilidad.
TEMA 8 COMPILADORES
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
que otra.
B: t4 :=k
t5 :=j “2” j,t5,t8,t10 k,t4 “1”
t6 :=t5*2
t7 :=t4+t6
k :=t7
t8 :=j
t9 :=t8*2 t6,t9,m *
m :=t9
t10 :=j
t11 :=t10+1
j :=t11
jmp (A) TRUE t7,k t11,j
- Si ahora queremos optimizar el funcionamiento entre bloques, hay que mirar las variables
que cada bloque utiliza y/o modifica.
- En el bloque anterior las variables que se modifican son k,j y m. Las que toma como entrada
son k y j.
- Con esto el compilador detectará las variables que se usan con fines diferentes, las que no se
utilizan en otros bloques, y se podrá asignar de forma más eficiente los registros a las
variables.
- Otras cosas que se pueden detectar es la repetición de cálculos en diferentes bloques o
asignar cálculos a bloques más apropiados.
Bucles
- En el diagrama de flujo de datos se puede identificar bucles (incluso si en el fuente que las
genera no aparece).
- Si llegamos a identificarlos podemos encontrar expresiones que no se modifican con las
iteraciones del bucle o expresiones que evolucionan de manera previsible con las
iteraciones.
- Cómo se detecta un bucle:
- Encontrar un nodo por el que es imprescindible pasar para llegar a los otros nodos en el bucle.
(Nodo
dominante).
- Debe haber un camino de vuelta desde los nodos del bucle al nodo dominante
29
Optimizaciones
30
interesante en el cálculo de direcciones de un vector:
bucle
direccion = direccionbase(A) + (I-1)*tallaelementos(A)
Quedaría:
direccion = direccionbase(A) - (1*tallaelementos(A))
bucle
direccion = direccion + tallaelementos(A)
Con los objetivos se deducen parámetros que interesa medir. Deberemos seleccionar
instrumentación y comprobar que podemos acceder a esas variables.
Mediciones sobre el hardware: interesa conocer su utilización (cuellos de botella, recursos
infrautilizados, capacidad sin utilizar).
Mediciones sobre el hardware.
Mediciones de la carga.
31
- Sistema operativo. Puede influir mucho en las prestaciones. La forma en que tenga
configurada la memoria es importante. Sus parámetros ajustables también son de
importancia.
- Programas de sistema y de usuario. Estos programas se suelen poder modificar si se
detectan
problemas. Interesará la utilización de CPU, E/S, llamadas al sistema. Se puede analizar por
módulos. HW, SW, rutinas de contabilidad.
Introducción
32
Tendencia RISC instrucciones sencillas pero con la esperanza de poderlas manipular
más fácilmente para optimizar la ejecución.
Direccionamiento de memoria
Microcódigo
Pipelines
Saltos retardados
- Si los conductos están siempre ocupados obtendremos una instrucción máquina por ciclo.
- Hay procesadores que pueden terminar más de una instrucción por ciclo.
- Una forma de hacer esto es tener varios conductos y enviar operaciones (que sean
independientes) a través de ellos.
- La posibilidad de explotar estas características dependerá de los programas que se ejecuten.
- Principalmente hay tres tipos de procesadores RISC:
Superescalares.
Superpipelined.
Long Instruction Word.
Sacar una instrucción por ciclo ya es un logro cuando cada instrucción necesita al menos 5
ciclos. Los procesadores que pueden ejecutar más de una instrucción por ciclo deben utilizar
varias tuberías para ello. En cambio deben tener mecanismos que resuelvan posibles
dependencias entre las operaciones que se ejecutan a la vez. Es decir que una instrucción
necesite algo que se deba haber producido en instrucciones anteriores.
Introducción
Técnicas de evaluación:
- Basadas en la monitorización
- Basadas en el modelado:
simular el comportamiento del sistema implementarlo de forma virtual
técnicas analíticas relaciones matemáticas
El sistema se ve como una red de recursos que son visitados por una población de clientes.
Se pueden resolver:
- análisis operacional
- teoría de colas
- markov
Estación de servicio
Proceso de llegada
Distribución de tiempos de servicio
35
Número de servidores
Capacidad del sistema
Tamaño de la población
Políticas de servicio
Notación de Kendall
A/S/m/B/K/DS
- [A distribución del tiempo entre llegadas
- [S distribución del tiempo de servicio
- [m número de servidores
- [B capacidad del sistema (valor por defecto )
- [K tamaño de la población (valor por defecto )
- [DS política de servicio (valor por defecto: FCFS)
Distribución de probabilidad
M exponencial (o markoviana)
Ek erlang con parámetro k
Hk hiperexponencial con parámetro k
D determinista
G general
Se supone:
- que las llegadas se producen individualmente
- que cada servidor atiende un solo cliente en cada instante
36
N = Número de trabajos en la estación de servicio (v.a. discreta).
Nq = Número de trabajos en espera de recibir servicio (v.a. discreta). No incluye a los trabajos
que están recibiendo servicio.
Ns = Número de trabajos recibiendo servicio (v.a. discreta).
R = Tiempo de respuesta del sistema (v.a.). Incluye tanto el tiempo de espera como el de
servicio.
W = Tiempo de espera en cola (v.a.).
Proceso estocástico
El proceso de Poisson
Procesos de Nacimiento-Muerte
38
Practica 1
Time
Saca como resultado el tiempo de ejecución de otro comando. Este tiempo se da en tres
cifras: tiempo total desde que se lanzó la ejecución hasta que la terminó, tiempo de CPU en
estado usuario y tiempo de CPU en estado sistema. Estado usuario es el estado normal de un
programa que ejecutemos. Estado sistema se trata de llamadas que el programa puede hacer al
S.O., rutinas del S.O. para servir fallos de página, excepciones, ...
Lo normal es que el tiempo en estado usuario sea mayor que en sistema. Lo contrario puede
indicar problemas del programa en los accesos a memoria o repetidas condiciones de
excepción.
Times
Se trata de una función que se puede utilizar desde programas en C. Devuelve una estructura
con tiempos sobre la ejecución. #include <sys/times.h>
Prof
Sirve para analizar el tiempo que los programas pasan en sus diferentes subprogramas.
Funciona muestreando periódicamente el contador del programa. Para utilizarlo hay que
compilar el programa con una opción adicional -p. Luego al ejecutarse el programa se va
generando un fichero con datos de la ejecución.
Los datos que se muestran en pantalla son:
- % Time: porcentaje de tiempo de CPU consumido por la rutina.
- Seconds: tiempo de CPU consumido por esta rutina.
- Cumsecs: tiempo de ejecución total consumido por esta y todas las rutinas anteriores.
- Calls: número de veces que la rutina ha sido llamada.
- msec/call: segundos dividido por el número de llamadas. Da la media del tiempo
empleado en cada llamada (en ms.)
- Name: nombre de la rutina.
Gprof
Además de la información que proporciona prof, gprof nos indica como se llaman los
subprogramas entre sí (grafo de llamadas).También aporta las veces que un subprograma
llama a otro y las que lo llaman sus padres.
También necesita un compilado especial, la opción -G.
La salida de gprof está dividida en tres secciones:
- Grafo de llamadas
39
- Tiempos, da una lista de las funciones, porcentaje de tiempo empleado por cada una,
número de llamadas, ... (similar a prof).
- Indice, es una mezcla de referencias para poder localizar funciones por número en
lugar de por nombre.
Practica 3
AWK
- Es un lenguaje interpretado, por lo que no es muy eficiente pero suele ser suficiente para el
tipo de tareas que suele resolver.
- Está orientado al procesamiento de informes con un formato fijo.
- El lenguaje tiene una sinstaxis parecida a C.
- No es necesario la declaración de variables. Reserva espacio y las inicializa en el momento
de utilizarlas.
Ejemplo
Patrones y acciones
40
- 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
Patrones predefinidos
Formato de salida
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
Funciones pedefinidas
- Aritméticas:
- Raíces, potencias, logaritmos, números aleatorios, ...
- Funciones sobre tiras de caracteres:
- Longitud, concatenar, sustituir, ...
- 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
42