sábado, 22 de junio de 2013

Análisis comparativo de rendimiento: Equipos con diferencias considerables




Actualmente estamos en una era en la que los avances tecnológicos se dan casi diariamente; por lo que es necesario conocer las diferencias entre los diferentes tipos y marcas de procesadores que hay en el mercado, ya sea al momento de adquirir un computador nuevo o simplemente comparando cual CPU se amolda mejor a nuestras necesidades.


En el documento que se direcciona mas adelante, se hace un análisis comparativo de rendimiento entre dos computadores con diferencias considerables (Computador High End actual VS Computador de gama media de hace 5 años):

https://www.dropbox.com/s/p1ve43tvxdfz20z/An%C3%A1lisis%20Comparativo%20de%20Rendimiento%20LAB%204.pdf

Algoritmos utilizados para las pruebas:

https://www.dropbox.com/s/3brjtya6v0b2w7w/Algoritmos%20utilizados.pdf

Resultados del Análisis en planilla Excel:

lunes, 3 de junio de 2013

Analisis Comparativo de Rendimiento: Apache2, lighttpd, Cherokee.

                                   

La investigación que se expone a continuación se llevó a cabo a partir de la motivación de conocer con anterioridad a su utilización, el rendimiento de un Servidor Web.

En el documento que se direcciona mas adelante, se hace un analisis comparativo de rendimiento entre los Servidores Web Apache2, Lighttpd y Cherokee, a traves de diferentes tipos de programas web:

https://dl.dropboxusercontent.com/u/24633336/AnalisisComparativoRendimientoServidoresWeb.pdf

Medidas obtenidas con Apache Benchmark:

https://dl.dropboxusercontent.com/u/24633336/ESC_Exp3_Medidas.docx

Resultados del Análisis en planilla Excel:

lunes, 13 de mayo de 2013

Analisis Comparativo de Rendimiento: MySQL, PostgreSQL, Firebird.


La investigación que se expone a continuación se llevó a cabo a partir de la motivación de conocer con anterioridad a su utilización, el rendimiento de un sistema de gestión de bases de datos (DBMS).

En el documento que se direcciona mas adelante, se hace un analisis comparativo de rendimiento entre los sistemas de gestión de bases de datos MySQL, PostgreSQL y Firebird, a traves de diferentes tipos de consultas SQL:

https://dl.dropboxusercontent.com/u/24633336/An%C3%A1lisis%20Comparativo%20de%20Rendimiento.docx

Resultados del Análisis en planilla Excel:

https://dl.dropboxusercontent.com/u/24633336/Analisis%20de%20resultados.xls

lunes, 15 de abril de 2013

Monitorización: Bublesort, Quicksort y Mergesort.



En los sistemas GNU/Linux existen una gran variedad de comandos básicos de monitorización tales como: time, vmstat, iostat, gcov, gprof, top y otros. A continuación se desarrolla una experiencia del uso de dichos comandos para monitorizar distintos algoritmos de ordenamiento desarrollados en C, tales como: Bublesort, Quicksort y Mergesort. Estos algoritmos se prueban en base a un archivo de aproximadamente 20 MBytes que contiene numeros al azar linea a linea. El objetivo de cada ordenador es recibir este archivo y generar un nuevo archivo con los numeros ordenados. Finalmente, en base a los resultados arrojados por los diferentes comandos de monitorización, se comparan los 3 algoritmos concluyendo cual resulta ser más eficiente.

Se desarrollan 2 experiencias distintas con los 3 algoritmos: la monitorizacion ordenando el archivo de 20mb desde un disco interno a un disco externo, y la monitorización ordenando el archivo en el mismo disco interno.

A continuación se presentan los videos correspondientes a cada experiencia:

I) Ordenamiento desde un Disco Interno a un Disco Externo.

    A.- Bublesort.


    B.- Quicksort.


    C.- Mergesort.


II) Ordenamiento en el mismo Disco Interno.


Resultados de la Monitorización.

