martes, 13 de mayo de 2008

Apuntes del día 13 de Mayo

Comenzamos la clase hablando de la práctica 5.

La ha entregado aún menos gente, y las notas son peores. A pesar de ello, hay más dieces (yo tengo uno! :D).

FRASE DEL DÍA, por enésima vez: para comparaciones y evaluaciones, sobre todo en el trabajo final, ni se nos ocurra hacerlo con tasas de utilización!! No vale comparar el % de ancho de banda de lectura de disco usado, no vale comparar % de CPU usada, etc.

Hay que evaluar cargas del sistema relevantes. Arrancar el sistema no es un buen ejemplo, porque no es para lo que destinamos el sistema. Cosas simples como comprimir un fichero pues es demasiado tonto y tiene poca chicha.

Nuestro compañero Fran (LP) nos muestra su práctica. Ha hecho una pequeña pirulilla, su práctica quizá no es del todo correcta: casi ha cambiado el sistema, porque al principio servía con un ordenador y ha llegado a la conclusión de que es mejor servir con otro. De todos modos JJ se lo ha dado por bueno aunque algunos alumnos no están muy de acuerdo (yo personalmente creo que no está mal, pero hay que reconocer que es una pequeña trampa ;) )

Vemos el resumen de la clase anterior de saramggh.

Vemos un ejercicio de autoevaluación de davis (estamos tímidos hoy, ni Sara ni davis han querido explicar sus correspondientes entradas), que trae una interesante tabla que compara los distintos filesystem que han existido en Windows.

Comentamos, a partir de la página que ha puesto JJ en el wiki, procesadores: de wii, de ps3, de mi EEE… es un artículo interesante el de la página, leedlo.

Volvemos al temario. Estamos en el 4.2: utilización de un benchmark.

Todavía hay gente que no tiene clara la diferencia entre un monitor y un benchmark, así que la re-explicamos. Básica y rápidamente: Monitor, para ver la carga del sistema, benchmark, para cargar al sistema y ver los resultados.

Quién produce los benchmark?

- O bien son evaluados por una empresa externa, a la que se le paga por ello.
- O bien los benchmarks son propuestos por un conjunto de empresas o instituciones que acepten los resultados que arrojen.

Qué tipos de benchmark hay?
- Programas reales: Son un trabajo real, con una carga real.
- Núcleos, kernel: Son las operaciones fundamentales de una carga de trabajo.
- Benchmarks de juguete: Programas muy sencillos que miden parámetros básicos.
- Sintéticos: Son operaciones estadísticas que miden la carga de trabajo usada con una serie de programas y resume la carga.

Uno de los benchmark más conocidos es el SPEC. Vemos un ejemplo del SPEC.

Vemos errores comunes en los benchmark. REPETIMOS DE NUEVO LO DE LAS TASAS (más de uno y más de dos (entre 20 y 30 según JJ) no lo tendrán en cuenta para el trabajo final y luego pasará lo que pasará)

  • Representar solamente comportamiento medio en la carga de trabajo.
  • Ignorar la distribución desigual de las peticiones de dispositivos. Provoca que los resultados no sean muy realistas.
  • No controlar el nivel de carga de forma apropiada.
  • Ignorar los efectos de la cache. Puede falsear los resultados. Para evitarlo hay que hacer benchmark que no quepan en la caché o repitiendolo varias veces.
  • Ignorar el overhead del monitor.
  • No validar las medidas. Hacerlas varias veces. (Muy importante).
  • No asegurarse de las mismas condiciones iniciales, es decir, de que el estado de la cache sea el mismo, el de los procesos que se están ejecutando también, incluso, si es posible, la fragmentación del disco duro y el espacio que queda libre, pues, como se sabe, estos son dos factores que influyen en la velocidad del mismo. (Muy importante). Por ejemplo: ejecutar el benchmark con el ordenador recién arrancado.
  • 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. Por ejemplo: en un sistema recién arrancado, la temperatura no va a ser la misma que la que tendrá pasado un rato.
  • Utilizar los porcentajes de uso de los dispositivos para comparar prestaciones. Por ejemplo el uso de CPU. (Muy importante).
  • Recoger demasiados datos con muy poco análisis. (Muy importante).

Hablamos del benchmarketing. El benchmarketing es sencillamente eso: hacer marketing utilizando los resultados de un benchmark. Pongo el ejemplo en clase de nVidia con 3DMark: cuando se detectaba que el benchmark corría, se baja la calidad gráfica para así conseguir más rendimiento y luego poder decir “nuestra gráfica es más rápida”.

Otras posibilidades son:

- Usar configuraciones diferentes para ejecutar la misma carga de trabajo
- 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
- Usar benchmarks demasiado pequeños
- Proyectar o interpolar resultados de un benchmark, es decir, medir las prestaciones de un ordenador con un procesador determinado, y proyectar los resultados a otro ordenador con un número de procesadores diferente
- Elegir el sistema base de normalización de forma arbitraria

Acabamos la clase viendo el vídeo del día: Temperatura y benchmarking

Por cierto, veo que no quedó claro la otra vez cuando lo dije en el blog: El vídeo del día de hace unas sesiones, el del extreme overclocking y el Duron "volando", era un fake.

No hay comentarios: