Diseño y Evaluación de Configuraciones: Práctica 6

Situándonos…

Para ser continuista con el resto del trabajo que he estado realizando en las últimas prácticas seguiré centrándome en el rendimiento de los discos duros en esta.

Para la ocasión desarrollaré una aplicación sencilla que determinará el rendimiento del disco duro sobre diferentes sistemas de archivo en diferentes sistemas operativos en las operaciones de lectura y escritura. Para hacer el benchmark lo más portable posible he decidido programarlo en un lenguaje interpretado que permitirá desplegarlo rápidamente en cualquier pc con sólo instalar el intérprete, en lugar de tener que andar compilando diferentes ejecutables para cada sistema operativo.

Lo que pretendo averiguar con esta batería de tests es qué sistema de archivos obtiene mejor rendimiento de mi disco duro. Para ello los tests se ejecutarán sobre Kubuntu 9.04, ArchLinux 2009.0 y Windows XP SP3. En las máquinas GNU/Linux los test se repetirán para las particiones ReiserFS y Ext4 y en Windows XP se realizarán en una partición de tipo NTFS. El referente serán los datos Kubuntu ya que es el sistema operativo que uso a diario.

Para evitar en la medida de lo posible los errores de apreciación y las posibles interferencias de terceros programas, los tests se ejecutarán 3 veces y se realizará la escritura y lectura de un fichero de 1GiB para obtener unos tiempos apreciables, ya que en las pruebas preliminares con 100MiB apenas había diferencias entre los resultados.

Finalmente se pondrán en común los resultados y se realizará una valoración de qué sistema de archivos ha presentado mejor rendimiento. Es importante recalcar que para estos tests no se realizará ningún ajuste para el rendimiento del disco duro, ya que como se comprobó en la práctica anterior, los resultados eran prácticamente idénticos.

Ejecución

El programa que va a realizar la prueba es el siguiente:

#!/usr/bin/perl

use Benchmark;

my $tiempo_inicial = new Benchmark;

open FILE, “>bench” or die $!;
binmode FILE;
# para el test final hacerlo con 1GB = 1024^3 = 1073741824
for( $i=0; $i < 1024*1024*1024; $i++ ) {
print FILE "0";
}
close FILE;

my $tiempo_final = new Benchmark;
my $tiempo_total = timediff($tiempo_final, $tiempo_inicial);
print "La escritura tardó: ",timestr($tiempo_total),"\n";

my $tiempo_inicial = new Benchmark;

open FILE, "bench" or die $!;
binmode FILE;
my ($buf, $data, $n);
while (($n = read FILE, $data, 1) != 0) {
# print "$n bytes read\n"; $buf .= $data;
}
close(FILE);

vmy $tiempo_final = new Benchmark;
my $tiempo_total = timediff($tiempo_final, $tiempo_inicial);
print "La lectura tardó: ",timestr($tiempo_total),"\n";

# borramos el archivo
unlink("bench");

Se hace uso del módulo Benchmark que nos permitirá obtener resultados de tiempo amigables para personas (segundos de reloj) y también información de los tiempos que el programa es ejecutado en el espacio del usuario y del sistema.

Resultados

Conclusiones

Como podemos observar en las gráficas los tests se han comportado de modo un tanto peculiar. Las pruebas que mejores resultados han arrojado han sido las realizadas sobre ArchLinux en un sistema de ficheros ReiserFS, aunque con Ext4 también ha superado al resto. En segundo lugar estaría Windows XP con el sistema de archivos NTFS y por último Kubuntu 9.04 con ReiserFS de nuevo. Hay que tener en cuenta que al realizarse el test con un lenguaje interpretado tal vez no se hayan obtenido resultados tan exactos como los que se hubieran recogido con tests con aplicaciones nativas, pero dado el carácter de portabilidad que requería el test esta es la mejor apuesta.

Entradas relacionadas:

  1. Diseño y Evaluación de Configuraciones: Práctica Final
  2. Diseño y Evaluación de Configuraciones – Práctica 5
  3. Diseño y Evaluación de Configuraciones – Práctica 2
  4. Diseño y Evaluación de Configuraciones – Práctica 1
  5. Diseño y Evaluación de Configuraciones – Práctica 3

No hay comentarios :-(

¡Puedes ser el primero en dejar uno!

¡Haya paz!

  • Política de comentarios:
    No seas medalla.