Cómo crear VM tomando recursos (RAM, CPU, etc.) desde múltiples máquinas físicas

La idea básica de la virtualización (y, por lo tanto, una VM), al menos en la actualidad, en realidad se remonta a muchas décadas, pero se reduce al mismo concepto, que es que varias instancias de un sistema operativo pueden compartir los recursos (procesador, memoria, I / O y almacenamiento) de un solo host.

Entonces, el truco con esto es que una VM determinada no puede consumir más recursos de los que se pueden encontrar en una sola caja. En la misma línea, si un conjunto de recursos en una caja se agota, el resto puede quedar en gran parte sin usar. Un buen ejemplo de esto sería un servidor determinado con, por ejemplo, 64 núcleos de procesador y 256 gigabytes de memoria. Si se configuran 8 máquinas virtuales cada una con 4 núcleos y 32 gigabytes de RAM (*), aproximadamente la mitad de la CPU no se usa. Este es un problema muy real para los proveedores de la nube, donde la asignación adecuada (y la reasignación) de instancias de clientes en toda la infraestructura resulta ser bastante difícil de resolver.

  • Claramente, esto es una simplificación: los núcleos de memoria y CPU a menudo se suscriben en exceso, pero se aplica la lógica.

Como otros han mencionado, la forma habitual de abordar el primer problema (hacer una gran máquina virtual) es generalmente girar muchas máquinas virtuales en algún tipo de disposición agrupada. Ejemplos comunes de esto incluirían sistemas de reducción de mapas como Hadoop, que proporciona un entorno para dividir los problemas en un montón de trabajos paralelos, aglutina esos trabajos a los miembros del clúster y luego reúne los resultados para producir un resultado.

La forma en que se abordan tanto este problema como el segundo (utilización ineficiente de los recursos) es a través de un cálculo componible . En este concepto, se recopilan de forma independiente grandes grupos de memoria, cómputo, periféricos de E / S y memoria. Entonces, por ejemplo, puede haber un bastidor lleno de CPU y otro con terabytes de memoria. Todo esto está conectado a algún tipo de interconexión extraordinariamente de alto ancho de banda / baja latencia y, a medida que surge la necesidad, partes de cada uno de estos recursos se componen en una instancia lógica. Un ejemplo sería un usuario que solicita un servidor de base de datos. Se les podrían asignar unos cientos de gigabytes de memoria, 32 núcleos de procesador y un par redundante de tuberías grandes / rápidas a la infraestructura de red y almacenamiento. Esta composición se puede iniciar y aparece como si fuera un servidor físico. Cuando se termina la necesidad de la base de datos, los recursos se devuelven al grupo. Si la base de clientes requiere más memoria, entonces se puede agregar sin tener que comprar más disco o CPU. Del mismo modo, los recursos no utilizados se pueden apagar y eliminar.

Obviamente, hay un montón de capturas aquí, por lo que estas ofertas no están realmente más allá de las fases de I + D / muy tempranas, especialmente a escala. Uno de los mayores problemas es la interconexión. Para poner esto en contexto, la conectividad PCIe entre memoria, CPU y periféricos dentro de un solo servidor está clasificada en decenas de gigabits y conecta componentes que están, en el extremo, separados por decenas de centímetros. Incluso a esta escala, el diseño adecuado de los diseños de los componentes pasa de lo digital simple a las preocupaciones de RF / microondas mucho más arcanas. La visión (eventual) de la computación componible se está moviendo a decenas de metros y respalda el rendimiento agregado de miles de servidores al mismo tiempo, mientras se intenta mantener la latencia al mínimo absoluto. Agregar incluso unas pocas docenas de nanosegundos de extremo a extremo potencialmente reduce sustancialmente el rendimiento real e incluso puede crear una inestabilidad masiva. La mayoría de las soluciones propuestas hasta ahora han estado buscando encarnaciones exóticas de interconexión óptica de extremo a extremo (es decir, fotónica de silicio).

La cuestión es que, incluso más allá de la cuestión de la interconexión, existen enormes desafíos en torno al diseño de software, señalización y protocolo que también presentan algunos desafíos realmente interesantes (incluir las preguntas inevitables sobre la mejor forma de mapear dinámicamente a varios modelos de consumo, etc.). Por supuesto, implícito en todo esto está la necesidad de hacer que todo el sistema sea al menos algo económicamente comparable a un mercado cada vez más impulsado por la mercantilización.

De todos modos, el punto aquí es que esta es un área realmente interesante de I + D. Los grandes proveedores de servidores, varios proveedores de nube, fabricantes de comunicaciones, universidades, startups inteligentes y fabricantes de componentes (Intel es un excelente ejemplo) están trabajando en aspectos del problema en mayor o menor medida.

A2A: tontamente. El concepto de VM permite que una sola máquina imite la función de varias máquinas. Hacer lo contrario tiene poco sentido. Si desea combinar la acción de varias máquinas para resolver un solo problema, eso no tiene nada que ver con VM. Es un problema que vale la pena abordar y se ha abordado. Buscar en “informática distribuida”.

Nunca escuché sobre eso. pero, creo que sería imposible o no recomendado.

Vea, cuando necesita realizar una tarea, una VM ingresa en un estado llamado “LISTO”, y le pide recursos al hipervisor (en el host), y tiene que entregar vCPU y MEM (y a veces un disco) desde la VM dentro de Un tiempo de respuesta de nanosegundos. No es probable que ambos hosts entreguen los recursos dentro del mismo tiempo de respuesta, y esto causaría problemas de Contención de CPU, como un alto% de Listo y% de Latencia.

More Interesting

¿Por qué no podemos usar tarjetas de memoria como RAM?

¿Qué es la RAM en mi computadora?

¿Qué es un semiconductor, qué tiene que ver con el hardware de la computadora?

¿Puedo ejecutar Hellblade en alto con una GTX 1050 ti 8GB RAM y CPU G2010? Sé que mi procesador es débil.

¿Cuáles son algunas reseñas del DIMM DDR2 de 4 GB?

¿Cómo podría mejorarse el soporte de perfiles de memoria de Chrome?

En un sistema que tiene Windows 7, 4 GB de RAM y un sistema operativo de 64 bits, ¿vale la pena instalar un disco / unidad RAM?

Las computadoras con CPU de múltiples núcleos tienen múltiples capas de caché en cada núcleo y una memoria global compartida (RAM). ¿Esto los hace memoria híbrida (distribuida compartida) o todavía son arquitecturas de memoria compartida?

¿Cuál es la cantidad mínima de energía para que una unidad RAM retenga sus datos durante mucho tiempo?

¿Qué tipo de juegos puedo jugar con una CPU i3 de 2.5 GHz, 4GB de RAM y una GeForce 840M de 2GB?

Hardware de la computadora: ¿Funcionará el kit G.SKILL 32GB RAM para mi gigabyte ga-f2a88xm-dh3? ¿O debería ir con el kit Corsair 32Gb?

¿Por qué no aumentan los resultados de referencia después de usar el expansor de RAM de Roehsoft para aumentar la RAM en Android?

¿Por qué los chips de 4GB de RAM para laptops tardan tanto en bajar de precio?

¿Son suficientes 16 GB de RAM para jugar en mi computadora portátil?

¿Cuántas pestañas se pueden abrir en Google Chrome con 32 y 64 GB de RAM?