Mostrando entradas con la etiqueta rendimiento. Mostrar todas las entradas
Mostrando entradas con la etiqueta rendimiento. Mostrar todas las entradas

09 diciembre 2015

Rightsize, Rightsize, Rightsize...

     ¿Rightsize? Si, cada dia es mas frecuente encontrarse con problemas de performance y de gestion de las conocidas como Monster VMs por una asignacion indebida de recursos a una maquina virtual, como si de un entorno fisico se tratase, aun sabiendo que posiblemente todos esos recursos no están correctamente aprovechados, ni siquiera la aplicacion esta diseñada para ello.

"No por asignar mas recursos a una VM se conseguirá mas performance, incluso puede producirse el efecto contrario"

     Es muy importante dedicar tiempo a realizar un dimesionamiento de las aplicaciones correcto, no solo para un uso mejor de los recursos del entorno de virtualizacion si no de la propio rendimiento de la VM y de las aplicaciones que en corran sobre ella.

     El ejemplo mas sencillo lo tenemos con el crecimiento scale-in (vertical, tambien conocido como scale-up) y el crecimeinto scale-out (horizontal)


     En un crecimiento scale-in debemos tener claro que las aplicaciones y el SO seran capaces de aprovechar la asignacion de mas memoria y CPU lo que posiblemente nos obligue a realizar modificaciones, por ejmeplo, en JAVA, si agregamos mas memoria RAM a la VM, deberiamos tocar los parametros de asignacion de la JVM, de lo contrario, la JVM seguiria disponiendo de la misma RAM que antes de su aumento.


     En un crecimiento scale-out, si conseguimos definir un building-block en la cual una VM con uan configuracion determinada de RAM y CPU, soporte por ejemplo un carga especifica de usuarios, ante eventos de crecimiento de demanda, sera mas sencillo desplegar desde la plantilla del building block tantas VMs como sean necesarias para soportan la nueva demanda, ahorrando ademas en tiempos de reconfiguracion y despliegue.

     Que se conseguimos con VMs mas pequeñas: al tener menos vCPU en estado iddle, el rendimeinto de una VMs en mas eficiente, reduciendose los valores de CPU Ready, CPU Wait y Co-Stop en la mayoria de las ocasiones (tendieno en cuenta que se realize un overcommit de los recursos del host ESXi de forma adecuada)

     A todo esto podemos añadirle las facilidades de getion de una VM mas pequeña e incluso poder protegerla con Fault Tolerace de VMware con tiempo de caida cero (downtime=0) que desde la version ESXi6 soporta ya 4 vCPU y hasta 64GB de RAM por VM protegida, unicamente hay un maximo de 8 vCPU protegidas por host ESXi lo que nos permite varias combinaciones.

    Como detalle a configurar para nota,  recordad cambiar en las BIOS de los host ESXi el performance en nivel HIGH, los valores balanced o low impactan negativamente en el rendimiento de las VM (en la mayoria de los servidores viene en modo balanced configurado de fabrica)

Rightsize, Rightsize and Rightsize


11 octubre 2013

VMware & Oracle performance tips on NFS NetApp storage

     Los problemas de rendimiento son tediosos de resolver y no siempre tienen su origen donde apuntan las primeras hipótesis cuando alguien destapa la caja de los truenos y se queja del bajo rendimiento de algún servidor virtualizado.

    Es muy habitual que por desconocimiento de la virtualizacion, se la culpe siempre en primer termino de todos los males... saber conectarse a un vCenter y crear una maquina virtual "no" es saber de virtualizacion.

     Siempre debe realizarse un trabajo conjunto de todas las áreas implicadas. Me explico, un problema de performance de una maquina virtual no es un problema exclusivo de VMware o del virtualizador de turno, es un problema en el que interviene muchos elementos y departamentos como Storage, Networking, BBDD, etc.
 
    La suma de acciones suele generar buenos resultados al final de los analisis de problemas de rendimiento y todos los departamentos suelen enriquecerse de esas experiencias... asumir una mejora no es culparse de un error si no aportar valor y conocimiento ..al hilo de lo cual os recuerdo lo importante de documentar todo lo que podamos "el ser humano es el unico animal que tropieza dos veces en la misma piedra, porque la primera no lo documenta".



Vamos al turrón con 3 puntos básicos que aunque focalizamos en VMware, NetApp y Oracle lo podemos hacer extensible a cualquier entorno virtual, de almacenamiento y de bbdd:

1-Aplicar best practices de NetApp (consultar antes de aplicar con el fabricante):

