Hoy vamos a comenzar por una serie de artículos relacionados con los test de estrés a sistemas GNU/Linux. Todos sabemos la importancia de un buen rendimiento de nuestros equipos y mucho mayor la importación de dicho benchmark en servidores. Un servidor al que acceda un número bastante elevado de personas tendrá que tener un buen rendimiento para soportar la carga, en caso contrario los usuarios experimentarán cuelgues o paradas molestas. Dependiendo de para qué vaya a estar destinado el equipo, será mejor idea tener un buen rendimiento en CPU, en I/O, en red, etc.
Hoy para comenzar, vamos a presentar el software sysbench, que permite realizar diferentes tipos de test sobre la máquina para averiguar su rendimiento en cuanto a cálculo, I/O, memoria, etc. sysbench está disponible para prácticamente todos los sistemas, y para sistemas Debian y derivados , la instalación es inmediata desde los repositorios.
shell> apt-get install sysbench
Una vez instalado tendremos ya a nuestra disposición el comando con el que podremos realizar los tests.
Test de CPU
Con este benchmark podremos testear el rendimiento de la CPU de nuestro equipo, obligándole a realizar algunos cálculos que se consideran costosos y mostrándonos el tiempo final. Esto es especialmente útil sobre todo en máquinas virtuales o compartidas, en las que no sabemos el chip que tenemos debajo ni cuanta prioridad nos dio el administrador.
shell> sysbench --test=cpu --num-threads=1 --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: 43.9480s
total number of events: 10000
total time taken by event execution: 43.9363
per-request statistics:
min: 4.28ms
avg: 4.39ms
max: 6.55ms
approx. 95 percentile: 4.48ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 43.9363/0.00
Como podéis observar, se le indica el proceso a ejecutar y también el número de hilos que nos interesa que emplee. Esto nos da un resultado final que es el que tendremos que comparar con una máquina referencia de la que sí conozcamos el chip y el rendimiento que ofrece.
Test de I/O
Este es el otro test importante que se puede evaluar y efectuar con sysbench. Permite evaluar la potencia de I/O de los discos, algo que suele definir el rendimiento final de un equipo, la entrada/salida. Aquí existen muchas opciones que se le pueden pasar para realizar las comprobaciones, pero lo principal es preparar los ficheros con los que se operará. Se recomienda emplear ficheros que dupliquen por lo menos la cantidad de RAM disponible en el sistema. Si esto no es posible, habrá que indicarle que no emplee memoria caché, para evitar obtener resultados no reales.
Pues comenzamos por lo tanto creando el entorno de trabajo (los ficheros).
shell> sysbench --test=fileio --file-total-size=5G prepare
Una vez creados, ya sólo nos queda ejecutar el test y esperar por lo resultados.
shell> 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: 29580 Read, 19720 Write, 62984 Other = 112284 Total
Read 462.19Mb Written 308.12Mb Total transferred 770.31Mb (2.5676Mb/sec)
164.32 Requests/sec executed
Test execution summary:
total time: 300.0167s
total number of events: 49300
total time taken by event execution: 279.2442
per-request statistics:
min: 0.01ms
avg: 5.66ms
max: 302.36ms
approx. 95 percentile: 15.31ms
Threads fairness:
events (avg/stddev): 49300.0000/0.00
execution time (avg/stddev): 279.2442/0.00
Para finalizar, borramos todo el espacio de disco que hemos ocupado, pues ya tenemos los resultados deseados.
shell> sysbench --test=fileio --file-total-size=5G cleanup
Para más información sobre sysbench, consultar la pagina
man.
En breves saldrá la nuevo entrada
Linux benchmark II, donde explicaremos el benchmarck a MySQL.
La entrada
Linux benchmark I la puede leer en
Puppet Linux.
Leer más