¿Cuántas máquinas virtuales (1 núcleo y 1 GB de RAM) puedo lanzar con 32 GB de RAM y 8 núcleos?

Descargo de responsabilidad: utilizo Virtualbox ocasionalmente en un sistema de escritorio, pero rara vez ejecuté más de 2 o 3 máquinas virtuales concurrentes junto con un sistema operativo host y aplicaciones. Además, generalmente lo he usado en Mac OS X, que no admite el aumento de memoria y nunca lo he configurado para un entorno de servidor. Esta publicación es un reflejo de alguna experiencia personal con Virtualbox, otros hipervisores y muchas citas del manual. 🙂

Virtualbox generalmente no asignará más memoria de la que proporciona su sistema operativo host (es decir, cada VM de 1 GB de RAM deducirá 1 GB de RAM de su sistema operativo host). Por lo tanto, suponiendo que su host solo necesita 1 GB para ejecutarse correctamente (es decir, no está ejecutando aplicaciones en el host en sí), entonces puede alcanzar un máximo de 30 o 31 invitados en su host de 32 GB.

Árbitro. http://www.virtualbox.org/manual/ch03.html#settings-motherboard
(mire en “Memoria base”)

Sin embargo, la función de expansión de memoria le permitirá expandir y contraer la memoria asignada a una VM al quitarla de otra VM. Esto significa que la máquina virtual perdedora no necesitará usar toda esa memoria (la “bloquea” dentro del invitado para que incluso el núcleo no pueda usarla). Por lo tanto, si tiene dos invitados de 1 GB y necesita reasignar 512 MB de uno a otro, es mejor que el huésped perdedor solo tenga 512 MB en uso.

Esto puede ser complicado dependiendo de las aplicaciones que esté ejecutando dentro de su invitado. Es probable que un invitado de Linux almacene en caché los accesos a disco en RAM, y eventualmente parecerá que está utilizando todos sus 1 GB de RAM. (ref. ¡Ayuda! ¡Linux se comió mi RAM!). Esa RAM todavía está disponible para las aplicaciones, pero no sé cómo eso afecta el aumento de la memoria. Además, las aplicaciones como MySQL pueden configurarse para almacenar en caché las consultas SQL, que residirán en la RAM, y durante los períodos de mayor tráfico, Apache puede generar procesos adicionales para manejar las solicitudes adicionales (que usan más RAM).

Que yo sepa, el administrador maneja manualmente los globos de memoria, no asignados dinámicamente por el hipervisor Virtualbox.

Árbitro. http://www.virtualbox.org/manual…

Sin embargo, puede sobrescribir la CPU con bastante facilidad. Puede elegir asignar 1 núcleo virtual por VM (a veces denominado “vCPU” en otros hipervisores) para proporcionar una proporción de sobresuscripción de 4: 1, es decir, 32 VM a 8 núcleos. Hasta donde yo sé, Virtualbox no tiene la limitación de Xen, donde al menos un núcleo debe dedicarse al hipervisor. Si está ejecutando aplicaciones simples de un solo subproceso y / o cargas de trabajo predecibles, esta puede ser la mejor manera de hacerlo. Sin embargo, puede estar ejecutando una aplicación que es multiproceso y funciona mejor con 2 o más vCPU. De hecho, dado que tiene ocho núcleos físicos, sus invitados pueden estar mejor con 4 o incluso 8 CPU virtuales cada uno. Esto proporciona más potencia de procesamiento al invitado cuando lo necesita, pero a expensas de otros invitados si dos o más compiten por 8 núcleos de tiempo de CPU. Dependiendo de la carga de trabajo que haga cada invitado, puede optar por asignar 2 o 4 vCPU a algunos invitados y 8 vCPU a otros invitados. Su kilometraje variará y, desafortunadamente, se responderá mejor mediante prueba y error (y ajustes ocasionales).

Árbitro. http://www.virtualbox.org/manual…

