Como discutimos en nuestro artículo de introducción al monitoreo del rendimiento de Linux, medir el rendimiento del subsistema IO es muy importante.
Si alguien se queja de que una base de datos (o cualquier aplicación) que se ejecuta en un servidor (con cierto sistema de archivos o configuración RAID) se ejecuta más rápido que la misma base de datos o aplicación que se ejecuta en otro servidor, es posible que desee asegurarse de que el rendimiento en el el nivel del disco es el mismo en ambos servidores. Puede usar iozone para esta situación.
Si está ejecutando su base de datos (o cualquier aplicación) en un entorno SAN o NAS determinado y desea migrarla a un entorno SAN o NAS diferente, debe realizar evaluación comparativa del sistema de archivos en ambos sistemas y compararlo. Puedes usar iozone para esta situación.
Si sabe cómo usar iozone, puede usarlo para varios propósitos de evaluación comparativa del sistema de archivos.
Descargar e instalar IOZone
Iozone es una utilidad de evaluación comparativa de sistemas de archivos de código abierto.
Siga los pasos a continuación para descargar e instalar iozone en su sistema.
wget http://www.iozone.org/src/current/iozone3_394.tar tar xvf iozone3_394.tar cd iozone3_394/src/current make make linux
¿Qué mide la utilidad IOzone?
IOzone realiza los siguientes 13 tipos de prueba. Si está ejecutando la prueba iozone en un servidor de base de datos, puede concentrarse en las primeras 6 pruebas, ya que afectan directamente el rendimiento de la base de datos.
- Leer:indica el rendimiento de leer un archivo que ya existe en el sistema de archivos.
- Escribir:indica el rendimiento de escribir un archivo nuevo en el sistema de archivos.
- Volver a leer:después de leer un archivo, esto indica el rendimiento de volver a leer un archivo.
- Reescribir:indica el rendimiento de escribir en un archivo existente.
- Lectura aleatoria:indica el rendimiento de la lectura de un archivo al leer información aleatoria del archivo. es decir, esta no es una lectura secuencial.
- Escritura aleatoria:indica el rendimiento de escribir en un archivo en varias ubicaciones aleatorias. es decir, esta no es una escritura secuencial.
- Lectura hacia atrás
- Reescribir registro
- Lectura de pasos
- Fread
- Escribir
- Lectura gratuita
- Frescritura
10 ejemplos de IOZone
1. Ejecute todas las pruebas de IOZone usando valores predeterminados
-una opción significa modo automático. Esto crea archivos de prueba temporales de tamaños de 64k a 512 MB para pruebas de rendimiento. Este modo también usa de 4k a 16M de tamaños de registro para pruebas de lectura y escritura (más sobre esto más adelante).
-una opción también ejecutará los 13 tipos de pruebas.
$ ./iozone -a
La primera sección de la salida de iozone contiene la información del encabezado, que muestra información sobre la utilidad iozone y todas las opciones de iozone que se utilizan para generar este informe, como se muestra a continuación.
Iozone: Performance Test of File I/O Version $Revision: 3.394 $ Compiled for 32 bit mode. Build: linux Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins Al Slater, Scott Rhine, Mike Wisner, Ken Goss Run began: Sat Apr 23 12:25:34 2011 Auto Mode Command line used: ./iozone -a Output is in Kbytes/sec Time Resolution = 0.000001 seconds. Processor cache size set to 1024 Kbytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size.
La segunda sección de la salida contiene los valores de salida (en por segundo) de varias pruebas.
- 1ra columna KB:Indica el tamaño del archivo que se usó para la prueba.
- Segunda columna reclen:indica la longitud del registro que se usó para la prueba.
- 3ra columna hasta la última columna:Indica las diversas pruebas que se realizan y sus valores de salida en por segundo.
random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 495678 152376 1824993 2065601 2204215 875739 582008 971435 667351 383106 363588 566583 889465 64 8 507650 528611 1051124 1563289 2071399 1084570 1332702 1143842 2138827 1066172 1141145 1303442 2004783 64 16 587283 1526887 2560897 2778775 2366545 1122734 1254016 593214 1776132 463919 1783085 3214531 3057782 64 32 552203 402223 1121909 1388380 1162129 415722 666360 1163351 1637488 1876728 1685359 673798 2466145 64 64 551580 1122912 2895401 4911206 2782966 1734491 1825933 1206983 2901728 1207235 1781889 2133506 2780559 128 4 587259 1525366 1801559 3366950 1600898 1391307 1348096 547193 666360 458907 1486461 1831301 1998737 128 8 292218 1175381 1966197 3451829 2165599 1601619 1232122 1291619 3273329 1827104 1162858 1663987 1937151 128 16 650008 510099 4120180 4003449 2508627 1727493 1560181 1307583 2203579 1229980 603804 1911004 2669183 128 32 703200 1802599 2842966 2974289 2777020 1331977 3279734 1347551 1152291 684197 722704 907518 2466350 128 64 848280 1294308 2288112 1377038 1345725 659686 1997031 1439349 2903100 1267322 1968355 2560063 1506623 128 128 902120 551579 1305206 4727881 3046261 1405509 1802090 1085124 3649539 2066688 1423514 2609286 3039423 ...
2. Guarde la salida en una hoja de cálculo usando iozone -b
Para guardar la salida de iozone en una hoja de cálculo, use la opción -b como se muestra a continuación. -b significa binario e indica a iozone que escriba la salida de prueba en formato binario en una hoja de cálculo.
$ ./iozone -a -b output.xls
Nota:La opción -b se puede usar con cualquiera de los ejemplos mencionados a continuación.
A partir de los datos que se guardan en la hoja de cálculo, puede usar la función de gráfico de la herramienta de hoja de cálculo para crear algunos gráficos bonitos. El siguiente es un gráfico de muestra que se creó a partir de la salida de iozone.
Higo :gráfico IOZone
3. Ejecute solo un tipo específico de prueba usando iozone -i
Si está interesado en ejecutar solo un tipo específico de prueba, use la opción -i.
Sintaxis:
iozone -i [test-type]
El tipo de prueba es un valor numérico. Los siguientes son los distintos tipos de pruebas disponibles y su valor numérico.
- 0=escribir/reescribir
- 1=leer/releer
- 2=lectura/escritura aleatoria
- 3=Leer hacia atrás
- 4=Re-escribir-registro
- 5=lectura paso a paso
- 6=escribir/reescribir
- 7=leer/Volver a leer,
- 8=mezcla aleatoria
- 9=pwrite/Re-pwrite
- 10=leer/Volver a leer
- 11=pwritev/Re-pwritev
- 12=preadv/Re-preadv
El siguiente ejemplo ejecutará solo las pruebas de escritura (es decir, tanto escribir como reescribir). Como puede ver en la salida, las otras columnas están vacías.
$ ./iozone -a -i 0 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 353666 680969 64 8 477269 744768 64 16 429574 326442 64 32 557029 942148 64 64 680844 633214 128 4 187138 524591
Combina varios tipos de pruebas de yozono
También puede combinar varios tipos de pruebas especificando múltiples -i en la línea de comando.
Por ejemplo, el siguiente ejemplo probará los tipos de prueba de lectura y escritura.
$ ./iozone -a -i 0 -i 1 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 372112 407456 1520085 889086 64 8 385574 743960 3364024 2553333 64 16 496011 397459 3748273 1330586 64 32 499600 876631 2459558 4270078
4. Especifique el tamaño del archivo usando iozone -s
De forma predeterminada, iozone creará automáticamente archivos temporales de tamaño de 64k a 512M, para realizar varias pruebas.
La primera columna en la salida de iozone (con el encabezado de columna KB) indica el tamaño del archivo. Como vio en la salida anterior, comienza con un archivo de 64 KB y seguirá aumentando hasta 512 M (duplicando el tamaño del archivo cada vez).
En lugar de ejecutar la prueba para todos los tamaños de archivo, puede especificar el tamaño del archivo con la opción -s.
El siguiente ejemplo realizará una prueba de escritura solo para un tamaño de archivo de 1 MB (es decir, 1024 KB).
$ ./iozone -a -i 0 -s 1024 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 1024 4 469710 785882 1024 8 593621 1055581 1024 16 745286 1110539 1024 32 610585 1030184 1024 64 929225 1590130 1024 128 1009859 1672930 1024 256 1042711 2039603 1024 512 941942 1931895 1024 1024 1039504 706167
5. Especifique el tamaño del registro para probar usando iozone -r
Cuando ejecuta una prueba, para un tamaño de archivo específico, prueba con diferentes tamaños de registro que van desde 4k a 16M.
Si desea realizar pruebas de rendimiento de E/S de un subsistema de E/S que aloja la base de datos de Oracle, es posible que desee establecer el tamaño de registro en el iozone en el mismo valor del tamaño de bloque de la base de datos. La base de datos lee y escribe según el tamaño del bloque de la base de datos.
reclen significa Longitud de registro. En el ejemplo anterior, la segunda columna (con el encabezado de columna "reclen") indica la longitud del registro que debe usarse para probar IOzone. En el ejemplo anterior, para el tamaño de archivo de 1024 KB, la prueba de iozone usó varios tamaños de registro que van desde 4k hasta 16M para realizar la prueba de escritura.
En lugar de usar todos estos tamaños de longitud de registro predeterminados, también puede especificar el tamaño de registro que le gustaría probar.
El siguiente ejemplo ejecutará la prueba de escritura solo para una longitud de registro de 32k. En la salida, la segunda columna ahora solo mostrará 32.
$ ./iozone -a -i 0 -r 32 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 32 566551 820553 128 32 574098 1000000 256 32 826044 948043 512 32 801282 1560624 1024 32 859116 528901 2048 32 881206 1423096
6. Combine el tamaño del archivo con el tamaño del registro
También puede usar la opción -s y -r para especificar un tamaño de archivo temporal exacto y la longitud exacta del registro que debe probarse.
Por ejemplo, lo siguiente ejecutará la prueba de escritura usando un archivo de 2M con una longitud de registro de 1M
$ ./iozone -a -i 0 -s 2048 -r 1024 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 2048 1024 1065570 1871841
7. Prueba de rendimiento usando iozone -t
Para ejecutar el iozone en modo de rendimiento, utilice la opción -t. También debe especificar la cantidad de subprocesos que deben estar activos durante esta prueba.
El siguiente ejemplo ejecutará la prueba de rendimiento de iozone para escrituras usando 2 subprocesos. Tenga en cuenta que no puede combinar la opción -a con la opción -t.
$ ./iozone -i 0 -t 2 Children see throughput for 2 initial writers 1= 433194.53 KB/sec Parent sees throughput for 2 initial writers = 7372.12 KB/sec Min throughput per process = 0.00 KB/sec Max throughput per process = 433194.53 KB/sec Avg throughput per process = 216597.27 KB/sec Min xfer = 0.00 KB Children see throughput for 2 rewriters = 459924.70 KB/sec Parent sees throughput for 2 rewriters = 13049.40 KB/sec Min throughput per process = 225610.86 KB/sec Max throughput per process = 234313.84 KB/sec Avg throughput per process = 229962.35 KB/sec Min xfer = 488.00 KB
Para realizar el rendimiento de todos los tipos de prueba, elimine "-i 0" del ejemplo anterior, como se muestra a continuación.
$ ./iozone -t 2
8. Incluya la utilización de CPU usando iozone -+u
Mientras realiza la prueba de iozone, también puede indicarle a iozone que recopile la utilización de la CPU mediante la opción -+u.
El -+ delante de la opción puede parecer un poco extraño. Pero, tienes que dar el -+u completo (no solo -u, o +u) para que esto funcione correctamente.
El siguiente ejemplo ejecutará todas las pruebas e incluirá el informe de uso de la CPU como parte de la hoja de cálculo de Excel que genera.
$ ./iozone -a -+u -b output.xls
Nota:Esto mostrará la utilización de la CPU por separado para todas y cada una de las pruebas que realiza.
9. Aumente el tamaño del archivo usando iozone -g
Esto es importante. Si su sistema tiene más de 512 MB de RAM, debe aumentar el tamaño del archivo temporal que usa iozone para las pruebas. Si no lo hace, es posible que no obtenga resultados precisos, ya que el caché del búfer del sistema jugará un papel en ello.
Para un rendimiento de disco preciso, se recomienda tener un tamaño de archivo temporal 3 veces mayor que el tamaño de la memoria caché del búfer del sistema.
El siguiente ejemplo ejecutará iozone aumentando el tamaño máximo de archivo a 2 GB y ejecutará la prueba automática de iozone para pruebas de escritura.
$ ./iozone -a -g 2G -i 0 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 556674 1230677 64 8 278340 441320 64 16 608990 1454053 64 32 504125 1085411 64 64 571418 1279331 128 4 526602 961764 128 8 714730 518219 ...
10. Pruebe varios puntos de montaje juntos usando iozone -F
Al combinar varias opciones de iozone, puede realizar pruebas de E/S de disco en varios puntos de montaje, como se muestra a continuación.
Si tiene 2 puntos de montaje, puede iniciar 2 subprocesos iozone diferentes para crear archivos temporales en ambos puntos de montaje para realizar pruebas, como se muestra a continuación.
$ ./iozone -l 2 -u 2 -r 16k -s 512M -F /u01/tmp1 /u02/tmp2
- -l indica el número mínimo de procesos iozone que deben iniciarse
- -u indica el número máximo de procesos iozone que deben iniciarse
- -F debe contener varios valores. es decir, si especificamos 2 tanto en -l como en -u, deberíamos tener dos nombres de archivo aquí. Tenga en cuenta que solo es necesario que existan los puntos de montaje. El archivo especificado en la opción -F no necesita existir, ya que iozone creará este archivo temporal durante la prueba. En el ejemplo anterior, los puntos de montaje son /u01 y /u02. iozone creará automáticamente los archivos tmp1 y tmp2 con fines de prueba.
Artículos anteriores de la serie de supervisión y ajuste del rendimiento de Linux:
- Introducción a la supervisión y ajuste del rendimiento de Linux
- 15 ejemplos prácticos de comandos superiores de Linux
- 7 ejemplos prácticos de comandos PS para la supervisión de procesos
- 10 ejemplos útiles de Sar (Sysstat) para la supervisión del rendimiento de UNIX/Linux