Tema 2
La Carga de Trabajo y su Caracterización
Definición de carga de trabajo
El término carga de trabajo se usa para designar todos los requerimientos introducidos al sistema por la comunidad de usuarios durante un período de tiempo.
Aspectos claves de una buena caracterización
Un modelo de la carga de trabajo se construye a partir de un subconjunto representativo de las funciones del sistema real. Según [3], el término modelo se puede aplicar a aquellos conjuntos de programas que se han designado e implantado con el objetivo de cargar el sistema durante experimentos controlados. La elección de este subconjunto de funciones es un aspecto crucial ya que es posible llegar a obtener conclusiones erróneas si la carga de trabajo no se selecciona apropiadamente. Las principales razones que recomiendan el uso de modelos de la carga, en lugar de la carga de trabajo real son:
1. Satisfacer la exigencia de reproductibilidad de los experimentos.
2. Reducir sustancialmente la duración de cada sesión de medición con respecto a la que se requeriría para ejecutar la carga real total.
3. Obtener una representación de la carga que sea consistente con su uso (por ejemplo, la entrada de un simulador o de un modelo analítico).
4. Evitar problemas de privacidad y seguridad, que a veces limitan el uso de programas y datos reales en los estudios de evaluación de comportamiento.
5. Evitar interferir con el funcionamiento del sistema real.
Según Jain[2], algunos factores a tener en cuenta en el momento de seleccionar una carga de trabajo representativa del sistema en estudio son:
Servicios : El sistema a evaluar o sistema en estudio se debe ver como un proveedor de servicios. Por ejemplo, el servicio que provee un procesador o CPU es la ejecución de instrucciones; es por este motivo que los diseñadores de un procesador pueden usar la frecuencia de instrucciones como una posible representación de la carga de trabajo. Sin
embargo, los servicios que ofrece un sistema bancario son generalmente transacciones; de modo que si una persona desea evalu ar este tipo de sistemas deberá usar las transacciones como carga de trabajo. Nótese que en este último caso, un benchmark compuesto sólo por instrucciones no representaría la carga real, ya que el desempeño de un sistema bancario no depende únicamente de la velocidad del procesador sino de otros componentes como por ejemplo los discos.
Otro detalle importante es que el benchmark o modelo de la carga de trabajo debe hacer un uso exhaustivo de todos los servicios que provee el sistema. Por ejemplo, si se trata de un sistema transaccional donde se realizan operaciones de consulta y modificación a la base de datos, no bastará que el benchmark realice sólo operaciones de consulta.
Nivel de detalle: Después de identificar la lista de servicios, el próximo paso en la selección de la carga de trabajo es elegir el nivel de detalle que se desea registrar y de esta forma reproducir en las peticiones a estos servicios. La lista de posibilidades incluye:
- Seleccionar únicamente la petición más frecuente y usarla como carga de trabajo.
- Hacer una lista de varios servicios, sus características y su frecuencia.
- Obtener una traza del sistema real y usar esta traza como carga de trabajo.
- Usar el consumo promedio de los recursos (se puede considerar el consumo de recursos a nivel lógico o físico) en lugar de usar las peticiones.
- Especificar una distribución del consumo de los recursos, cuando el consumo promedio no sea suficiente.
Representatividad: La noción de una carga de trabajo representativa es en sí misma problemática por varias razones: el primer problema es de dónde obtener los datos.
Si existe una versión previa del sistema y se ha realizado algún tipo de contabilidad sobre el mismo, podría existir un perfil operacional. Un perfil operacional es una distribución de probabilidades que describe la frecuencia con la cual se ejecutaron ciertas operaciones de interés. Esto típicamente requiere de un experto que sea capaz de decidir cuales operaciones son las más importantes para una determinada aplicación y sobre qué ventana de observación (en qué momento del día, del mes, etc., dependiendo del tipo de sistema).
Si no existe una versión anterior del sistema, o no existen datos de cómo ha sido utilizado, es muy probable que exista un sistema similar que sirva de guía o pueda quizás aprovecharse parcialmente para el diseño del benchmark. Adicionalmente, si hay un sistema monitorizable cuya salida es la entrada al sistema que se desea modelar, se podrían obtener de este sistema los datos de interés.
Según Jain[2] una definición de representatividad es que el benchmark y la aplicación real coincidan en los siguientes aspectos:
1. Tasa de llegadas: La tasa de llegada de las peticiones debería ser igual o proporcional a la de la aplicación.
2. Consumo de recursos: El consumo total de cada uno de los recursos clave debería ser igual o proporcional al de la aplicación.
3. Perfil del uso de recursos: Se refiere a la secuencia e intensidad en la cual la aplicación usa los diferentes recursos disponibles. Este perfil debería ser similar en el benchmark y en la aplicación.
Nivel de carga: La carga de trabajo sintética podría hacer uso de los recursos del sistema en su capacidad total (mejor caso), más allá de esta capacidad (peor caso) o al nivel de carga observado en el sistema real (caso típico). La elección correcta variará de acuerdo con el caso de estudio.
Existencia de cargas de trabajo externas: Es importante determinar si el sistema bajo estudio se ejecutará en forma aislada en la plataforma de hardware, o bien se ejecutará concurrentemente con otros sistemas no relacionados. Si estamos en el último caso, es necesario desarrollar también un benchmark representativo de la carga de trabajo en background.
Repetibilidad: Una carga de trabajo debe ser tal que los resultados puedan ser reproducidos fácilmente sin demasiada variación. Las cargas de trabajo que consumen muy aleatoriamente los recursos son menos recomendables, ya que se deben realizar una mayor cantidad de medidas para obtener estimaciones significativas del desempeño.
Características de un buen modelo Metas Descripción
Compacto La cantidad de parámetros y datos utilizados en el modelo debe ser menor a aquellos recolectados del sistema real.
Flexible El modelo de la carga de trabajo debe ser capaz de producir cargas de trabajo que sean fáciles de modificar, para propósitos de experimentación.
Completo El modelo debería representar todos los parámetros y datos que se consideran importantes en el estudio de desempeño.
Representativo El comportamiento del sistema bajo el modelo de carga de trabajo debe ser similar a su comportamiento bajo la carga de trabajo real.
Reproducible El modelo debería generar cargas de trabajo que produzcan características similares, bajo los mismos parámetros de entrada.
parámetros de entrada.
Niveles en la Caracterización:
Existen muchas maneras de caracterizar la carga.
El proceso de caracterización de la carga tiene como objetivo producir un modelo que pueda usarse en varias actividades, tales como: selección de computadores, tuning, capacity planning, etc.. Durante el proceso de caracterización se analiza una carga de trabajo y se identifican los componentes básicos y características que afectan el desempeño del sistema. También se obtienen parámetros para los modelos de desempeño.
Existen al menos tres niveles para hacer una caracterización:
1. Caracterización a nivel funcional: en este tipo de caracterización se describen los programas o aplicaciones que componen la carga de trabajo. Esta caracterización es totalmente independiente del sistema. Dado que no se obtiene ningún tipo de información acerca del consumo de recursos, es muy difícil realizar actividades tales como: determinar la capacidad de un sistema o evaluar el desempeño de una nueva máquina.
2. Caracterización a nivel virtual: se toma en cuenta el consumo de recursos pero únicamente a nivel lógico. Los recursos que se deben incluir en el proceso son aquellos cuyo consumo tiene un impacto significativo en el desempeño.
3. Caracterización orientada al consumo de recursos: a este nivel de caracterización, se describe el consumo físico de recursos por parte de la carga de trabajo. Los recursos que se deben incluir en el proceso son aquellos cuyo consumo tiene un impacto significativo en el desempeño. Usualmente, los monitores del sistema operativo registran los recursos consumidos por un proceso durante su ejecución. El tiempo de CPU, el tiempo total (elapsed time), el número total de operaciones de I/0, el uso de la memoria y el número de fallas de página, son algunos ejemplos de la información que ofrece el sistema operativo.
Un modelo construido a este nivel no puede portarse a un sistema con una configuración distinta de hw o de sw.
Tipos de cargas de trabajo
(ojo esto hay que revisarlo)
Los modelos de la carga de trabajo se pueden clasificar en dos categorías dependiendo de la forma en que se construyen:
- Modelos sintéticos o naturales: se construyen o bien a partir de un subconjunto de los componentes básicos de la carga de trabajo real (programas, comandos interactivos, etc), o
bien de una mezcla de componentes de la carga real y de componentes desarrollados especialmente para el estudio (e.g, kernels y programas sintéticos), a esto se le denomina carga sintética híbrida. Cuando se emplea sólo un conjunto de los componentes el modelo se denomina carga sintética natural o benchmark.
- Modelos artificiales: en su construcción no se usa ningún componente de la carga de trabajo real. Estos modelos se construyen a partir de programas de propósito especial y ciertos parámetros descriptivos. Los modelos artificiales se dividen a su vez en ejecutables y no ejecutables. Los modelos ejecutables se componen de un conjunto de programas escritos especialmente para ejercitar varios aspectos del sistema informático. Esta clase de modelos ejecutables incluyen instrucción mixes, kernels, programas sintéticos y trazas. Ins.
mixes: son programas para chequear la rapidez de un computador basados en instrucciones sencillas (Jain). Los kernels son piezas de código extraídas de partes computacionalmente intensivas de un programa real. En general, los kernels se concentran en medir el desempeño de los procesadores sin considerar el sistema de E/S. Los programas sintéticos son piezas de código que colocan demandas en diferentes recursos de un sistema. A diferencia de los benchmarks, los programas sintéticos no resemble la carga de trabajo real.
Los benchmarks, programas sintéticos y alguna otra forma de modelo ejecutable no son entradas adecuadas para un modelo de desempeño.
Cuando se va a utilizar un modelo para el estudio del desempeño se requieren nuevas formas de modelar la carga de trabajo. Los modelos no-ejecutables se describen por un conjunto de parámetros que reproducen el uso de recursos de la carga de trabajo. Cada parámetro describe un aspecto de la ejecución de los componentes básicos del sistema bajo estudio. Los parámetros típicos utilizados para describir las cargas de trabajo son los siguientes:
- Tiempo entre llegadas - Demandas de servicio - Tamaño del programa
- Mezclas (clases de programa y su nivel correspondiente de multiprogramación).
Pueden estos parámetros representarse en un modelo?
Los modelos (analíticos o de simulación), capturan los aspectos claves de un sistema informático y relacionan estos aspectos utilizando fórmulas matemáticas y/o algoritmos. Los modelos de desempeño requieren información tal como la intensidad de la carga (tasa de llegada de requerimientos, número de terminales, tiempo de reflexión, etc.) y la demanda de servicio, de cada componente de la carga, sobre cada uno de los recursos del sistema
Cargas de test Real
Natural Sintética
Híbrida
Artificial Ejecutable Mix
Kernels
Programas sintéticos Trazas
No ejecutable Distribuciones estadísticas
Trazas para la simulación
Tabla 1: Diferentes Modelos de Cargas de Trabajo
Metodología para la caracterización de la carga de trabajo
Fase de Formulación: en esta fase se determina el uso previsto del modelo, los componentes básicos de la carga, los parámetros a utilizar, el nivel de caracterización y el criterio para evaluar la representatividad.
- Identificación de los componentes básicos : en esta etapa se identifica el componente básico que compone la carga de trabajo. Ejemplos: proceso, transacción, comando. La elección del componente depende de la naturaleza del sistema y del propósito de la caracterización. El producto que se espera obtener de esta etapa es una frase como: La carga de trabajo bajo estudio se compone de transacciones y comandos.
- Elección de los parámetros que caracterizan la carga: Los parámetros se pueden dividir en dos grupos: aquellos que describen la intensidad de la carga y los que describen las demandas de servicio en los componentes básicos del sistema. En un modelo se deben representar principalmente los recursos que más afectan el desempeño del sistema cuando se está ejecutando la carga de trabajo en estudio. Los parámetros que describen la intensidad de la carga son:
- Tasa de llegada (cargas de trabajo transaccionales)
- Número de estaciones cliente y tiempos de reflexión (Cargas de trabajo batch y conversacionales)
Las demandas de servicio se describen por una K-tupla (Di1, Di2, ...., Dik), donde K es el número de recursos considerados y Dij es la demanda de servicio del componente de la carga i al recurso j.
Fase de Construcción
Las actividades propias de esta fase son: recolección de datos, división de la carga de trabajo, cálculo de los parámetros por clase y asignación de valores a los parámetros a los componentes del modelo.
- Recolección de datos: en esta etapa se asignan valores a los parámetros de cada componente en el modelo. Se generan tantas tuplas como componentes conformen la carga de trabajo. La recolección de datos involucra las siguientes actividades:
- Identificar las ventanas que definirán las secciones de medidas.
- Monitorear y medir las actividades del sistema durante las sesiones.
- Dividir la carga de trabajo: las cargas de trabajo reales se pueden ver como una colección de componentes heterogéneos. Ejemplo: I/O bound, CPU bound. En estos casos, el representar la carga por un único componente o clase puede ser bastante impreciso. Al dividir la carga de trabajo logramos mejorar la representatividad de la caracterización e incrementar el poder predictivo del modelo. Las técnicas para dividir la carga de trabajo consisten en crear varios conjuntos que agrupen componentes homogéneos. La pregunta es:
basándose en qué atributo uno decide si un componente de la carga debe ir en el mismo grupo que otro. Algunos atributos utilizados en el proceso de dividir la carga de trabajo son:
Uso de recursos: El uso de recursos por componente se puede usar para dividir la carga de trabajo en clases diferentes o clusters. En la Tabla 2 se muestra un ejemplo. En este caso, el uso del procesador y las operaciones de I/O se consideran elementos críticos del sistema. Los atributos que sirven para dividir los componentes de la carga de trabajo son el uso máximo de CPU y el número de operaciones necesarias de I/O. Un comando entrará en el grupo Medio, si su uso de CPU es mayor a 100 msec y menor a 500 msec, y si ejecuta entre 15 y 300 operaciones de I/O-
Tipo de comando
Frecuencia (%)
Tiempo de CPU (msec)
Operaciones de E/S
Liviano 50 100 15
Medio 30 200 100
Pesado 20 500 300
Tabla 2: División por uso de recursos
Aplicaciones: Una carga de trabajo puede tener agrupados sus componentes de acuerdo a la aplicación a la cual pertenecen. Las aplicaciones que no son importantes en términos de consumo de recursos ni son críticas para el negocio se pueden agrupar en una sola clase. El problema con es te tipo de división puede ser la existencia de componentes heterogéneos en un mismo grupo. Ejemplo:
Aplicación Utilización de CPU (%)
Inventario 30%
Ventas 20%
Contabilidad 15%
Otras 10%
CPU ocioso 25%
Tabla 3: División por aplicaciones
Objetos: uno puede dividir una carga de trabajo de acuerdo al tipo de objetos manejados por las aplicaciones. En el mundo WWW, una carga de trabajo se puede dividir de acuerdo al tipo de documentos que se acceden en el servidor. Ejemplo:
Clase de Documento Porcentaje de Acceso (%)
HTMl 30
Imágenes (e.g., gif, jpeg) 40
Sonido (e.g. au, or wav) 4.5
Dinamicos (cgi, perl) 12
Video (e.g., mpeg, avi, mov) 7.3 Formateado (e.g., ps, dvi ,doc) 5.4
Otros 0.8
Tabla 4: División por objetos
Orientación geográfica: Una carga de trabajo se puede dividir dependiendo del lugar en el que sus componentes se introducen al sistema. Por ejemplo, un sistema dedicado al procesamiento en línea de las transacciones generadas en puntos de venta puede dividir su carga de trabajo dependiendo del lugar donde se generan las transacciones.
Ejemplo:
Clase Porcentaje de transacciones
Caracas 40%
Ciudades del Centro: Maracay, Valencia, Los Teques, etc
30%
Maracaibo 20%
Ciudades Andinas 6%
Otras ciudades 4%
Tabla 5: División por orientación geográfica
Clases funcionales: Los componentes de una carga de trabajo pueden también agruparse en clases de acuerdo a sus funciones. Ejemplo:
Clase
Servicios básicos: login, logout, ls, mv, etc Compiladores
Editores Comunicación Cómputo científico
Tabla 6: División por clases funcionales
Unidades organizacionales: la carga de trabajo se puede dividir de acuerdo con las unidades organizacionales de una compañía. Este atributo puede ser útil para compañías que tienen una estrategia de planificación y desean predicciones particulares para cada una de estas unidades.
Clase Estudiantes Profesores Empleados Egresados Otros
Tabla 7: División por unidades organizacionales
Tipo de interacción con el sistema: Los componentes de una carga de trabajo también pueden clasificarse en alguna de estas tres categorías, de acuerdo al modo en el que deben procesarse y los parámetros que se eligen para describirlos:
- Conversacional, interactivo o terminal: son componentes que deben ser procesados on-line. Se generan desde terminales o estaciones de trabajo con ciertos tiempos de reflexión.
- Transaccional: esta clase agrupa aquéllos componentes que llegan al sistema con cierta tasa de llegada.
- Batch: son los componentes ejecutados en modo batch y el parámetro que los describe es el número de trabajos activos en el sistema.
Los modelos analíticos, en particular los modelos de colas, requieren que las clases tengan componentes homogéneos con respecto al uso de recursos, de modo que este tipo de división es casi obligatoria. Se pueden entonces hacer particiones con más de un atributo. Ejemplo:
Número Tipo Uso de recursos
1 Batch CPU Bound
2 Batch I/O Bound
3 Transaccional Liviana
4 Transaccional Media
5 Transaccional Pesada
Tabla 7: División por más de un atributo - Cálculo de los parámetros por clase: se tratará en el próximo tema.
Fase de Validación
En esta fase se aplica el criterio de representatividad, si el modelo es representativo, se considera que el modelo está listo para el uso previsto. Si el modelo no es representativo, se comienza la fase de calibración del modelo.
Bibliografía
?? [1] Daniel Menascé. Virgilio Almeida. Larry W. Dowdy. Capacity Planning and Performance Modeling. Prentice Hall, 1994.
?? [2] Raj Jain. The Art of Computer Systems Performance Analysis. Wiley, 1991.
?? [3] R. Puigjaner, J. J. Serrano, A. Moreno. Evaluación y Explotación de Sistemas Informáticos}". Editorial Síntesis. 1995.