Sysbench – Pruebas de Estrés en Linux

¿Qué es Sysbench?

Sysbench es una herramienta de evaluación comparativa de código abierto y scriptable con el objetivo de realizar tests de rendimiento o benchmarks del sistema operativo (CPU, Memoria, disco, red…).

Sysbench está disponible para Linux, Windows y Mac, de forma gratuita y se puede descargar desde el siguiente enlace: Sysbench

Tutorial de Sysbench en Youtube

¿Para qué utilizo yo Sysbench en mi trabajo?

Muchas veces preguntan los clientes acerca del rendimiento hardware de una determinada insfraestructura cuando están pensando en migrar sus servidores a ella.

No hace mucho, tuve que realizar una pruebas de estrés en unos determinados servidores para comprobar la velocidad del hardware y poder comparar ambas infraestructuras.

En mi caso utilicé sysbench.

Analiza el consumo de CPU, Memoria y Red con Prometheus

No obstante, existe un consenso entre los fabricantes de hardware para realizar pruebas de estés con una serie de algoritmos estándar: Standard Performance Evaluation Corporation o SPEC.

El software que utiliza los algoritmos SPEC es de pago pero sysbench es gratuito y ya me valía para realizar una comparativa casera.

Con Sysbench se pueden hacer pruebas de estrés de CPU, memoria, disco, y transacciones OLTP de bases de datos, entre otras.

Instalación de Sysbench

Compilando el paquete

Descargué el código fuente del producto y lo compilé en CentOS 6:

[root@centostst1 ~]# mkdir sysbench
[root@centostst1 ~]# cd sysbench

[root@centostst1 sysbench]# wget http://src.fedoraproject.org/repo/pkgs/sysbench/sysbench-1.0.14.tar.gz/sha512/9030b1f40f6800d85ba4c7bf38041a509769983db4bce82b5cab097a5e4439e1ede5d8933f276779172537c961e6f670680bee106fcac3723ef99f361fdcc4f1/sysbench-1.0.14.tar.gz
--2018-04-27 10:01:19-- http://src.fedoraproject.org/repo/pkgs/sysbench/sysbench-1.0.14.tar.gz/sha512/9030b1f40f6800d85ba4c7bf38041a509769983db4bce82b5cab097a5e4439e1ede5d8933f276779172537c961e6f670680bee106fcac3723ef99f361fdcc4f1/sysbench-1.0.14.tar.gz
Resolving src.fedoraproject.org (src.fedoraproject.org)... 209.132.181.16, 209.132.181.15
Connecting to src.fedoraproject.org (src.fedoraproject.org)|209.132.181.16|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11744 (11K) [text/html]
Saving to: ‘sysbench-1.0.14.tar.gz’

100%[=============================================>] 11,744 --.-K/s in 0s

2018-04-27 10:01:25 (40.9 MB/s) - ‘sysbench-1.0.14.tar.gz’ saved [11744/11744]

[root@centostst1 sysbench]#

[root@centostst1 sysbench]# ll
total 1472
-rwxrwxrwx 1 root root 1507008 Apr 27 10:02 sysbench-1.0.14.tar.gz
[root@centostst1 sysbench]#
[root@centostst1 sysbench]# tar xvzf sysbench-1.0.14.tar.gz
[root@centostst1 sysbench]# cd sysbench-1.0.14/
[root@centostst1 sysbench]# ./autogen.sh
[root@centostst1 sysbench]# ./configure
[root@centostst1 sysbench]# make
[root@centostst1 sysbench]# make install
[root@centostst1 sysbench-1.0.14]# whereis sysbench
sysbench: /usr/local/bin/sysbench
[root@centostst1 sysbench-1.0.14]#

Descargándolo de un repositorio alternativo

En este caso, lo he descargado en un Linux CentOS 8.

dnf install -y https://repo.percona.com/yum/release/8/RPMS/x86_64/sysbench-1.0.17-3.el8.x86_64.rpm