s
20,000 accesos por mes no es mucho … eso es solo alrededor de 27 solicitudes por hora, o aproximadamente 1 solicitud cada 2 minutos (20,000 solicitudes / 720 horas). Si sus aplicaciones en cada invitado son bastante predecibles, una aplicación interna que tiene un número limitado de usuarios, por ejemplo, entonces tener más máquinas virtuales no es un problema. Es posible que deba tomar esas solicitudes y dividirlas por la cantidad de horas de servicio, por ejemplo, durante la semana laboral de 40 horas (que se convierte en ~ 160 horas disponibles por mes, lo que lleva a 125 solicitudes por hora, o 2 por minuto). Por otro lado, si estos invitados están conectados a Internet, entonces tiene el potencial de picos en el tráfico que requieren que un invitado use más recursos de los asignados. Por ejemplo, una aplicación PHP requiere más procesador. Si los 30 invitados con 8 vCPU asignados reciben cada golpe, su host tendrá que pagar impuestos más allá de su capacidad para equilibrar los procesos de invitados entre cada núcleo físico. Diablos, incluso si 30 máquinas virtuales con 1 vCPU son golpeadas simultáneamente, eso es 30 vCPU equilibradas en 8 núcleos.

En general, me gusta comenzar con un modelo “sin suscripción excesiva” y expandirme desde allí. Por ejemplo, comience con 8 máquinas virtuales con 1 vCPU y 1 GB de RAM y vea cómo se comportan en ese host. Obtenga ese rendimiento como línea de base utilizando algún tipo de herramienta de monitoreo (Munin, Zabbix, etc.). Luego, puede intentar agregar máquinas virtuales adicionales hasta que necesite detenerse. Pruebe el rendimiento con herramientas de evaluación comparativa simples como Unixbench (intente ejecutarlo en varias máquinas virtuales simultáneamente). También puede intentar experimentar con otras opciones de vCPU, como 2 o 4 o incluso 8 vCPU.

Cuanto más trabajo tenga que hacer cada invitado, reducirá la cantidad de máquinas virtuales en su sistema. Dependiendo de su hardware y cargas de trabajo, dudo que obtenga más de 24-30 máquinas virtuales en este sistema antes de tener problemas de rendimiento (especialmente porque el aumento de la memoria es un proceso manual).

Desafortunadamente, no puedo encontrar nada definitivo sobre cómo VirtualBox maneja la programación de la CPU, como se mencionó, la regla general común es 4-6 vCPU por cada pCPU, por lo que debe esperar 32-48 máquinas virtuales.

Sin embargo, la memoria podría ser un factor limitante en la cantidad de máquinas virtuales que puede ejecutar. Afortunadamente, VBox ahora tiene algunas características de exceso de compromiso de memoria como Globo para ayudar con este tipo de cosas. Calcula de manera conservadora una sobrecarga del 15% para el sistema, que deja 27 GB utilizables, luego calcula aproximadamente un 30% de exceso de compromiso (nuevamente conservador), lo que te lleva a 35 GB para que puedas caber alrededor de 35 máquinas virtuales.

Personalmente, comenzaría a los 32, eso no debería ser un problema, luego agregaría y monitorearía cosas como la utilización / intercambio de memoria (evitar el intercambio a toda costa), así como cosas como CPU Ready (no estoy seguro de cómo VBox llama a esto, debería ser igual) … la alta CPU lista significa que está sobrecargando los núcleos físicos.

¡Buena suerte!

Puedo proporcionar una idea basada en la experiencia con el hipervisor VMware, desafortunadamente no he visto muchas implementaciones empresariales en VirtualBox.
En mi opinión, debería poder alojar entre 32 y 48 máquinas virtuales.

También asegúrese de que la red tenga al menos 1 GB para manejar volúmenes más altos a medida que aumenta el número de máquinas virtuales.

El enfoque correcto es comenzar con 32 máquinas virtuales, monitorear las métricas de CPU y memoria y agregar más máquinas virtuales si la CPU y la memoria están dentro de los niveles aceptables de utilización.

Entre 32 y 48 usando la regla general 4-6 máquinas virtuales por núcleo. Eso supone que las máquinas virtuales están ejecutando aplicaciones de servidor. Si están ejecutando aplicaciones de escritorio, la caja podría manejar de 50 a 100.