Práctica 6: D(y)EC


Nombre: Rocío García Cabrera

Curso: 3º ITI Sistemas

Dirección de correo: [email protected]

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
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: Paso 4. Listar los parámetros que pueden afectar a las prestaciones 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

Características de los sistemas:
  1. Sistema 1: Portátil

  2. Sistema 2: Sobremesa

  3. Sistema 3: Portátil

  4. Sistema 4: Portátil

  5. Sistema 5: Portátil

  6. Sistema 6: Portátil

  7. Sistema 7: Sobremesa

  8. Sistema 8: Sobremesa aula prácticas

  9. Sistema 9: Portátil

  10. Sistema 10: Sobremesa

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 8SISTEMA 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 DISCOGRÁ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.

Hosted by www.Geocities.ws

1