Optimización del rendimiento de Linux (dos) herramienta de prueba de esfuerzo de sysbench

1. Introducción a sysbench

1. Introducción a sysbench

sysBench es una herramienta de prueba de referencia modular, multiplataforma y multiproceso, que se utiliza principalmente para evaluar y probar la carga de la base de datos bajo varios parámetros del sistema. sysbench proporciona las siguientes pruebas:
(1) Rendimiento de la CPU
(2) Rendimiento de E / S del disco
(3) Rendimiento del programador
(4) Asignación de memoria y velocidad de transmisión 
(5) Rendimiento del subproceso POSIX
(6) Rendimiento de la base de datos (prueba de referencia OLTP)      
sysbench es compatible con MySQL, PostgreSQL, base de datos Oracle.

2. instalación de sysbench

Construir la instalación de la dependencia de compilación:

yum -y install make automake libtool pkgconfig libaio-devel
yum -y install mariadb-devel openssl-devel
yum -y install postgresql-devel

Descarga de código fuente:
git clone https://github.com/akopytov/sysbench.git
Generar herramienta de configuración:
autogen.sh
Opciones de configuración:
--with-pgsql: compatible con PostgreSQL
--with-oracle: compatible con Oracle
--without-mysql: no compatible con MySQL
configure [opciones]
compilar:
make -j
instalar:
make install

3. comando sysbench

sysbench [options]... [testname] [command]
testname es el tipo de prueba que debe ejecutar sysbench. Las opciones incluyen fileio, cpu, memory, threads y mutex, que se pueden especificar con el parámetro --test.
El comando es el comando que debe ejecutar sysbench, que incluye preparar, ejecutar y limpiar. Preparar prepara los datos para la prueba, ejecutar realiza pruebas formales y la limpieza limpia la base de datos una vez finalizada la prueba.
Las opciones de parámetros generales de
sysbench son las siguientes: --threads: el número de subprocesos. Si se establece en 2, sysbench iniciará 2 subprocesos y realizará cálculos de números primos respectivamente. El valor predeterminado es 1.
--time: tiempo de ejecución, en segundos. Si se establece en 5, sysbench realizará un ciclo de cálculos de números primos en 5 segundos, y cada ronda es un evento, y el valor predeterminado es 10.
--eventos: el número máximo de eventos. Si se establece en 100, significa que después de que se completen 100 eventos, dejará de ejecutarse incluso si hay tiempo. El valor predeterminado es 0, lo que significa que no hay límite para el número de eventos.
--force-shutdown = STRING: Interrupción forzada de tiempo de espera, el valor predeterminado es apagado. --thread-stack-size = SIZE: tamaño de la pila de hilos, el valor predeterminado es 64K
--thread-init-timeout = N: tiempo de espera de inicialización del hilo, el valor predeterminado es 30 segundos
--rate = N: tasa de transacción promedio, 0 significa sin límite, El valor predeterminado es 0.
--report-interval = N: El intervalo de tiempo para la salida del informe de progreso de la prueba, 0 significa apagado y el valor predeterminado es 0.
--report-checkpoints = [LIST, ...]: Vuelca estadísticas completas y restablece todos los contadores en un momento específico. El parámetro es una lista de valores separados por comas, que indica el tiempo transcurrido desde el inicio de la prueba que debe realizar el punto de control del informe (En segundos). De forma predeterminada, el punto de control del informe está desactivado [desactivado].
--debug [= on | off]: Imprime la información de depuración, el valor predeterminado es off
--validate [= on | off]: Realiza comprobaciones de verificación tanto como sea posible, el valor predeterminado es desactivado.
--help [= on | off]: imprime información de ayuda y sale, el valor predeterminado es off
--version [= on | off]: imprime la información de la versión y sale, el valor predeterminado es off
--config-file = FILENAME: archivo de opciones de línea de comandos
--luajit-cmd = STRING: ejecutar comandos de control LuaJIT

Dos, prueba comparativa de rendimiento de la CPU

1. Opciones de comando

sysbench --test=cpu help
--cpu-max-prime: El límite superior del número de números primos generados. Si se establece en 3, significa 2, 3, 5 (5 veces para calcular 1-5), y el valor predeterminado es 10000.

2. Prueba de rendimiento de la CPU

sysbench cpu --cpu-max-prime=20000 --threads=8 --time=30 run
Optimización del rendimiento de Linux (dos) herramienta de prueba de esfuerzo de sysbench
Límite de números primos: 20000, el límite superior de números primos generados por cada subproceso es 2000
eventos por segundo: 650.7, todos los subprocesos completan 650.74 eventos por segundo
tiempo total: 10.0017s, que toma 10 segundos
número total de eventos: 6510,10 En segundos, todos los subprocesos completaron un total de 6510 eventos
min: 3.03, el tiempo mínimo requerido para completar un evento fue 3.03 segundos
promedio: 3.07, el tiempo promedio requerido para todos los eventos fue 3.07 milisegundos
máximo: 3.27, y el tiempo máximo requerido para completar un evento fue 3.27 milisegundos
Percentil 95: 3,13, el 95% de los eventos se completan en 3,13 segundos y los milisegundos
suman: 19999,91, cada subproceso tarda 10 segundos y el tiempo de pila de 2 subprocesos es de 20 segundos
eventos (avg / stddev): 3255.0000 / 44.00 // promedio cada Cada hilo completa 3255 eventos, la desviación estándar es 44
tiempo de ejecución (avg / stddev): 10.0000 / 0.00 // Cada hilo tarda un promedio de 10 segundos y la desviación estándar es 0

