sysbench es una suite de referencia que le permite obtener rápidamente una impresión del rendimiento del sistema, lo cual es importante si planea ejecutar una base de datos con una carga intensiva. Este artículo explica cómo comparar el rendimiento de su CPU, E/S de archivos y MySQL con sysbench.
1 Instalación de sysbench
En Debian/Ubuntu, sysbench se puede instalar de la siguiente manera:
sudo apt-get install sysbench
En CentOS y Fedora, se puede instalar desde el repositorio de EPEL.
Agregar repositorio EPEL:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
yum -y install epel-release
yum -y update
Luego instale sysbench con yum:
yum install sysbench
Obtenga una descripción general de las opciones de sysbench
Echa un vistazo a
man sysbench
para obtener más información sobre sus parámetros.
Ahora realizaré tres pruebas básicas simples que le brindarán más información sobre el rendimiento de su CPU, el rendimiento de E/S de archivos y el rendimiento de MySQL.
2 puntos de referencia de CPU
Puede comparar el rendimiento de su CPU de la siguiente manera:
sysbench --test=cpu --cpu-max-prime=20000 run
[email protected]:~# 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.8724s
total number of events: 10000
total time taken by event execution: 23.8716
per-request statistics:
min: 2.31ms
avg: 2.39ms
max: 6.39ms
approx. 95 percentile: 2.44ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 23.8716/0.00
[email protected]:~#
Ves muchos números, el más importante es el tiempo total:
tiempo total: 23,8724 s
Por supuesto, debe comparar puntos de referencia en múltiples sistemas para saber cuánto valen estos números.
3 puntos de referencia de E/S de archivos
Para medir el rendimiento de E/S del archivo, primero debemos crear un archivo de prueba que sea mucho más grande que su RAM (porque, de lo contrario, el sistema usará la RAM para el almacenamiento en caché, lo que altera los resultados de referencia). 150 GB es un buen valor:
sysbench --test=fileio --file-total-size=150G prepare
Luego, podemos ejecutar el benchmark:
sysbench --test=fileio --file-total-size=150G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run
[email protected]:~# sysbench --test=fileio --file-total-size=150G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run
sysbench: /usr/lib/libmysqlclient.so.18: no version information available (required by sysbench)
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, 1.1719Gb each
150Gb 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: 600 Read, 400 Write, 1186 Other = 2186 Total
Read 9.375Mb Written 6.25Mb Total transferred 15.625Mb (53.316Kb/sec)
3.33 Requests/sec executed
Test execution summary:
total time: 300.0975s
total number of events: 1000
total time taken by event execution: 158.7611
per-request statistics:
min: 0.01ms
avg: 158.76ms
max: 2596.96ms
approx. 95 percentile: 482.29ms
Threads fairness:
events (avg/stddev): 1000.0000/0.00
execution time (avg/stddev): 158.7611/0.00
[email protected]:~#
El número importante es el valor de Kb/seg:
Lectura 9,375 Mb Escrito 6,25 Mb Total transferido 15,625 Mb (53,316 Kb/seg)
Después de la evaluación comparativa, puede eliminar el archivo de prueba de 150 GB del sistema:
sysbench --test=fileio --file-total-size=150G cleanup
4 Evaluación comparativa de MySQL
Para medir el rendimiento de MySQL, primero creamos una tabla de prueba en la base de datos test con 1 000 000 de filas de datos:
sysbench --test=oltp --oltp-table-size=1000000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword prepare
[email protected]:~# sysbench --test=oltp --oltp-table-size=1000000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword prepare
sysbench 0.4.12: multi-threaded system evaluation benchmark
No DB drivers specified, using mysql
Creating table 'sbtest'...
Creating 1000000 records in table 'sbtest'...
[email protected]:~#
Reemplace la palabra sucontraseñarootsql con su contraseña de root de MySQL en el comando anterior. Haz lo mismo en los siguientes comandos.
Luego, puede ejecutar el punto de referencia de MySQL de la siguiente manera:
sysbench --test=oltp --oltp-table-size=1000000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
[email protected]:~# sysbench --test=oltp --oltp-table-size=1000000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
No DB drivers specified, using mysql
Running the test with following options:
Number of threads: 8
Doing OLTP test.
Running mixed OLTP test
Doing read-only test
Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases)
Using "BEGIN" for starting transactions
Using auto_inc on the id column
Threads started!
Time limit exceeded, exiting...
(last message repeated 7 times)
Done.
OLTP test statistics:
queries performed:
read: 2253860
write: 0
other: 321980
total: 2575840
transactions: 160990 (2683.06 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 2253860 (37562.81 per sec.)
other operations: 321980 (5366.12 per sec.)
Test execution summary:
total time: 60.0024s
total number of events: 160990
total time taken by event execution: 479.3419
per-request statistics:
min: 0.81ms
avg: 2.98ms
max: 3283.40ms
approx. 95 percentile: 4.62ms
Threads fairness:
events (avg/stddev): 20123.7500/63.52
execution time (avg/stddev): 59.9177/0.00
[email protected]:~#
El número importante es el valor de las transacciones por segundo:
transacciones: 160990 (2683,06 por seg.)
Para limpiar el sistema después (es decir, eliminar la tabla de prueba), ejecute:
sysbench --test=oltp --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword cleanup
5 Enlaces
- sysbench:http://sysbench.sourceforge.net/