Ejecución de las pruebas de estrés con Sysbench

A continuación, vamos a realizar algunos tests de rendimiento con sysbench, de CPU, memoria y disco.

Estresando la CPU con un thread (num-threads=1)

[root@centostst1 ~]# /usr/local/bin/sysbench --test=cpu --cpu-max-prime=20000 --num-threads=1 run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
sysbench 1.0.14 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time

Prime numbers limit: 20000

Initializing worker threads...

Threads started!

CPU speed:
events per second: 267.66

General statistics:
total time: 10.0030s
total number of events: 2678

Latency (ms):
min: 3.15
avg: 3.73
max: 11.31
95th percentile: 4.33
sum: 9990.94

Threads fairness:
events (avg/stddev): 2678.0000/0.00
execution time (avg/stddev): 9.9909/0.00

[root@centostst1 ~]#

En el resultado anterior, fijémenos en el tiempo que ha tardado en completar el test de rendimiento:

total time: 10.0030s

Estresando la memoria

[root@localhost ~]# sysbench --test=memory --num-threads=4 run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
WARNING: --num-threads is deprecated, use --threads instead
sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 4
Initializing random number generator from current time


Running memory speed test with the following options:
  block size: 1KiB
  total size: 102400MiB
  operation: write
  scope: global

Initializing worker threads...

Threads started!

Total operations: 41983526 (4197793.17 per second)

40999.54 MiB transferred (4099.41 MiB/sec)


General statistics:
    total time:                          10.0001s
    total number of events:              41983526

Latency (ms):
         min:                                    0.00
         avg:                                    0.00
         max:                                   89.42
         95th percentile:                        0.00
         sum:                                15923.88

Threads fairness:
    events (avg/stddev):           10495881.5000/70780.45
    execution time (avg/stddev):   3.9810/0.23

[root@localhost ~]# 

Estresando el disco

Para hacer este tutorial voy a probar con un fichero de 3GB pero, si queremos testear un sistema de producción, deberemos probar con ficheros más grandes. 100GB, por ejemplo.

[root@localhost ~]# sysbench --test=fileio --file-total-size=3G prepare
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2)

128 files, 24576Kb each, 3072Mb total
Creating files for the test...
Extra file open flags: (none)
Creating file test_file.0
Creating file test_file.1
Creating file test_file.2
Creating file test_file.3
...
Creating file test_file.126
Creating file test_file.127
3221225472 bytes written in 6.36 seconds (483.31 MiB/sec).
[root@localhost ~]# 

[root@localhost ~]# sysbench --test=fileio --file-total-size=3G --file-test-mode=rndrw --max-time=300 --max-requests=0 run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
WARNING: --max-time is deprecated, use --time instead
sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Extra file open flags: (none)
128 files, 24MiB each
3GiB total file size
Block size 16KiB
Number of IO requests: 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
Initializing worker threads...

Threads started!


File operations:
    reads/s:                      9365.77
    writes/s:                     6243.85
    fsyncs/s:                     19980.33

Throughput:
    read, MiB/s:                  146.34
    written, MiB/s:               97.56

General statistics:
    total time:                          300.0060s
    total number of events:              10677117

Latency (ms):
         min:                                    0.00
         avg:                                    0.03
         max:                                  132.94
         95th percentile:                        0.07
         sum:                               292935.13

Threads fairness:
    events (avg/stddev):           10677117.0000/0.00
    execution time (avg/stddev):   292.9351/0.00

[root@localhost ~]#

[root@localhost ~]# sysbench --test=fileio --file-total-size=3G cleanup
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2)

Removing test files...
[root@localhost ~]# 

Como comentaba anteriormente, sysbench es muy amplio y permite realizar muchos tipos de pruebas de estrés. Mejor os dejo un enlace con detalles de las distintas pruebas y modos de uso:

COMPÁRTEME

Deja un comentario