Tres, prueba de carga de memoria

 1. Opciones de comando

sysbench  --test=memory help
--memory-block-size = SIZE: prueba el tamaño del bloque de memoria, el valor predeterminado es 1K.
--memory-total-size = SIZE: el tamaño total de la transmisión de datos, el valor predeterminado es 100G.
--memory-scope = STRING: el alcance del acceso a la memoria, incluido el alcance global y local, el valor predeterminado es global.
--memory-hugetlb = [on | off]: si se asigna memoria desde el grupo HugeTLB, el valor predeterminado es desactivado.
--memory-oper = STRING: el tipo de operación de memoria, incluyendo lectura, escritura, ninguna, y el valor predeterminado es escribir
--memory-access-mode = STRING: modo de acceso a la memoria, incluyendo seq y rnd, el valor predeterminado es seq.

2. Prueba de carga de memoria

sysbench memory --threads=12 --memory-block-size=8K --memory-total-size=100G --memory-access-mode=seq run
Inicie 12 subprocesos, el tamaño del bloque de memoria es 8K, lea y escriba secuencialmente
Optimización del rendimiento de Linux (dos) herramienta de prueba de esfuerzo de sysbench
sysbench memory --threads=12 --memory-block-size=8K --memory-total-size=100G --memory-access-mode=rnd run
Optimización del rendimiento de Linux (dos) herramienta de prueba de esfuerzo de sysbench

Cuarto, prueba comparativa de rendimiento de E / S de disco

1. Opciones de comando

 sysbench --test=fileio help
--file-num = N: el número de archivos de prueba generados, el valor predeterminado es 128.
--file-block-size = N: El tamaño del bloque de archivo utilizado en la prueba. Si desea que el disco se pruebe con el motor de almacenamiento InnoDB, puede establecerlo en 16384 (el tamaño de la página del motor de almacenamiento InnoDB), y el valor predeterminado es 16384.
--file-total-size = SIZE: El tamaño total del archivo de prueba creado, el valor predeterminado es 2G.
--file-test-mode = STRING: modo de prueba de archivo, seqwr (escritura secuencial), seqrewr (lectura y escritura secuencial), seqrd (lectura secuencial), rndrd (lectura aleatoria), rndwr (escritura aleatoria), rndrw (lectura y escritura aleatoria) ).
--file-io-mode = STRING: modo de operación de archivo, sincronización (síncrono), asíncrono (asíncrono), fastmmap (mmap rápido), slowmmap (mmap lento), el valor predeterminado es sincronización.
--file-async-backlog = N: El número de operaciones asincrónicas correspondientes a cada cola de subprocesos, el valor predeterminado es 128.
--file-extra-flags = STRING: opciones al abrir archivos y parámetros relacionados con la API.
--file-fsync-freq = N: La frecuencia de ejecución de la función fsync. fsync sincroniza principalmente archivos de disco. 0 significa que la función fsync no se utiliza y el valor predeterminado es 100.
--file-fsync-all = [on | off]: ejecuta fsync cada vez que se realiza una operación de escritura. El valor predeterminado es desactivado.
--file-fsync-end = [on | off]: ejecuta la función fsync al final de la prueba, el valor predeterminado está activado.
--file-fsync-mode = STRING: selección de la función de sincronización de archivos y parámetros relacionados con la API. Dado que varios sistemas operativos admiten diferentes fdatasync, no se recomienda fdatasync y el valor predeterminado es fsync.
--file-merged-orders = N: en la mayoría de los casos, el número de solicitudes de E / S que pueden fusionarse, el valor predeterminado es 0.
--file-rw-ratio = N: La relación de lectura y escritura durante la prueba, el valor predeterminado es 1,5, es decir, 3: 2.

2. Preparación de datos

sysbench fileio --file-num=16 --file-total-size=2G prepare

3. Realice la prueba

sysbench fileio --file-total-size=2G --file-test-mode=rndrd --time=180 --threads=16 --file-num=16 --file-extra-flags=direct --file-fsync-freq=0 --file-block-size=16384 run
Optimización del rendimiento de Linux (dos) herramienta de prueba de esfuerzo de sysbench

4. Limpiar datos

sysbench fileio --file-num=16 --file-total-size=2G cleanup
Limpiar datos de prueba

Cinco pruebas comparativas de programación de subprocesos múltiples

1. Opciones de comando

