Comenzamos la clase haciendo unos breves comentarios sobre los errores cometidos durante la realización de la práctica 5.
- Hay que plantear objetivos reales, con cargas de trabajo reales. En particular, el tiempo que tarda en arrancar un sistema no es una carga real.
- Los objetivos no pueden ser sobre la tasa de uso de un componente (memoria, CPU)
- Las pruebas se diseñan en función del objetivo, y no al revés. Si se trata de que “este programa vaya más rápido”, el programa debe ser representativo, no hecho ex profeso.
- Hay que mejorar un sistema, no cambiarlo. El sistema, en general, será un ordenador, algún subsistema del mismo, o en general las prestaciones. No se trata de decir “cambio este programa por este otro más rápido, y ahora va más rápido”. O antes tenía esto en memoria, ahora lo quito, y ocupa menos menoria todo (o va más rápido).
- Tampoco se trata de bajarse “PC optimizer 2000″, le doy a siguiente, siguiente siguiente, y luego mira la pantalla que pone “sistema optimizado”.
Unos ejemplos de prácticas bien hechas son las siguentes realizadas por los compañeros:
http://aullidosdigitales.blogspot.com/2008/05/prctica-5-medicin-de-las-prestaciones.html
o
http://mdyec.blogspot.com/2008/05/practica-5.html
Continuamos haciendo un resumen de la clase anterior:
http://saramggh.blogspot.com/2008/05/6-5-2008.html
Y continuamos ya con el temario…
4. Selección y Configuración de Sistemas Informáticos: Benchmarking
4.1 Introducción
Un benchmark es un programa o conjunto de programas que evalúan las prestaciones de un sistema informático reproduciendo una carga de trabajo genérica en dicho sistema informático.
4.2 Utilización de un benchmark
Los benchmarks son usados por una gran cantidad de personas, sus resultados son también aprovechados por una amplia gama de profesionales, y, por tanto, la mayoría tienen cierto grado de oficialidad o estandarización.
4.2.1 ¿Quién propone un benchmark?
Dado que los benchmarks sirven para comparar sistemas informáticos, deben de tener amplia difusión, y, de hecho, todos los sistemas informáticos deben ser evaluados por el mismo benchmark, para que efectivamente puedan ser comparados.
El propio interesado puede llevar a cabo los benchmarks, siempre que los diferentes sistemas informáticos estén disponibles y cuente con los recursos suficientes para hacerlo. De esta forma, se pueden enfocar claramente los objetivos del estudio, y usar las métricas y resultados que más interesen; además, tiene sentido que los usuarios conozcan como aplicar y qué suelen medir los benchmarks más importantes. Estas métricas se explican en el apartado siguiente.
4.2.2 Tipos de benchmarks
Hay diferentes tipos de benchmarks, dependiendo de cómo se representa la carga de trabajo.
- En algunos casos se pueden usar programas reales, realizando una carga de trabajo real.
- Núcleos o kernel, que representan las operaciones fundamentales de una carga de trabajo. Uno clásico son los bucles de Livermore, que representan operaciones comunes en cálculo numérico.
- Benchmarks de juguete: miden parámeros básicos, como los megahercios o la latencia de la memoria.
- Sintéticos, resultan de una operación estadística que mide la carga de trabajo usada con una serie de programas, y abstrae y resume la carga.
4.2.3 Unidades de medida
4.2.4 Errores comunes
En el proceso de medición de las prestaciones de un sistema informático se pueden producir una serie de errores, debidos a la inexperiencia de los realizadores, o bien por no haber tenido en cuenta ciertos factores importantes en las prestaciones de un sistema. Los errores más habituales son los siguientes:
- Representar solamente comportamiento medio en la carga de trabajo.
- Ignorar la distribución desigual de las peticiones de dispositivos.
- No controlar el nivel de carga de forma apropiada.
- Ignorar los efectos de la cache: las caches hacen que el orden en el cual se realizan las operaciones tenga importancia, porque puede conducir a que la información que necesita un programa se encuentre o no en la cache.
- Ignorar el overhead del monitor.
- No validar las medidas: se deben comprobar todas las medidas realizadas por dispositivos hardware, como en cualquier otro experimento.
- No asegurarse de las mismas condiciones iniciales.
- No medir las prestaciones del transitorio, ya que la mayoría de los experimentos están diseñados para predecir las prestaciones bajo condiciones estables.
- Utilizar los porcentajes de uso de los dispositivos para comparar prestaciones.
- Recoger demasiados datos con muy poco análisis: el resumir todos los resultados en un índice de la forma adecuada puede ser tan arduo como obtener los resultados en sí.
Mientras que estos errores son involuntarios, puede suceder que se cometan errores con el objetivo de probar que el ordenador que se está midiendo es mejor que el de la competencia. Es lo que se llaman juegos de benchmarking, como se verá a continuación.
4.2.5 Juegos de benchmarking
Hay diversas formas de engañar al público con los resultados de un benchmark, lo cual se ha venido a denominar benchmarketing.
- Usar configuraciones diferentes para ejecutar la misma carga de trabajo, por ejemplo distinta cantidad de memoria, o discos de diferente calidad o tamaño.
- Elegir las especificaciones de forma que favorezcan a una máquina determinada.
- Usar una secuencia de trabajos sincronizada, de forma que el solapamiento entre el trabajo de la CPU y del subsistema de E/S produzcan mejores prestaciones.
- Elegir una carga de trabajo arbitraria, que puede dar buenas prestaciones para una máquina determinada, pero no tener nada que ver con las prestaciones reales de la misma.
- Usar benchmarks demasiado pequeños: que pueden hacer que los fallos de página y de cache sean mínimos, de forma que se ignore la ineficiencia de la organización de las mismas.
- Proyectar o interpolar resultados de un benchmark.
- Elegir el sistema base de normalización de forma arbitraria.
Sin embargo, en la mayoría de los casos, es difícil engañar con los resultados de los benchmarks, ya que ni el código de los mismos ni la presentación de sus resultados están bajo control de los fabricantes. Por eso lo más práctico es engañar directamente al benchmark, como se verá en la siguiente sección que veremos ya en el próximo dia.
Por último vemos el video del día:
http://video.google.com/videoplay?docid=-528884877021355232&q=benchmarking&ei=LX8pSIHvLJ2ciAKGiJjdCQ











