I/O Analyzer

En este documento repasaremos una utilidad de los Labs de VMware que nos servirá para testear nuestro sistema de almacenamiento, bajo un virtual appliance llamado VMware IO Analyzer. Este sencillo appliance nos mostrará unas gráficas de rendimiento a nivel de MV y de host, utilizará para ello Iometer & esxtop,

Nos descargaremos el appliance desde la web de VMware Labs, vendrá en formato OVF y lo importaremos con el cliente de VMware en nuestra infraestructura virtual.

 

Una vez desplegado el appliance, antes de encenderlo, le podremos crear un disco duro adicional que será donde hagamos los tests, indicaremos que el disco esté prerellenado con ‘Thick Provision Eager Zeroed’ y lo ubicaremos en el datastore donde querramos hacer las pruebas. Borraremos además el de 100Mb que trae,

 

Encendemos el appliance virtual, entramos en su consola y seleccionaremos la opción de «Configure Network» para configurar los parámetros de red,

 

Configuraremos un direccionamiento IP estático o dinámico.

 

Una vez estemos ya con una sesión iniciada ya podremos desde otro equipo conectarnos con un navegador.

 

Deberemos agregar los hosts en los cuales tenemos los appliance de IO Analyzer para realizar el benchmark en nuestra SAN, todo esto desde «IOMETER TESTS»

 

Posteriormente seleccionaremos cada host, cada vapp de IO Analyzer, un Workload para testear y la dirección IP del vapp. Introduciremos varias MV’s contra distintos/mismos datastores para comprobar el comportamiento de la(s) cabina(s). Indicaremos un mínimo de 120segundos, recomendable entre 5 y 10 minutos.

Podremos guardar estas configuraciones para cargarlas posteriormente, vienen varias plantillas de ejemplo, en este caso utilizaré la de ‘Exchange_2007.icf’, además de las siguientes:

– Exchange 2003 – 4k block 80% Random – 60% Read
– Exchange 2007 – 8k block 80% Random – 55% Read
– SQL Server – 16k block 100% Random -66% Read
– Oracle OLTP – 8k block 88% Random – 72% Read
– Oracle DW – 32k block 20% Random – 90% Read
– Max IOPS 4k block 0% Random – 100% Read
– Max TP – 32k block 0 % Random – 100% Read

* Si no obtenemos resultados y tenemos un error ‘InvalidEsxtopCsvFile’ podrá ser que no tenemos conexión a los host o que tenemos algún carácter especial en el password de root (se solucionaría introduciendo el carácter » antes del símbolo).

 

Durante el proceso de estrés veremos cómo en las MV de IO Analyzer cargará el Iometer de forma automatizada, podremos ir a la pestaña «Results Display» para ir viendo el proceso antes de esperar a los reports 🙂

 

Una vez transcurrido el tiempo, iremos a la pestaña «RESULTS» & escogeremos el informe. Esta imagen es de un entorno ‘laboratorio’ muy pobre, en la que hemos escaneado unicamente desde un vapp un disco en un datastore.

Observaremos unas estadísticas a nivel de guest (vistal del appliance de Iometer) y a nivel de host (esxtop). A nivel de guest:

– IOPS: Número de operaciones de E/S por segundo.
– ReadIOPS: Número de operaciones de lectura por segundo.
– WriteIOPS: Número de operaciones de escritura por segundo.
– MBPS: Throughput total por segundo.
– ReadMBPS: Throughput de lectura por segundo.
– WriteMBPS: Throughput de escritura por segundo.

A nivel de host:

– CMD’s: Número de operaciones de E/S por segundo.
– READS/s: Número de operaciones de lectura por segundo.
– WRITES/s: Número de operaciones de escritura por segundo.
– MBREADS/s: Throughput de lectura por segundo.
– MBWRITES/s: Throughput de escritura por segundo.
– DAVG/cmd (msec): La latencia entre las HBA y los discos.
– KAVG/cmd (msec): Latencia creada por el vmkernel (debería ser cercana a 0.00 ms).
– GAVG/cmd (sec): Latencia total vista por el guest (DAVG + KAVG)
– QAVG/cmd (sec): La latencia media de la cola.

 

Datos como referencia:

– Discos de 7200 rpm (SATA) entre 75 – 100 IOPS.
– Discos de 10K rpm (SATA) entre 125 – 150 IOPS.
– Discos de 10K rpm (SAS) sobre 140 IOPS.
– Discos de 15K rpm (SAS) entre 175 – 210 IOPS.
– Discos SSD desde 6000 IOPS!!!

 

Esta otra imagen, con algo mayor rendimiento ya que es un entorno de ‘producción’, veremos el escaneo combinado de dos máquinas sobre dos datastores distintos ubicados en dos cabinas distinas, nos serviría como comparativa clara.

 

Si queremos, podremos grabar el comportamiento de una de nuestras máquinas con un proceso manual en el que exportaremos nuestra carga actual para luego importarlo en IO Analyzer. Para ello nos apoyaremos en el comando ‘vscsiStats’ para obtener las estadísticas de la MV, si ejecutamos ‘vscsiStats -l’ nos listará todas las MVs de este host con sus worldGroupID (GID) y sus discos virtuales (handleID). Con ‘vscsiStats -s -t -w GID -i handleID’ comenzaremos a recolectar la información de la carga en dicho vHD para posteriormente reproducirlo. Guardaremos en un archivo la traza con ‘logchannellogger vscsiStats-traceChannel /tmp/stats.log’

 

Pararemos el proceso con ‘CTR + X’ cuando tengamos suficiente información, además pararemos el proceso de recolección con ‘vscsiStats -x -w GID -i handleID’.

Con ‘vscsiStats -e /tmp/stats.log > /tmp/stats.csv’ convertiremos los resultados en un fichero CSV.

 

Lo primero será subir las trazas desde «TRACE UPLOAD», indicarle un nombre & descripción, le daremos la ruta completa del fichero en formato CSV además del nombre del host que lo tiene & el password de root. «Upload»,

 

Seleccionaremos como antes un host, la vapp de IOAnalyzer y la traza recién generada, indicaremos el disco donde realizará el análisis, la velocidad de ejecución (0.5x, 1.0x, 2.0x…) & le damos a «Run»,

 

Y listo, veremos el resultado de unos análisis previamente ejecutados en otra MV que hemos trasladado a esta para probar un nuevo almacenamiento, etc…

Héctor Herrero