De la serie: Manos a la obra
Del anterior articulo de la serie Rendimiento de servidores GNU/Linux (Parte I)
Repasemos las tareas planificadas con su estado de ejecución:
En esta 2a parte (y final) se documentarán las tareas 5 y 6.
Utilizando los valores de ejecución de la entrada anterior se generan los siguientes resultados para cada una de las pruebas ejecutadas:
CPU
Para el hardware HP8200:
Para el hardware virtual:
Se ha remarcado el dato más interesante en fondo azul.
Threads
Para el hardware HP8200:
Para el hardware virtual:
Se ha remarcado el dato más interesante en fondo azul.
Entrada/Salida de ficheros
Esta prueba requiere de un poco de preparación:
Para el hardware HP8200:
Para el hardware virtual:
Se ha remarcado el dato más interesante en fondo azul.
Del anterior articulo de la serie Rendimiento de servidores GNU/Linux (Parte I)
Repasemos las tareas planificadas con su estado de ejecución:
- (Realizada) Selección del hardware para la comparación.
- (Realizada) Instalación y configuración del sistema operativo en los servidores, evidentemente GNU/Linux.
- (Realizada) Instalación y configuración del software de estudio de rendimiento y revisión de configuración.
- (Realizada) Definición de los juegos de pruebas a realizar.
- (No realizada) Ejecución de la prueba.
- (No realizada) Análisis de resultados y conclusiones.
En esta 2a parte (y final) se documentarán las tareas 5 y 6.
Ejecución de la prueba
Utilizando los valores de ejecución de la entrada anterior se generan los siguientes resultados para cada una de las pruebas ejecutadas:
CPU
Para el hardware HP8200:
$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 23.5936s
total number of events: 10000
total time taken by event execution: 23.5928
per-request statistics:
min: 2.28ms
avg: 2.36ms
max: 5.08ms
approx. 95 percentile: 2.46ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 23.5928/0.00
Para el hardware virtual:
$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 24.9474s
total number of events: 10000
total time taken by event execution: 24.9460
per-request statistics:
min: 2.48ms
avg: 2.49ms
max: 3.23ms
approx. 95 percentile: 2.55ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 24.9460/0.00
Se ha remarcado el dato más interesante en fondo azul.
Threads
Para el hardware HP8200:
$ sysbench --num-threads=128 --test=threads --thread-yields=200 --thread-locks=4 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 128 Doing thread subsystem performance test Thread yields per test: 200 Locks used: 4 Threads started! Done. Test execution summary: total time: 0.5518s total number of events: 10000 total time taken by event execution: 70.0153 per-request statistics: min: 0.05ms avg: 7.00ms max: 61.09ms approx. 95 percentile: 23.76ms Threads fairness: events (avg/stddev): 78.1250/7.49 execution time (avg/stddev): 0.5470/0.00
Para el hardware virtual:
$ sysbench --num-threads=128 --test=threads --thread-yields=200 --thread-locks=4 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 128 Doing thread subsystem performance test Thread yields per test: 200 Locks used: 4 Threads started! Done. Test execution summary: total time: 0.6431s total number of events: 10000 total time taken by event execution: 80.9499 per-request statistics: min: 0.05ms avg: 8.09ms max: 317.48ms approx. 95 percentile: 29.18ms Threads fairness: events (avg/stddev): 78.1250/9.55 execution time (avg/stddev): 0.6324/0.00
Se ha remarcado el dato más interesante en fondo azul.
Entrada/Salida de ficheros
Esta prueba requiere de un poco de preparación:
- Se verifica que tengamos disponible la cantidad de espacio con el que se quiere realizar la prueba. Yo la realizaré con un fichero de 5GB, por ello verifico que en el filesystem en el que me encuentre disponga de este espacio.
- Se crean el/los ficheros para realizar la prueba mediante en comando:
sysbench --test=fileio --file-total-size=5G prepare
Una vez ejecutado han aparecido (en mi caso) 128 ficheros 'test_file.NN'. Se pueden observar las opciones de ejecución para este test con el comando:
sysbench --test=fileio help
Se debe tener en cuenta que es muy importante que la medida del fichero debe ser mayor que la memoria RAM disponible para que este no quepa en la memoria RAM e invalide las pruebas. - Ahora ya se puede ejecutar el comando de la prueba:
sysbench --test=fileio --file-total-size=5G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run - ¿Que os parece que nos falta?. Nos hemos dejado los ficheros de prueba, nos estaran ocupando (en este caso) 5GB del disco. Ejecutamos:
rm test_file.*
Para el hardware HP8200:
sysbench --test=fileio --file-total-size=5G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Initializing random number generator from timer. Extra file open flags: 0 128 files, 40Mb each 5Gb total file size Block size 16Kb Number of random requests for random IO: 0 Read/Write ratio for combined random IO test: 1.50 Periodic FSYNC enabled, calling fsync() each 100 requests. Calling fsync() at the end of test, Enabled. Using synchronous I/O mode Doing random r/w test Threads started! Time limit exceeded, exiting... Done. Operations performed: 13736 Read, 9157 Write, 29184 Other = 52077 Total Read 214.62Mb Written 143.08Mb Total transferred 357.7Mb (1.1923Mb/sec) 76.31 Requests/sec executed Test execution summary: total time: 300.0076s total number of events: 22893 total time taken by event execution: 191.3679 per-request statistics: min: 0.00ms avg: 8.36ms max: 226.02ms approx. 95 percentile: 26.28ms Threads fairness: events (avg/stddev): 22893.0000/0.00 execution time (avg/stddev): 191.3679/0.00
Para el hardware virtual:
$ sysbench --test=fileio --file-total-size=5G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Initializing random number generator from timer.
Extra file open flags: 0
128 files, 40Mb each
5Gb total file size
Block size 16Kb
Number of random requests for random IO: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Threads started!
Time limit exceeded, exiting...
Done.
Operations performed: 87491 Read, 58327 Write, 186624 Other = 332442 Total
Read 1.335Gb Written 911.36Mb Total transferred 2.225Gb (7.5945Mb/sec)
486.05 Requests/sec executed
Test execution summary:
total time: 300.0063s
total number of events: 145818
total time taken by event execution: 262.3669
per-request statistics:
min: 0.00ms
avg: 1.80ms
max: 415.03ms
approx. 95 percentile: 8.66ms
Threads fairness:
events (avg/stddev): 145818.0000/0.00
execution time (avg/stddev): 262.3669/0.00
Se ha remarcado el dato más interesante en fondo azul.
Análisis de resultados y conclusiones
De forma general, se puede se han visto alguna de las características de la utilidad sysbench. Esta herramienta se creó por parte de MySQL AB para el análisis de rendimiento de su base de datos con licencia GPLv2 (cabe recordar que esta empresa sueca fue comprada por Sun Microsystems y esta en el 2009 fue comprada por Oracle Corporation). Existen 2 opciones mas de análisis que no han sido exploradas (una de ellas si comentada), con las tres ejecutadas he tenido suficiente para verificar el (bastante) buen comportamiento del servidor virtual respecto al físico.
CPU
Los resultados son muy parecidos,incluso en el percentíl del 95% el servidor virtual se comporta bastante bien. En este punto hubiera esperado más diferencia.
Threads
En este aspecto, así como en el de la CPU, las diferencias de resultados son bastante contenidas. Cabe destacar el elevado tiempo de respuesta máximo para alguna de las operaciones, probablemente muy pocas ya que el percentíl sigue siendo bastante parejo al de la máquina física.
Entrada/Salida de ficheros
Este es el indicador sorpresa, a pesar del elevadísimo tiempo de respuesta máximo para alguna de las operacionesel percentíl 95% ya es mejor, pero el resultado de la tasa de transferencia es del orden de 7 veces más entre la máquina física y la virtual. En este indicador la diferencia entre el disco ata del PC físico y los super discos del armario de almacenamiento de la cabina de máquinas virtuales juega un papel muy importante.
En definitiva, se puede afirmar que, aunque exista una pequeña perdida de rendimiento unitario en el sistema huésped, los beneficios de la administración de sistemas de forma global supera con creces esa pequeña perdida de rendimiento. En el aspecto económico de optimización de sistemas también ya que permite un mejor aprovechamiento de los recursos. Sin comentarios en cuanto a la alta disponibilidad de los sistemas, tiempos de recuperación, de backups, restauraciones y un largo etcétera.
Con esto se finalizan las tareas planificadas:
Un saludo a mis 2 o 3 lectores!
Los resultados son muy parecidos,incluso en el percentíl del 95% el servidor virtual se comporta bastante bien. En este punto hubiera esperado más diferencia.
Threads
En este aspecto, así como en el de la CPU, las diferencias de resultados son bastante contenidas. Cabe destacar el elevado tiempo de respuesta máximo para alguna de las operaciones, probablemente muy pocas ya que el percentíl sigue siendo bastante parejo al de la máquina física.
Entrada/Salida de ficheros
Este es el indicador sorpresa, a pesar del elevadísimo tiempo de respuesta máximo para alguna de las operacionesel percentíl 95% ya es mejor, pero el resultado de la tasa de transferencia es del orden de 7 veces más entre la máquina física y la virtual. En este indicador la diferencia entre el disco ata del PC físico y los super discos del armario de almacenamiento de la cabina de máquinas virtuales juega un papel muy importante.
En definitiva, se puede afirmar que, aunque exista una pequeña perdida de rendimiento unitario en el sistema huésped, los beneficios de la administración de sistemas de forma global supera con creces esa pequeña perdida de rendimiento. En el aspecto económico de optimización de sistemas también ya que permite un mejor aprovechamiento de los recursos. Sin comentarios en cuanto a la alta disponibilidad de los sistemas, tiempos de recuperación, de backups, restauraciones y un largo etcétera.
Con esto se finalizan las tareas planificadas:
- (Realizada) Selección del hardware para la comparación.
- (Realizada) Instalación y configuración del sistema operativo en los servidores, evidentemente GNU/Linux.
- (Realizada) Instalación y configuración del software de estudio de rendimiento y revisión de configuración.
- (Realizada) Definición de los juegos de pruebas a realizar.
- (Realizada) Ejecución de la prueba.
- (Realizada) Análisis de resultados y conclusiones.
Un saludo a mis 2 o 3 lectores!