Práctica 6: D(y)EC
Nombre: Rocío García Cabrera
Curso: 3º ITI Sistemas
Grupo de prácticas: Lunes de 8 a 10
Programación de un benchmark portable
Evaluar sistemas diferentes utilizando el mismo programa desarrollado en un lenguaje de alto nivel, de forma que se pueda
compilar (si se utiliza un lenguaje compilado) o interpretar en diversas plataformas y bajo diversos sistemas operativos
y versiones de estos (Windows, Linux).
Programa creado
No he podido poner el codigo fuente para que sea visible desde esta página, ya que era extenso y salía muy desordenado todo;
por lo tanto lo podemos descargar pinchando en este enlace.
Descripción del sistema
Se especificará con el análisis de resultados (paso 9), ya que se han elegido varios
Paso 1. Objetivos del benchmark
- Evaluar la capacidad de CPU a partir de varias operaciones de cálculo que consisten en encontrar los 10000 primeros números primos, el cálculo del Fibonacci de un número y el producto de 2 matrices de tamaño considerable.
- Evaluar la capacidad del sistema gráfico imprimiendo 80000 veces un determinado mensaje.
- Evaluar el disco duro escribiendo y leyendo bloques de datos de diferente tamaño del disco duro.
- Evaluar la capacidad del sistema de accesos a memoria escribiendo y leyendo de memoria volúmenes de datos de tamaño superior al tamaño de las cachés.
En esta práctica se pretende comparar las prestaciones de diferentes máquinas usando programación independiente de la máquina.
Como el objetivo es usar el benchmark en diferentes máquinas que pueden tener distintos sistemas operativos, voy a utilizar como lenguaje de alto nivel C++.
Paso 2: Hacer una lista de los servicios que ofrece el sistema y sus posibles resultados:
En este caso el código puede compilar y no ejecutarse o abortar por acceso a direcciones de memoria no permitidas en el sistema, o problemas similares. Pero en condiciones
normales, el código se ejecuta perfectamente y da resultados coherentes (tiempos positivos).
Paso 3. Elección de las métricas
Los tiempos (en segundos) que se tardan en:
- Realizar un número determinado de operaciones para calcular los 10000 primeros números primos, el producto de 2 matrices de tamaño considerable y el Fibonacci de un número (TEST DE CPU).
- Escribir y leer de memoria volumenes de datos de tamaños superiores al de las cachés (TEST DE MEMORIA)
- Escribir y leer bloques de datos de diferente tamaño del disco duro (TEST DE DISCO DURO).
- Impimir 80000 veces un determinado mensaje por pantalla (TEST DE SISTEMA GRÁFICO)
Paso 4. Listar los parámetros que pueden afectar a las prestaciones
- Acciones que hagamos mientras se ejecuta el benchmark (mover el ratón, pulsar las teclas, etc)
- Ejecución de otros procesos que requieran CPU, memoria, disco duro o sistema gráfico.
- El propio benchmark
- La carga del sistema. Para ello el sistema sólo tendrá iniciados los servicios que se inician automáticamente al iniciar el sistema operativo.
- Las características del propio sistema a evaluar
Haremos las pruebas con el ordenador recién arrancado y ejecutando solamente el benchmark para que los factores que puedan afectar a las prestaciones sean mínimos.
Paso 5. Factores a estudiar
Los tiempos obtenidos durante la ejecución del benchmark
Paso 6. Seleccionar las técnicas de evaluación
Para evaluar la capacidad de CPU y sistema gráfico, medir los accesos a memoria y evaluar el disco duro voy a utilizar el benchmark que he programado en C++.
Paso 7. Seleccionar la carga de trabajo
La carga de trabajo va a ser el propio benchmark.
Paso 8. Diseñar los experimentos
Lo primero que tengo que hacer es compilar el código fuente para obtener el ejecutable del benchmark. Para los sistemas cuyo sistema operativo es Linux, usaré el g++ para la compilación,
mientras que para los que el sistema operativo es Windows usaré el Dev-C++.
Para compilar y ejecutar en Linux, las órdenes específicas son g++ -o benchmark benchmark.cpp y ./benchmark, respectivamente.
Una vez que obtenga el ejecutable, tengo que ejecutar el benchmark en cada uno de los sistemas y tomar los tiempos que cada sistema invierte en realizar los test de memoria,
CPU, sistema gráfico y disco duro. ¡OJO! No redireccionar la salida a un fichero txt (benchmark > salida.txt) porque entonces el test del sistema gráfico daría un tiempo
mucho menor al tiempo que tarda realmente en ejecutarse dicho test
Paso 9. Analizar e interpretar los datos:
Hemos probado el benchmark en 10 ordenadores o sistemas, de tipo portátil y sobremesa, ejecutándolo tanto en Windows como en Linux. Para que el análisis
fuera más exhaustivo, rellenamos una plantilla para cada uno de los ordenadores con las siguientes características
- Procesador:
- Disco duro:
- Caché L1:
- Caché L2:
- Memoria RAM:
- Placa Base:
- Tarjeta Gráfica:
- Sistema operativo:
Características de los sistemas:
- Sistema 1: Portátil
- Procesador: Intel Core2 Duo T7300 a 2.00 GHz
- Disco duro: Hitachi HTS541616J9SA00, 150 GB
- Caché L1: 64 KB
- Caché L2: 4 MB
- Memoria RAM: DDR2 2046 MB a 333 MHz
- Placa Base: Acer Aspire 5920G
- Tarjeta Gráfica: NVIDIA GeForce 8600M GT, 512 MB
- Sistema operativo: GNU/Linux, Ubuntu 9.04
- Sistema 2: Sobremesa
- Procesador: Intel Core i7 920 a 2.67 GHz
- Disco duro: Seagate 500 GB SATA2 32 MB
- Caché L1: 256 KB
- Caché L2: 2 MB
- Caché L3 (especial del Core i7): 8 MB
- Memoria RAM: Kingston DDR-3 2 GB a 1333 MHz
- Placa Base: Asus P6T
- Tarjeta Gráfica: NVIDIA GeForce 9400 GT
- Sistema operativo: Microsoft Windows XP Profesional x64 Versión 2003 Service Pack 2
- Sistema 3: Portátil
- Procesador: Intel Core2 Duo T2400 a 1.83 GHz
- Disco duro: Samsung SATA HM100JI 100 GB 4500 RPM
- Caché L1: 32 KB (x 2)
- Caché L2: 2 MB
- Memoria RAM: DDR2 2GB a 667 MHz
- Placa Base: HEL81 (barebone)
- Tarjeta Gráfica: Intel 945 GM Express 64 MB
- Sistema operativo: GNU/Linux, Ubuntu 8.10
- Sistema 4: Portátil
- Procesador: Intel Core2 Duo T8100 a 2.10 GHz
- Disco duro: SATA 244.1 GB 5400 RPM
- Caché L1: 32 KB (x 2)
- Caché L2: 3 MB
- Memoria RAM: DDR2 2.99 GB a 800 MHz
- Placa Base: Satellite A300
- Tarjeta Gráfica: Intel GMA 4500M HD 128 MB
- Sistema operativo: Microsoft Windows XP Profesional Version 2002 Service Pack 3
- Sistema 5: Portátil
- Procesador: Intel Core2 Duo T8100 a 2.10 GHz
- Disco duro: SATA 244.1 GB 5400 RPM
- Caché L1: 32 KB (x 2)
- Caché L2: 3 MB
- Memoria RAM: DDR2 2.99 GB a 800 MHz
- Placa Base: Satellite A300
- Tarjeta Gráfica: Intel GMA 4500M HD 128 MB
- Sistema operativo: GNU/Linux, Suse 11.0
- Sistema 6: Portátil
- Procesador: Intel Core2 Duo T5200 a 1.66 GHz (Centrino)
- Disco duro: SATA 120 GB 5400 RPM
- Caché L2: 2 MB
- Memoria RAM: 2 GB DDR2 a 667 MHZ
- Tarjeta Gráfica: NVIDIA GeForce GO 7300, 512 MB TURBOCACHE
- Sistema operativo: Microsoft Windows XP
- Sistema 7: Sobremesa
- Procesador: Intel Pentium 4 a 2666 MHz
- Disco duro: ST3120022A (120 GB, 7200 RPM, Ultra-ATA/100)
- Caché L1: 12 KB
- Caché L2: no tiene
- Memoria RAM: DDR DIMM 512 MB
- Placa Base: HEL81 (Barebone)
- Tarjeta Gráfica: NVIDIA GeForce4 MX 440 with AGP8X, 128MB
- Sistema operativo: Microsoft Windows XP Home Edition 5.1.2600
- Sistema 8: Sobremesa aula prácticas
- Procesador: Intel Pentium 3 a 1 GHz
- Disco duro: Seagate Barracuda ST340014A 40 GB ATA-100 7200 RPM
- Caché L1:256 KB
- Caché L2: no tiene
- Memoria RAM: 128MB SDRAM
- Tarjeta Gráfica: NVIDIA GeForce2 MX/MX 400
- Sistema operativo: Microsoft Windows XP Profesional SP1 NTFS
- Sistema 9: Portátil
- Procesador: 2x Intel Core2 Duo CPU T7250 a 2.00GHz
- Disco duro: 160 GB
- Caché: 2 MB
- Memoria RAM: DDR2 SDRAM 3 GB a 667 MHz
- Tarjeta Gráfica: NVIDIA 8600gt 256 MB
- Sistema operativo: GNU/LINUX Ubuntu 9.04
- Sistema 10: Sobremesa
- Procesador: Intel Pentium 4 640 a 3.2 GHz
- Disco duro: ST3200826AS (200 GB, 7200 RPM, SATA)
- Caché L1: 16 KB
- Caché L2: 2 MB
- Memoria RAM: DDR SDRAM 1.00 GB a 200 MHz
- Placa Base: Asus P5GD1
- Tarjeta Gráfica: RADEON X550XT Secondary 256 MB
- Sistema operativo: Microsoft Windows XP Profesional Version 2002 Service Pack 3
En la siguiente tabla podemos ver el tiempo en segundos que cada uno de los sistemas ha invertido en realizar cada uno de los diferentes tests.
| | SISTEMA 1 | SISTEMA 2 | SISTEMA 3 | SISTEMA 4 | SISTEMA 5 | SISTEMA 6 | SISTEMA 7 | SISTEMA 8 | SISTEMA 9 | SISTEMA 10 |
| CPU | 9.38 | 6.422 | 11.52 | 8.325 | 7.65 | 12.078 | 14.157 | 33.2670 | 16.46 | 11.453 |
| MEMORIA | 34.91 | 30.75 | 43.6 | 49.984 | 38.23 | 87.766 | 121.229 | 100.145 | 55.28 | 66.61 |
| DISCO | 14.44 | 11.64 | 19 | 17.547 | 13.76 | 44.14 | 6.922 | 75.41 | 25.82 | 30.609 |
| GRÁFICA | 8 | 12.219 | 11.80 | 23.547 | 12 | 19 | 26 | 20 | 13 | 18 |
Como observación, antes de presentar los resultados, comentaré que los sistemas 4 y 5 son el mismo, pero se ha ejecutado el benchmark en Windows en el primer
caso y en Linux en el segundo. Si los tiempos obtenidos en el test de CPU o DISCO son memores, la diferencia es más notable en el test de MEMORIA o en el de GRAFICA, que es casi la mitad!!
De nuevo Linux le gana la partida a Windows y podemos asegurar que una máquina de bajas prestaciones se puede explotar mucho mejor bajo Linux que en Windows debido a las exigencias del sistema
operativo y la cantidad de procesos que se están ejecutando constantemente en la máquina que ralentiza la máquina. Hay que decir que entre los
sistemas evaluados varios están en Linux y otros en Windows, no cabe la menor duda de que el sistema en Linux obtendría peores mediciones con Windows mirando ese ejemplo
Paso 10: Presentar los resultados.
Las gráficas obtenidas para cada test a partir de la tabla anterior son las siguientes:
Viendo las gráficas podemos ver que en CPU, los sistemas 2, 4 y 5 dan buenos resultados, y el peor resultado lo tiene el sistema 8. En el test
de Memoria, los sistemas 1, 2 y 5 dan los mejores resultados. Y de nuevo el sistema 8 y 7 dan los peores resultados. En el test de Disco
los sistemas 1, 2, 5 y 7 dan los mejores resultados, mientras que el 8 da el peor resultado. Y en el test de Gráfica, los sistemas 1, 3 y 5 (todos con Linux, SI)
dan los mejores resultados, mientras que los sistemas 4 y 7 dan los peores resultados (todos con Windows, también). En general se podría decir que el sistema 5 es en media el mejor. Mientras que
el sistema 8 sería en media el peor.
Como podemos ver en la siguiente tabla y en las siguientes gráficas, para comparar los sistemas, voy a usar como sistema base el sistema 1. No porque sea el mejor, sino
por elegir uno al azar. Para hacer las comparaciones, dividimos los tiempos obtenidos de cada sistema por los tiempos obtenidos en el sistema base, y calculamos la media
geométrica para hacer la comparación general entre ellos respecto al sistema base. Si los valores obtenidos están por debajo de 1 son mejores, y si no
son peores.
| | CPU | MEMORIA | DISCO | GRÁFICA | MEDIA GEOMÉTRICA |
| SISTEMA1 | 1 | 1 | 1 | 1 | 1 |
| SISTEMA2 | 0.685 | 0.881 | 0.806 | 1.527 | 0.928 |
| SISTEMA3 | 1.228 | 1.249 | 1.316 | 1.475 | 1.314 |
| SISTEMA4 | 0.888 | 1.432 | 1.215 | 2.943 | 1.460 |
| SISTEMA5 | 0.816 | 1.095 | 0.953 | 1.500 | 1.063 |
| SISTEMA6 | 1.288 | 2.514 | 3.057 | 2.375 | 2.202 |
| SISTEMA7 | 1.509 | 3.473 | 0.479 | 3.250 | 1.690 |
| SISTEMA8 | 3.547 | 2.869 | 5.222 | 2.500 | 3.395 |
| SISTEMA9 | 1.755 | 1.584 | 1.788 | 1.625 | 1.686 |
| SISTEMA10 | 1.221 | 1.908 | 2.120 | 2.250 | 1.826 |
Comprobamos, como habíamos mencionado antes, que el sistema 8 es el peor de todos, ya que además de tener un valor por encima de 1 es el máximo de todos los
sistemas. Y comprobamos también que el único sistema que es mejor que el sistema base es el 2, ya que el valor obtenido está por debajo de 1. El sistema 5,
que habíamos mencionado antes como el mejor el sistema, está ligeramente por encima del sistema 1, lo que se puede deber a la ponderación de la media geométrica.

Comprobamos viendo cada gráfica por separado, que los sistemas 2, 4 y 5 tienen un mayor rendimiento de CPU que el sistema base. El sistema 2 tiene un
mayor rendimiento de Memoria que el sistema base. Y los sistemas 2, 5 y 7 tienen un mayor rendimiento de Disco que el sistema base. No hay ningún sistema
que sea mejor en el rendimiento de Gráfica.