Blog gratis
Reportar
Editar
¡Crea tu blog!
Compartir
¡Sorpréndeme!
img
img

 

 

SQL Server
Blog. (Apuntes y Recopilaciones) por Norman M. Pardell

img
img

Mejora de rendimiento para SQL Server sobre VMwaren en host ESXi

Aqui os cuento como mejoro el rendimiento de SQL Server sobre VMwaren en host ESXi. Y Como trabajar con el hyperthreading y la afinidad de vCPUs a cores en host ESXi.

Mis mejoras parten de que el hyperthreading, en los hosts ESXi lo habilitamos desde cierta versión por recomendación de VMware, pero en un principio no tenía muy claro cómo se “traslada” o no el hyperthreading a las VMs.

Investigando os puedo mostrar que Existían algunas opciones al respecto a nivel de VM. Por defecto trabajabamos todas en “Any”:



Sobre la afinidad de vCPUs a cores. Sé que se puede hacer (aunque no tenía claro cómo…). Creía recordar haber leído que está desaconsejado en cuanto a mejora de asignación/compartición de recursos para otras VMs, pero me puse a investigar…

 

Y os cuento como funciona:

 

Tema Afinidad de CPU

No es necesario, ni es recomendable por afecta al scheduling de las vCPUs y no permite el vMotion ni el Storage vMotion. Y digo que no es necesario, porque los host ESXi del cluster donde reside la VM tienen arquitectura NUMA, con lo cual el hipervisor siempre tratará de ejecutar todos los vCPUs de la VM en el mismo procesador de n-core para tomar ventaja de la localización de memoria que trae este tipo de arquitectura. Mas info http://frankdenneman.nl/2010/02/sizing-vms-and-numa-nodes/

 

Sobre los problemas de rendimiento de SQL sobre VM

Es necesario recalcar que las VM con SQL con respecto a las físicas sólo existe una pérdida de un 5-8% de rendimiento (en el peor de los casos) y muchas veces este pequeño desfase de rendimiento no supone problemas importantes. También se debe tomar en cuenta que si la VM tiene los mismos vCPUs y memoria que era una máquina física (si las comparamos), pero no por eso debe tener un rendimiento cercano. Al contrario, mientras más vCPU tenga una VM más difícil será para el hipervisor asignarle recursos a esta VM. Por tanto, asignarle la misma cantidad de vCPUs a la VM de forma innecesaria genera problemas de rendimiento. Se debería comenzar asignando pocos vCPUs e ir incrementando si fuera necesario.

 

Recomendaciones para esta VM:

 

1.- Disminuir la cantidad de vCPUs. La por ejemplo, la VM tiene 8 vCPUs, recomiendo bajar a 4 vCPUs o como mínimo a 6 vCPUs. (esto es por temas de la arquitectura NUMA que tienen los hosts donde residen estas VMs). Es muy probable que la distribución de los vCPUs en los nodos NUMA, ya que afectando al rendimiento de la VM.

 

2.- Para tomar ventaja de la arquitetura Intel Nehalem que tienen los hosts, se deberían activar Large Pages en el Sistema Operativo de la VM y en el SQL (en los ESXi ya está habilitado por defecto). Y cuidado con esta nota técnica de Microsoft http://support.microsoft.com/kb/975992

 

3.- Además de verificar que el hipervisor tenga suficientes recursos de CPU y Memoria, reservar Mhz y RAM si es necesario, no tener varias VMs de alto I/O en el mismo datastore y seguir las recomendaciones de Microsoft para SQL server (http://technet.microsoft.com/library/Cc966534)

 

Fuentes:

http://www.vmware.com/files/pdf/sql_server_best_practices_guide.pdf  Lectura recomendable de la pagina 6 a 10 (el resto es “lata”)

http://kb.vmware.com/kb/1002951 --> Tips for configuring Microsoft SQL Server in a virtual machine

http://communities.vmware.com/docs/DOC-8964

 

Tema Hyperthreading:

Resumiendo: el hardware virtual de las VMs no tiene hyperthreading; sin embargo, el ESXi, por defecto, sí planifica diferentes vCPUS (incluso de diferentes VMs), en sendos threads de un core dado, por lo que en la práctica sí está habilitado.

 

Tenemos la opción de evitarlo seleccionando la opción “HT = NONE” en todas las VMs SQL, con lo cual, cada vCPU de un SQL se ejecutará, en un momento dado, en un “core monohilo”.

 

A partir de ahora, en los host ESX servidor SQL debe ir con Hyperthreading deshabilitado.

 

Podemos hacer que la VM, vea los procesadores como un solo procesador fiscio (six-core o del número de cores que dispoga el host ESX, pero esta opción no mejorará mucho el rendimiento):

En el caso de que cada procesador sea de 8-cores:

· Edit Settings, Configuration Parameters, y añadir la siguiente línea: cpuid.coresPerSocket 8

 

Sobre todos para poder jugar con temas de paralelismo en SQL Server… Ya que si no activamos la anterior opción, la VM o SQL verán los procesadores como si fueran MONO-Core.

 

SERVIDORES SQL

Por recomendación de Microsoft, conviene deshabilitar Hyperthreading en servidores con SQL Server. Como la recomendación de VMware, desde vSphere 4.0, es habilitar HT a nivel ESXi, simulamos la no utilización de HT denegando la compartición de dos threads de cada core, a nivel de VM. Configuramos lo siguiente sólo para VMs con SQL Server:

 

Botón derecho, Edit Settings, y seleccionamos la opción “None” indicada

 

 

 

 

Apunte y recopilación por Norman M. Pardell

Puedes consultarme, si deseas cualquier aclaración, pregunta o sugerencia en: Contacto, contestaré tan pronto como me sea posible.

 

 


 

 

 

 

 

 

publicado por normanmpardell a las 11:34 · Sin comentarios  ·  Recomendar
Comentarios (0) ·  Enviar comentario
Esta entrada no admite comentarios.
img
.Sobre mí
FOTO

Norman M. Pardell

MCITP: Database Administrator & Database Developer, SQL Server 2008. MCC Award Certificate. Consultor Senior de bases de datos en Capgemini España, S.L. Asesoramiento en implementación, desarrollo y gestión de bases de datos en grandes compañías. Actualmente, asignado a proyecto en compañía líder en el sector energético global. Más de 10 años trabajando con SQL Server (y otros gestores de BBDD)

» Ver perfil

img
.Secciones
» Inicio
img
.Enlaces
» Microsoft MSDN Foros
» Windows Server 2012
img
.Más leídos
» Asignar la cantidad correcta de Memoria para SQL Server
» Base de Datos Sospechosa (Suspect)
» Como modificar la Intercalación (Collation) en SQL Server
» Como renombrar una instancia de SQL Server. sp_dropserver. sp_addserver
» Detectar bloqueos. SQL Server V.2005 y superiores
» Funciones SQL Server. Funciones escalares y funciones con valores de tabla.
» Integridad y corrupción en las bases de datos: DBCC CHECKDB
» Log de transacciones ( .ldf ). SQL Server.
» Migrando SQL Server 2005, 2008, 2008 R2 a SQL Server 2012
» Transacciones activas. SQL server 2008
img
.Nube de tags [?]
                                                           
img img
FULLServices Network | Crear blog | Privacidad