¿Puedo usar la memoria dinámica de Hyper-V con Exchange y SQL Server?
Como sabéis ahora Hyper-V nos permite configurar memoria dinámica, esto implica que si una maquina virtual lo requiere se le ira añadiendo memoria en caliente según los parámetros de configuración que realicemos.
Para los que no conozcáis la memoria dinámica o tengáis dudas aun sobre su funcionamiento os remito al blog de mi compañero David Cervigon en el que podéis encontrar un estupendo post sobre el tema: https://blogs.technet.com/b/davidcervigon/archive/2010/10/12/dynamic-memory-introducci-243-n-y-recursos.aspx
Ahora la pregunta es: ¿puedo usar memoria dinámica en SQL Server y Exchange?, y añado ¿es buena idea?
Para empezar, gestionar mejor los recursos siempre es una buena idea así que por lo menos debemos evaluarlo, vayamos por partes:
SQL Server:
Como sabéis SQL Server ya gestiona la memoria dinámicamente desde hace mucho tiempo.
Puedes indicar una cantidad mínima de memoria para SQL Server y una cantidad máxima, en servidores en los que queremos el máximo rendimiento es normal configurar mínima y máxima al mismo valor para ahorrarle al SQL la carga/tiempo de capturar esa memoria.
Debido al comportamiento de SQL Server sabemos que si un servidor esta muy usado y tiene carga de consultas con volumen tendera a ocupar toda la memoria que le demos y eso será positivo para el rendimiento pues tendrá mas elementos en cache.
Si conocemos el uso de nuestros SQL podemos programar horas a las que queremos que SQL libere memoria para que los servidores de Hyper-V la recuperen pero la verdad a voz de pronto me parece un combate un poco estéril y me parece que el patrón seria lo suficientemente predecible como para que no sea lógico emprender esta batalla en la mayoría de los casos.
Podemos decir que cuando SQL Server esta virtualizado en la mayor parte de los casos no tendremos beneficios de rendimiento por usar “large page memory model” y recordar con este comentario dos cosas:
-Cuando se usa esta configuración “large page memory model” SQL Server no permite cambiar su tamaño de memoria dinámicamente.
-Hyper-V usa por defecto large pages así que SQL se beneficia de ello de alguna forma aun sin activarlo en el propio SQL.
SQL server hace muy buena gestión de su memoria evitando paginación y bloqueándola así que no debemos preocuparnos por ningún efecto del proceso de ballooning.
Las versiones de SQL Server Enterprise y Datacenter permiten añadir memoria en caliente y se supone que evalúan la memoria disponible pcaada segundo y SQL la detecta y usa, el resto de versiones solo puede llegar a usar la memoria que detecta en el arranque, luego la DM de Hyper-V no supone una ventaja.
SQL Server Denali estándar permitirá usar DM solo cuando este virtualizada y además añadirá otras mejoras al uso de DM.
Por lo tanto habrá escenarios en los que os podréis beneficiar de la memoria dinámica de Hyper-V en vuestras infraestructuras de SQL Server, la configuraciones recomendadas son estas:
Exchange:
Las versiones que tenemos ahora de Exchange hacen un uso muy intensivo de la memoria para reducir las IOs esto implica muchas optimizaciones que un servidor tiene que calcular en base a la cantidad de memoria que tiene.
Desgraciadamente los servidores de buzones de Exchange evalúan la cantidad de memoria que tienen durante el arranque y no vuelven a mirarlo así que añadir memoria en caliente no tendrá efecto.
Un saludo.