Tengo entendido que uno de los grandes beneficios de usar una VM es que puede compartir recursos entre las máquinas virtuales en un host. Por lo tanto, puede tener un host con 120 CPU y poner 5 VM en él con 32 CPU cada uno. Las CPU adicionales se "comparten" entre las VM con el host que asigna CPU dinámicamente según la necesidad. Lo mismo para la memoria.
También entendí que este es un gran no-no para las máquinas virtuales que alojan servidores SQL, pero mis administradores de máquinas virtuales no están de acuerdo. ¿Alguien tiene alguna evidencia o documentación de una manera u otra?
No sé si importa, pero estamos usando VMWare.
sql-server
virtualisation
vmware
Kenneth Fisher
fuente
fuente
could
compartiera. Cuando estaba haciendo la pregunta, me di cuenta de que bien podría ser diferente para las CPU y la memoria, pero que ambas eran una opción.Respuestas:
Lo que estás preguntando es: "¿Está bien si comprometemos en exceso las CPU?"
Está bien hasta que comience a experimentar cuellos de botella de rendimiento relacionados con el consumo de CPU. La misma respuesta también es válida con el exceso de compromiso de la red: no es como si estuvieras colocando 5 tarjetas Ethernet de 10 Gb separadas en el host y dedicando una tarjeta por VM. La virtualización se trata de un compromiso excesivo y de recorrer la línea entre la disponibilidad de recursos y los requisitos de recursos.
Sin embargo, en términos generales, no desea comprometerse demasiado en la memoria, ya que SQL Server utilizará activamente la memoria que le presente. En lugar de dejar que las máquinas virtuales paginen en el disco del host, es mejor que haga un análisis de máquina por máquina virtual para descubrir qué máquinas virtuales podrían vivir con menos memoria y, luego, para configurarlas con menos memoria.
fuente
El problema que veo con la asignación dinámica de algunos recursos es que conduce a un rendimiento impredecible. La consulta de informes x tenía 32 CPU disponibles ayer, y se ejecutó en 4 minutos, hoy solo tiene 24 y tomó mucho más tiempo. También puede ver la latencia mientras el invitado espera a que otros núcleos estén disponibles.
Jonathan Kehayias ofrece algunas advertencias prácticas sobre la suscripción excesiva de CPU y memoria aquí (y, francamente, confío en su experiencia y asesoramiento más que en un administrador de VM típico, sin ofenderles, pero sospecho que tiene mucha más experiencia directa con la combinación):
fuente
Tengo entendido que cierto nivel de exceso de compromiso de la CPU puede estar perfectamente bien, pero eso depende totalmente de los requisitos de carga de trabajo de todos los invitados. Visite el blog de David Klee para obtener una gran cantidad de buena información de VM. Específicamente http://www.davidklee.net/articles/sql-server-articles/cpu-overcommitment-and-its-impact-on-sql-server-performance-on-vmware/ para la explicación del exceso de compromiso de la CPU y su impacto en SQL Server
El compromiso excesivo de la memoria es un animal completamente diferente y, en general, el host VM no debe comprometerse demasiado en la memoria si está ejecutando servidores SQL. Una vez más, usaré a David Klee como referencia. http://www.davidklee.net/2013/11/04/lock-pages-in-memory-in-sql-server-on-vmware-why-or-why-not/ donde explica los efectos de la memoria sobre -compromiso.
Espero que esto ayude.
fuente