sysbench  --test=mutex help 
--mutex-num = N: el tamaño total de la exclusión mutua de la matriz, el valor predeterminado es 4096.
--mutex-locks = N: El número de bloqueos mutex para cada hilo, el valor predeterminado es 50000.
--mutex-loops = N: El número de bucles vacíos del mutex interno, el valor predeterminado es 10000.

2. Prueba de programación de subprocesos múltiples

sysbench mutex --threads=8 --mutex-num=2000 --mutex-locks=10000 --mutex-loops=5000 run
Optimización del rendimiento de Linux (dos) herramienta de prueba de esfuerzo de sysbench

Seis, prueba de referencia POST multiproceso

 1. Opciones de comando

 sysbench  --test=threads help
--thread-yields = N: Especifique la presión de cada solicitud, el valor predeterminado es 1000
--thread-locks = N: Especifique el número de bloqueos para cada hilo, el valor predeterminado es 8

2. Prueba de subprocesos múltiples

sysbench threads --threads=8 --thread-yields=100 --thread-locks=2 run
Optimización del rendimiento de Linux (dos) herramienta de prueba de esfuerzo de sysbench

Siete, prueba de referencia OLTP

1. Opciones de comando

sysbench --test=oltp help
--oltp-test-mode = STRING: modo de prueba, simple, complejo, no trx, sp, el valor predeterminado es complejo.
--oltp-reconnect-mode = STRING: modo de reconexión, la sesión no usa la reconexión, la transacción se vuelve a conectar después de cada transacción, la consulta se vuelve a conectar después de que se ejecuta cada declaración SQL, selecciona aleatoriamente la reconexión para cada transacción Modo, el predeterminado es sesión.
--oltp-sp-name = STRING: el nombre del procedimiento almacenado, el valor predeterminado es vacío
--oltp-read-only = [on | off]: modo de solo lectura. Las declaraciones de actualización, eliminación e inserción no son ejecutables, y el valor predeterminado es desactivado
--oltp-skip-trx = [on | off]: omite la declaración begin / commit, y el valor predeterminado es desactivado.
--oltp-range-size = N: rango de consulta, el valor predeterminado es 100. --oltp-point-selects = N: número de selecciones de puntos [10]
--oltp-simple-rangos = N número de rangos simples [1]
--oltp-sum-rangos = N número de rangos de suma [1]
- -oltp-order-ranges = N número de rangos ordenados [1]
--oltp-different-rangos = N número de rangos distintos [1]
--oltp-index-updates = N número de actualización de índice [1]
--oltp-non-index-updates = N número de actualizaciones sin índice [1]
--oltp-nontrx-mode = STRING tipo de consulta para el modo de ejecución sin transacción {select, update_key, update_nokey, insert, delete} [select]
--oltp-auto-inc = [on | off] Si AUTO_INCREMENT está activado. El valor predeterminado es
--oltp-connect-delay = N Cuántos microsegundos para conectarse a la base de datos. El valor predeterminado es 10000
--oltp-user-delay-min = N El tiempo de espera mínimo para cada solicitud. La unidad es ms. El valor predeterminado es 0
--oltp-user-delay-max = N El tiempo máximo de espera para cada solicitud. La unidad es ms. El valor predeterminado es 0
--oltp-table-name = STRING el nombre de la tabla utilizado en la prueba. El valor predeterminado es sbtest
--oltp-table-size = N el número de registros en la tabla de prueba. El valor predeterminado es 10000
--oltp-dist-type = STRING número aleatorio {uniforme (distribución uniforme), gaussiano (distribución gaussiana), especial (distribución espacial)}. El valor predeterminado es especial
--oltp-dist-iter = N El número de iteraciones del número generado. El valor predeterminado es 12
--oltp-dist-pct = N El porcentaje del valor se considera "especial" (para distribución especial). El valor predeterminado es 1
--oltp-dist-res = N 'valor porcentual especial'. El valor predeterminado es 75

2. Guión de Lua

/usr/share/sysbench/bulk_insert.lua
/usr/share/sysbench/oltp_common.lua
/usr/share/sysbench/oltp_delete.lua
/usr/share/sysbench/oltp_insert.lua
/usr/share/sysbench/oltp_point_select.lua
/usr/share/sysbench/oltp_read_only.lua
/usr/share/sysbench/oltp_read_write.lua
/usr/share/sysbench/oltp_update_index.lua
/usr/share/sysbench/oltp_update_non_index.lua
/usr/share/sysbench/oltp_write_only.lua
/usr/share/sysbench/select_random_points.lua
/usr/share/sysbench/select_random_ranges.lua

3. Prepare los datos

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 prepare
El modo de ejecución es complejo, se utilizan 10 tablas, cada tabla tiene 100,000 piezas de datos, el número de subprocesos concurrentes en el cliente es 10, el tiempo de ejecución es 120 segundos y se genera un informe cada 10 segundos.

4. Realice la prueba

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 run >> /home/test/mysysbench.log

5. Limpiar datos

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 cleanup

Supongo que te gusta

Origin blog.51cto.com/9291927/2593580
Recomendado
Clasificación