Foco de atención sobre:
-Revisar configuración del Networking del NFS: uso de VLAN aislando para trafico NFS, misma subnet red NFS servidor y NAS, reducir saltos de red fisica entre el servidor y la NAS, habilitar jumbo frames a nivel de NFS, utilizar tarjetas 10GbE, realizar teaming (vifs & etherchannel) y revisar políticas de balanceo.
-Revisar el alineado de los FileSystem y VM´s.
-Aplicar recomendaciones del plugin NetApp integrado en el vCenter (consultar antes con fabricante)
-Revisar capacidad de IOps de agregados y controladoras (Monitorizar con OnCommand Core)
-Revisar configuración de los agregados: “añadir discos físicos y forzar reallocate”, verificar planificación de la deduplicacion, revisar estado thinprovisioning y espacio libre en NAS, revisar planificación de snapshots, revisar configuración de RAID óptima para mayor rendimiento de VM´s criticas.
- Estudiar opción crear agregados flashpools con SSD.
-Estudiar opción conexión por FC para VM´s criticas.

Documentación relacionada:
NetApp Technology - Monitorización OnCommand-Core
NetApp Storage Best Practices for VMware vSphere
NetApp Technology - Alineación de Máquinas Virtuales
NetApp, Best Practices for File System Alignment in Virtual Environments
NetApp, location of the mbrscan and mbralign tools
Clustered Data ONTAP NFS Implementation Guide
NetApp Data Compression and Deduplication Deployment and Implementation Guide
VMware vSphere 5 on NetApp Clustered Data ONTAP 8.1
NetApp and VMware Virtual Infrastructure 3 Storage Best Practices (uno de los TR mas populares de NetApp)



2-Aplicar best practices de VMware para NFS:

Foco de atención sobre:
-Reasignación de los datastores (vol): tamaños, y disposición en los aggr
-Redimensionar nº de VM´s en diferentes datastores y agruparlas por tipo de SO
-Reasignar VM´s criticas en vols independientes.
-Verificar estado VAAI para NFS (opciones limitadas)
-Revisar y optimizar shares de Disco, CPU y RAM de las VM´s criticas
-Crear varios vmkernel para NFS con diferentes ip´s y asignar diferentes nics de salida para repartir trafico. ( 1 vSwitch para NFS con 2 vmkernel > vmkernel01 con nic1 activa y nic2 pasiva, vmkernel02 con nic2 activa y nic1 pasiva)
-Configurar vDS que permita agregar varias nics fisicas en el mismo port group para NFS y obtener mayor capacidad de carga y/o balanceo (IP Hash, con limitaciones)
-Modificar parámetros avanzados de NFS

Documentación relacionada:
Increasing the default value that defines the maximum number of NFS mounts on an ESXi/ESX host
NFS with IP Hash Load Balancing
Best Practices for Running VMware vSphere on Network-Attached Storage (NAS)
Verify Hardware Acceleration Status for NAS
Performance Implications of Storage I/O Control–Enabled NFS Datastores in VMware vSphere 5.0
Best Practices for Performance Tuning of Latency-Sensitive Workloads in vSphere Virtual Machines
Performance Implications of Storage I/O Control-Enabled NFS Datastores
Load Balancing with NFS and Round-Robin DNS

3-Aplicar best practices de VMware para Oracle (BBDD):

Foco de atención sobre:
-No realizar overcommit de CPU y RAM (Reserva de RAM: virtual memory size = Oracle System Global Area + operating system)
-Uso de menos vCPU es más eficiente que uso de muchas vCPU
-Alineado de FS con la NAS
-Habilitar JumboFrames en VMware NFS y NAS
-Utilizar Paravirtual SCSI  (PVSCSI)  kb.vmware.com/kb/1010398

Documentación relacionada:
Running Business-Critical Applications on Oracle RAC, VMware and NetApp
Oracle® Databases on VMware vSphere™ 4 ESSENTIAL DEPLOYMENT TIPS
VMware vCenter Server 5.1 Database Performance Improvements and Best Practices for Large-Scale Environments
Oracle Databases on VMware VMware vSphere 5 RAC Workload Characterization Study (VMware VMFS)
Oracle Databases on VMware High Availability
Oracle Databases on VMware Best Practices Guide
Oracle Databases on VMware RAC Deployment Guide
Oracle Dev/Test on VMware vSphereand NetApp Storage Solutions Overview


...Mucho que leer y mucho que aprender :-)

05 septiembre 2013

Visual ESXTOP GUI for VMware