I) Ordenamiento desde un Disco Interno a un Disco Externo.

    A.- Bublesort.

  • Tiempo de ejecución usando time:

    16 horas y más (no se conocio el limite durante esta experiencia).

  • Estadisticas de tiempo usando gprof:

    Por la larga duración del programa no fue posible generarlas.

  • Graficas hechas con gnuplot utilizando los datos recopilados con iostat y vmstat:


    • Lectura y Escritura en Kb/s en el disco interno durante el tiempo que duro la experiencia.

 

    • Lectura y Escritura en Kb/s en el disco externo durante el tiempo que duro la experiencia.

  

    •  Uso de CPU durante el tiempo que duro la experiencia.


     B.- Quicksort.

  • Tiempo de ejecución usando time:

    real 34m11.146s
    user 1m17.861s
    sys 20m39.873s

  • Estadisticas de tiempo usando gprof:

    Flat profile:

    Each sample counts as 0.01 seconds.
      %   cumulative   self              self     total          
     time   seconds   seconds    calls   s/call   s/call  name   
     99.88     29.99    29.99        1    29.99    30.03  quicksort
      0.12     30.02     0.04 25819006     0.00     0.00  swap
      0.03     30.03     0.01  6000001     0.00     0.00  escribirUnNumero
      0.03     30.04     0.01  5999000     0.00     0.00  choose_pivot
      0.03     30.05     0.01        1     0.01    30.05  ordenarArchivo


  • Graficas hechas con gnuplot utilizando los datos recopilados con iostat y vmstat:

    • Lectura y Escritura en Kb/s en el disco interno durante el tiempo que duro la experiencia.


    • Lectura y Escritura en Kb/s en el disco externo durante el tiempo que duro la experiencia.


    •   Uso de CPU durante el tiempo que duro la experiencia.

 

    C.- Mergesort.

  • Tiempo de ejecución usando time:

    real 32m35.778s
    user 0m2.812s
    sys 20m58.487s

  • Estadisticas de tiempo usando gprof:

    Flat profile:

    Each sample counts as 0.01 seconds.
      %   cumulative   self              self     total          
     time   seconds   seconds    calls  ms/call  ms/call  name   
     55.99      0.33     0.33  5999999     0.00     0.00  mezclar
     39.02      0.56     0.23        1   230.23   560.55  mezcla
      3.39      0.58     0.02        1    20.02   590.58  ordenarArchivo
      1.70      0.59     0.01  6000001     0.00     0.00  escribirUnNumero


  • Graficas hechas con gnuplot utilizando los datos recopilados con iostat y vmstat:

    • Lectura y Escritura en Kb/s en el disco interno durante el tiempo que duro la experiencia.

 

    •  Lectura y Escritura en Kb/s en el disco externo durante el tiempo que duro la experiencia.

 

    •   Uso de CPU durante el tiempo que duro la experiencia.



 II) Ordenamiento en el mismo Disco Interno.

     A.- Bublesort.

  •  Tiempo de ejecución usando time:

    16 horas y más (no se conocio el limite durante esta experiencia).
  •  Estadisticas de tiempo usando gprof:

    Por la larga duración del programa no fue posible generarlas.

  • Graficas hechas con gnuplot utilizando los datos recopilados con iostat y vmstat:


    • Lectura y Escritura en Kb/s en el disco interno durante el tiempo que duro la experiencia.


    • Lectura y Escritura en Kb/s en el disco externo durante el tiempo que duro la experiencia.


    • Uso de CPU durante el tiempo que duro la experiencia.


    B.- Quicksort.

  • Tiempo de ejecución usando time:

    real 1m29.388s
    user 0m41.251s
    sys 0m47.659s
  • Estadisticas de tiempo usando gprof:

    Flat profile:

    Each sample counts as 0.01 seconds.
      %   cumulative   self              self     total          
     time   seconds   seconds    calls   s/call   s/call  name   
     98.17     29.78    29.78        1    29.78    29.89  quicksort
      1.15     30.14     0.35  6000001     0.00     0.00  escribirUnNumero
      0.43     30.27     0.13        1     0.13    30.37  ordenarArchivo
      0.30     30.36     0.09 25819006     0.00     0.00  swap
      0.05     30.37     0.02  5999000     0.00     0.00  choose_pivot


  • Graficas hechas con gnuplot utilizando los datos recopilados con iostat y vmstat:


    • Lectura y Escritura en Kb/s en el disco interno durante el tiempo que duro la experiencia.


    • Lectura y Escritura en Kb/s en el disco externo durante el tiempo que duro la experiencia.


    • Uso de CPU durante el tiempo que duro la experiencia.


    C.- Mergesort.

  • Tiempo de ejecución usando time:

    real 0m58.518s
    user 0m12.069s
    sys 0m46.267s
  • Estadisticas de tiempo usando gprof:

    Flat profile:

    Each sample counts as 0.01 seconds.
      %   cumulative   self              self     total          
     time   seconds   seconds    calls   s/call   s/call  name   
     42.51      0.62     0.62  5999999     0.00     0.00  mezclar
     28.80      1.04     0.42  6000001     0.00     0.00  escribirUnNumero
     21.25      1.35     0.31        1     0.31     0.93  mezcla
      7.54      1.46     0.11        1     0.11     1.46  ordenarArchivo


  • Graficas hechas con gnuplot utilizando los datos recopilados con iostat y vmstat:


    • Lectura y Escritura en Kb/s en el disco interno durante el tiempo que duro la experiencia.


    • Lectura y Escritura en Kb/s en el disco externo durante el tiempo que duro la experiencia.

    • Uso de CPU durante el tiempo que duro la experiencia.

Conclusiones. 

  • Considerando que el algoritmo de ordenamiento BubleSort es de orden n^2, el ordenamiento de un archivo que cuenta con alrededor de 6 millones de datos, se podria decir que su tiempo de ejecución podria extenderse por años. 
  • Comparando el uso de la CPU de Bublesort con los otros 2 algoritmos, se puede ver claramente que fue más extenso el uso del BubleSort que el QuickSort y el MergeSort.
  • En cuanto a la lectura y escritura ejecutando el programa con BubleSort de un disco interno a un disco externo o en el mismo disco se puede ver que: cuando se lleva a cabo el ordenamiento, se puede observar en las graficas correspondiente, que la lectura y escritura de datos se hace mayor cantidad de veces para el caso del disco externo.
  • En cuanto a los algoritmos QuickSort y MergeSort, en tiempo de ejecución son similares, pero con algunas diferencias en la lectura y escritura de datos, ya que su implementación es distinta, pero a lo que se refiere a procesos del sistema, sus tiempos son parecidos. El comportamiento con la CPU y dispositivos I/O son similares.
  • Viendo las graficas, se puede ver que para el caso del disco externo hubo mayor proceso de lectura y escritura que para el caso del mismo disco interno.

Fuentes: