January 17, 2014

Cacería de brujas… problemas de rendimiento.

Es relativamente regular que afrontamos temas de “el sistema esta lento” y pues debemos dedicarnos a la cacería de brujas para determinar porque ese componente de nuestro ambiente no da un rendimiento óptimo.

Sinceramente esto no es tan simple pues la mezcla de componentes agrega complejidad a nuestra ecuación, además existen tareas previas a la implementación de un servicio que muchas veces no son ejecutadas.

Veamos algunos puntos que considero le pueden ayudar:

Análisis de capacidad.

Previo a cualquier implementación o cambio es altamente sugerido evaluar la capacidad actual de los sistemas y su rendimiento, tanto en la actualidad como en la proyección estimada.

Además se deben contemplar temas como proyectos (tanto actuales como futuros), así como crecimiento promedio de la institución y otros. Esto debe cotejarse con planes similares de otras áreas para que dicho estudio sea más asertivo.

Así con estos datos se podrá pronosticar de una mejor manera las necesidades de los sistemas para poder satisfacer a los clientes.

Desde luego junto a esto se debe desarrollar la documentación apropiada de los cambios, evaluación de riesgo, procesos de reversión, criterios de satisfacción y demás.

Configuración para un rendimiento óptimo.

Según la función que vaya a ejecutar el equipo es altamente sugerido realizar ciertos ajustes explícitos para así obtener el máximo rendimiento, Microsoft ha publicado una serie de artículos para este fin, los cuales contemplan diferentes escenarios o funciones según la versión de sistema operativo que se esté utilizando.

· Performance Tuning Guidelines for Windows Server 2012R2

· Performance Tuning Guidelines for Windows Server 2012

· Performance Tuning Guidelines for Windows Server 2008R2

· Performance Tuning Guidelines for Windows Server 2003

Adicionalmente se sugiere consultar la documentación del producto así como aquella del vendedor del hardware.

Puntos como por ejemplo deshabilitar RSS y TCP Chimney pueden tener un gran impacto en el rendimiento general.

Virtualización?

Wow esto a veces se presenta como la cura de todos los males, pero estamos conscientes de las recomendaciones y limitaciones de la virtualización?

Algo así de simple como que usted deberá asignar entre un 110% y 125% de los recursos que antes tenía a un equipo virtual para obtener un rendimiento similar al que obtenía cuando era basado en metal.

A continuación tres artículos que le aseguro serán muy útiles.

6 Best Practices for Physical Servers Hosting Hyper-V Roles

http://technet.microsoft.com/en-us/magazine/dd744830.aspx

Hyper-V: Deployment Best Practices

http://social.technet.microsoft.com/wiki/contents/articles/215.hyper-v-deployment-best-practices.aspx

Planning for Hyper-V

http://technet.microsoft.com/en-us/library/dd283088(v=WS.10).aspx

Mejoras al MaxConcurrentApi

Esto se refiera a un parámetro que aumenta la cantidad de hilos para autenticación que maneja el equipo, con lo cual se mejora la experiencia de usuario final. No es algo estrictamente relacionado a rendimiento pero si a cómo se maneja el proceso de autenticación, sin el cual no tenemos acceso a nuestros preciados datos.

http://blogs.technet.com/b/ad/archive/2008/09/23/ntlm-and-maxconcurrentapi-concerns.aspx

http://support.microsoft.com/kb/326040

Optimización de los perfiles de poder

Como parte de las iniciativas de “Green IT” y otras similares que buscan ahorrar en temas de consumo energético, el perfil de poder por defecto es el “Balanceado”.

Dicho conjunto de parámetros busca un consumo responsable de energía pero limita por ejemplo la utilización del procesador (down clocking), lo cual no permite obtener el rendimiento máximo de este.

Es por esto que se sugiere utilizar el perfil de poder de “Alto Rendimiento”.

Para asegurar una configuración homogénea es sugerido aplicar estos parámetros por medio de una política grupal o GPO.

clip_image002

Más información sobre este tema puede encontrarse en el siguiente enlace http://support.microsoft.com/kb/2207548

Configuración SMB v2.0

Server Message Block (SMB) es el protocolo por defecto para compartir archivos en equipos Windows. Su última versión la 2.0 fue dimensionada para satisfacer las necesidades de los archivos de servidores actuales y futuros, esta versión permite enviar múltiples comandos en un mismo paquete (reduciendo así la cantidad de paquetes enviados entre cliente-servidor), tamaños de buffer mucho mayores, más conexiones concurrentes al igual que una cantidad mayor de recursos compartidos, soporte de Symbolic Links y Durable Handles entre otros.

Ahora bien existen casos donde por ejemplo la coexistencia de múltiples versiones de sistemas operativos, así como diferentes capacidades de tarjetas de red y otros que ameritan SMB v2.0 sea deshabilitado.

Esto se puede lograr con un rápido cambio en el Windows Registry, específicamente en la llave HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB2

clip_image004

De hecho los mismos documentos de “Performance tuning” sugieren no habilitar otros servicios y/o prestaciones de SMB a menos que sean estrictamente necesarios/sugeridos tal como SMB signing, cache de lado de clientes, minifiltros, compresión NTFS, encriptado NTFS y otros.

Para mayor información refiérase a la sección “Tuning Parameters for SMB File Servers” de dicho documento.

Adicionalmente tareas de copiado de archivos pueden ser también optimizadas por ejemplo con los parámetros /Q y /K de xcopy, el primero ayuda a reducir la carga al procesador al reducir la información que se muestra en la consola y el segundo reduce el tráfico en la red.

http://technet.microsoft.com/en-us/library/bb491035.aspx

Otro ejemplo útil es la utilización del parámetro /MT en robocopy el cual mejora los tiempos de transferencia de archivos al utilizar múltiples threads.

http://technet.microsoft.com/en-us/library/cc733145(v=WS.10).aspx

Aplicación de actualizaciones.

Parte del procedimiento de mantenimiento de los equipos es la instalación de las actualizaciones en un tiempo apropiado.

Microsoft publica las actualizaciones el segundo Martes de cada mes, adicionalmente existen excepciones donde una actualización es publicada fuera de este periodo por su alta prioridad.

Deben también contemplarse las actualizaciones de productos de terceros así como del fabricante de hardware.

Este es un tema tabú, pero ya luego escribiré un poco sobre todo el largo proceso que Microsoft ejecuta previo a la publicación de las actualizaciones.

Recuerde también que la carencia de estas puede llevarle inclusive a un punto de no obtener soporte por parte del fabricante.

En el caso de máquinas virtuales también contemplarse las actualizaciones de las herramientas y controladores propios de estos llamados Integration Services.

En la siguiente imagen se muestra como obtener el número de versión del Integration Services de un equipo o bien visite el siguiente enlace para conocer otro método.

clip_image006

http://technet.microsoft.com/en-us/library/ee207413(v=WS.10).aspx

Otro recurso valioso es el sitio Microsoft Update Catalog donde usted puede obtener información de las actualizaciones y también descargarlas individualmente.

Configuración del antivirus.

No, instalar un antivirus y dar media vuelta no basta.

Dichos productos pueden tener un gran impacto en el rendimiento y operación de sus equipos, para más información visite:

http://support.microsoft.com/kb/822158

Veamos por ejemplo algunas de las recomendaciones para los equipos que ejecutan Hyper-V:

· Default virtual machine configuration directory (C:\ProgramData\Microsoft\Windows\Hyper-V)

· Custom virtual machine configuration directories

· Default virtual hard disk drive directory (C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks)

· Custom virtual hard disk drive directories

· Custom replication data directories, if you are using Hyper-V Replica

· Snapshot directories

· Vmms.exe (Note: This file may have to be configured as a process exclusion within the antivirus software.)

· Vmwp.exe (Note: This file may have to be configured as a process exclusion within the antivirus software.)

Almacenaje

Esto del almacenaje corporativo no es lo mío, simplemente paso molestando a los señores que lo administran solicitando más espacio (lo cual creo todos hacemos) pero veamos un par de cosas...

Según las mejores prácticas es altamente recomendado implementar discos que funcionen a 10,000RPM para así obtener un alto rendimiento de estos.

También creo van a querer recordar que si hacen un análisis de rendimiento y este muestra un cuello de botella en las colas de disco, pero los tiempos de respuesta de escritura/lectura están bien es sugerido mirar a los HBAs o fabrics, si por el contrario no hay colas en los discos, pero los tiempos de lectura/escritura están por arriba de los 15 (preocupante) o 25 (muy preocupante) milisegundos entonces esto sugiera revisar el almacenamiento en sí.

Quizás su aplicativo/servidor necesita discos dedicados versus un volumen X, también hay casos donde un pass-thru disk puede ser la solución, esto cuando tenemos virtualización presente.

Como dije esto no es lo mío pero acá encontraran bastante información http://mcpmag.com/articles/2011/05/12/how-to-speak-san-ish.aspx

Y la red?

Ya sea físico o virtual, tener tarjetas de red dedicadas nos puede ayudar muchísimo por ejemplo escenarios donde necesitas replicar información, dedícale una tarjeta!

Y si hablamos de Hyper-V pues aún más, no creo que vayas a obtener un rendimiento óptimo si en una misma tarjeta de red están tu Exchange y ese aplicativo clave al que N usuarios de la compañía se conecta.

Ahora, que hay entre los servidores? E visto casos donde un equipo de ruteo no está configurado apropiadamente y este causa un cuello de botella. No les va a agradar, pero igual contacta a los compañeros de redes y verifica esto.

Modificar VMQ (Hyper-V)

Parte de las prestaciones del sistema operativo en conjunto con las tarjetas de red permiten la optimización del control del tráfico en estas, dicha prestación debe manipularse explícitamente en la o las tarjetas donde es requerido, esto es llamado Virtual Machine Queue.

http://technet.microsoft.com/en-us/library/gg162704(v=ws.10).aspx

https://social.technet.microsoft.com/wiki/contents/articles/13066.hyper-v-vmq-should-be-enabled-on-vmq-capable-physical-network-adapters-bound-to-an-external-virtual-switch.aspx

Bueno, ahora creo que la próxima vez que alguien le cuestione sobre el rendimiento de algún componente del ambiente usted se divertirá un buen rato mientras analiza los N ingredientes de esta dulce receta.

Hasta pronto!

~danny (aka daemonR00t)