The VMware visualESXTOP is a tool from the VMware Labs to view in windows-mode (hehehe) the results of the cli command ESXTOP and with a friendly option to generate some graphics

1- Download it from: http://labs.vmware.com/flings/visualesxtop  and unzip files:



2- Change PATH on the System Properties - Advanced System Settings - Advanced - Environmet Variables - System Variables: "PATH=C:\Program Files (x86)\Java\jre6\bin;
(Be carefull with this changes , and backup all the the info you modify for a restore case)


3- Start from CMD or click on the "visualEsxtop.bat" and connect to a ESX host or to a vCenter Server from Menu; File - Connect to Live-server, or start it from powercli:




This will open a new window with the GUI:

Now, you can review al the metrics from the diferents tabs:

...And generate some graphics , for example de% CPU ready:





.

29 agosto 2013

How to test network performance with Netperf

As we can read at the offcial webpage: "Netperf is a benchmark that can be used to measure the performance of many different types of networking. It provides tests for both unidirecitonal throughput, and end-to-end latency"

It´s so usefull to test network performance between two virtual machines , for example from a database server to the aplicacion client.

First, download Netperf for Linux or Windows O.S and install or unzip it:


    Linux:  http://www.netperf.org/netperf/DownloadNetperf.html

    Windows: https://i18n-zh.googlecode.com/files/NetPerf-2.4.5-w32.zip



See a Windows example:

-Start server side. You can specified a port with -p





-Start client side. With -h you can see all the options.









In this case, we get a test with the result 524,55 Mbit/s (Mbps) between two virtual machines.


The simple test run for 10seconds, but this can be changed to. Netperf -h:

E:\datos\NetPerf-2.4.5-w32>netperf -h

Usage: netperf [global options] -- [test options]

Global options:
    -a send,recv      Set the local send,recv buffer alignment
    -A send,recv      Set the remote send,recv buffer alignment
    -B brandstr       Specify a string to be emitted with brief output
    -c [cpu_rate]     Report local CPU usage
    -C [cpu_rate]     Report remote CPU usage
    -d                Increase debugging output
    -D [secs,units] * Display interim results at least every secs seconds
                      using units as the initial guess for units per second
    -f G|M|K|g|m|k    Set the output units
    -F fill_file      Pre-fill buffers with data from fill_file
    -h                Display this text
    -H name|ip,fam *  Specify the target machine and/or local ip and family
    -i max,min        Specify the max and min number of iterations (15,1)
    -I lvl[,intvl]    Specify confidence level (95 or 99) (99)
                      and confidence interval in percentage (10)
    -l testlen        Specify test duration (>0 secs) (<0 bytes="" font="" trans="">
    -L name|ip,fam *  Specify the local ip|name and address family
    -o send,recv      Set the local send,recv buffer offsets
    -O send,recv      Set the remote send,recv buffer offset
    -n numcpu         Set the number of processors for CPU util
    -N                Establish no control connection, do 'send' side only
    -p port,lport*    Specify netserver port number and/or local port
    -P 0|1            Don't/Do display test headers
    -r                Allow confidence to be hit on result only
    -t testname       Specify test to perform
    -T lcpu,rcpu      Request netperf/netserver be bound to local/remote cpu
    -v verbosity      Specify the verbosity level
    -W send,recv      Set the number of send,recv buffers
    -v level          Set the verbosity level (default 1, min 0)
    -V                Display the netperf version and exit

For those options taking two parms, at least one must be specified;
specifying one value without a comma will set both parms to that
value, specifying a value with a leading comma will set just the second
parm, a value with a trailing comma will set just the first. To set
each parm to unique values, specify both and separate them with a
comma.
* For these options taking two parms, specifying one value with no comma
will only set the first parms and will leave the second at the default
value. To set the second value it must be preceded with a comma or be a
comma-separated pair. This is to retain previous netperf behaviour.
E:\datos\NetPerf-2.4.5-w32>


Take care with the units (about caudal, no about velocity):

106 bit = 1 000 000 bit/s = 1 Mbit/s

1 megabyte/s = 8 megabit/s

1 megabit/s = 1000 kilobit/s = 125 kilobyte/s

UnitBitsBits / 1,000,000
Mega-bit1,000,0001.0
Mebi-bit1,048,5761.05
Mega-byte8,000,0008.0
Mebi-byte8,388,6088.39
Links:




19 marzo 2013

La importancia de alinear las maquinas virtuales

Principio basico: "Las maquinas virtuales alineadas tienen mas rendimiento que las que no lo están".

Particularmente dejemos notar que esta mejoria se aprecia en Datastores con especial intensidad de uso de disco y con muchas vm´s alojadas, en datastores con pocas vm´s o que tiene poco uso de disco (I/O) esta mejoria no es tan apreciable. En cualquier caso es recomendable alinear las maquinas virtuales y sobre todo las plantillas que tengamos para desplegar vm´s.

Para verificar que maquinas estan alineadas podemos utilizar herramientas gratuitas como vDisk Informer o UberAlign o bien mediante el comando de las vmkfstools "fdisk -lu" donde el resultado del parametro offset debe ser 128 (que se corresponde con los 64k de los VMFS).

En el siguiente video de NetApp se explica la problematica de alineas las maquinas virtuales, que afectan a todo tipo de almacenamiento de cualquier fabricante.

24 febrero 2013

Analizar disc bottlenecks en VMware

Para analizar los cuellos de botella en VMware podemos utilizar las gráficas del performance de los host o bien utilizando el comando esxtop.  Básicamente tenemos que fijarnos en los parámetros que nos reportan info sobre la latencia que determinara en buen o mal rendimiento del storage (cabina).

>>>>Con la grafica performance:

Kernel disk command latency: mide el tiempo que tarda el VMkernel en procesar una peticion scsi y no debe ser superior a 3 ms. Si es superior el problema puede deberse a un carga muy alta de trabajo o bien en el ESXi o bien en la cabina, lo que quiere decir que se estan enviados mas throughput a la cabina de la que puede soportar.

Physical device command latency: mide el tiempo que el disco de la cabina necesita para ejecutar completamente una peticion scsi y no debe ser superior a 15 ms. Si es superior el problema esta en la cabina, esos si, depende del fabricante y de lo epserado para su rendimiento ya que no es lo mismo un cabina con discos SAS que SATA, o que este conectada con NFS o FC. Una solucion seria mover los vmdk a una lun con mas discos fisicos por debajo o agregar mas discos fisicos  a la LUN.

>>>>Con ESXTOP:


KAVG: "Esta es la cantidad de tiempo que el comando pasa en el VMkernel".  El tiempo o latencia que se produce desde que se pide un dato a la cabina hasta que lo procesa VMkernel del ESXi. Su valor debe rondar el 0.

DAVG: "Este es el tiempo promedio de respuesta en milisegundos por comando enviado al dispositivo"  Es el tiempo o latencia desde que el ESXi ejecuta el comando de peticion del dato al disco (KAVG) hasta que la cabina devuelve este dato. Si este valor esta por encima de los 20 ms el problema esta en la cabina.

GAVG: (KAVG + DAVG). "Este es el tiempo de respuesta, que es percibido por el sistema operativo Guest. Este número se calcula con la fórmula:  DAVG + KAVG = GAVG". Este es el valor de latencia que qfecta a la maquina virtual directamente.

Segun VMware , ninguno de estos valores debe sobrepasar los 10 ms durante periodos prolongados de tiempo, lo que no dicen es cuanto consideran que es un periodo prolongado de tiempo.

>>>>Revisando los LOG:

Si se producen problemas de latencia con tiempos altos, podemos ver en los logs los errores iscsi en las siguientes rutas en funcion de la version del ESXi:

          ESX 3.5 and 4.x – /var/log/vmkernel

         ESXi 3.5 and 4.x – /var/log/messages 

         ESXi 5.x - /var/log/vmkernel.log

El tipo de registro de almacenamiento que puede ver en estos archivos depende de la configuración del servidor. Usted puede encontrar el valor de estas opciones en:  Host > Configuration > Advanced Settings > SCSI > SCSI.Log or SCSI.Print.

>>>Lectura recomendada: vSphere Monitoring and Performance vSphere 5.1

20 junio 2012

Valores de rendimiento para VMware (VMware Performance Indicators)

Para saber si el rendimiento de nuestras maquinas virtuales sobre una plataforma VMware vSphere es bueno o malo, debemos fijarnos en las siguientes métricas y valores máximos para considerar que el performance es aceptable:

Performance AreaObjectCounterAcceptable range
CPUHostUsageLess than 80%
CPUVirtual MachineReadyLess than 3%
MemoryHostConsumedGeneral trend is stable
MemoryHostBalloon/Swap used0 Kb
DiskSpecific datastoreKernel command latencyLess than 3ms
DiskSpecific datastorePhysical device command latencyLess than 20ms
DiskSpecific datastoreAverage commands issued per secondLess than LUN capacity
NetworkHostReceive packets dropped/Transmit packets dropped0 packets





.