Articulo de referencia

Aislamiento temporal entre máquinas virtuales

El aislamiento temporal o el aislamiento de rendimiento entre máquinas virtuales (VM) se refiere a la capacidad de aislar el comportamiento temporal (o limitar las interferencia...

El aislamiento temporal o el aislamiento de rendimiento entre máquinas virtuales (VM) se refiere a la capacidad de aislar el comportamiento temporal (o limitar las interferencias temporales) de varias máquinas virtuales entre sí, a pesar de que se ejecutan en el mismo host físico y comparten un conjunto de recursos físicos como procesadores, memoria y discos.

Introducción al problema

Una de las principales ventajas de la virtualización en la consolidación de servidores es la posibilidad de integrar sin problemas varios sistemas subutilizados en un único host físico, logrando así un mejor aprovechamiento de los recursos de hardware disponibles. De hecho, un sistema operativo completo , junto con las aplicaciones que se ejecutan en él, puede ejecutarse en una máquina virtual .

Sin embargo, cuando varias máquinas virtuales se ejecutan simultáneamente en el mismo host físico, comparten los recursos físicos disponibles, como la CPU , los adaptadores de red , los discos y la memoria. Esto introduce un grado de imprevisibilidad en el rendimiento de cada máquina virtual, en comparación con lo esperado. Por ejemplo, una máquina virtual con un pico de carga computacional elevado podría afectar a las demás, provocando una caída temporal significativa e indeseable en su rendimiento. En un entorno informático que evoluciona hacia paradigmas de computación en la nube, donde los recursos (computación, almacenamiento y redes) se alquilan de forma remota y virtualizada bajo acuerdos de nivel de servicio precisos, es fundamental que el rendimiento de los recursos virtualizados sea lo más estable y predecible posible.

Posibles soluciones

Para abordar el problema mencionado, se pueden utilizar diversas técnicas. Estas buscan lograr cierto grado de aislamiento temporal entre las máquinas virtuales que se ejecutan simultáneamente, en los distintos niveles críticos de planificación : planificación de CPU, planificación de red y planificación de disco.

Para la CPU, es posible utilizar técnicas de planificación adecuadas a nivel del hipervisor para contener la cantidad de computación que cada VM puede imponer en una CPU o núcleo físico compartido. Por ejemplo, en el hipervisor Xen , se han propuesto los planificadores BVT, basados ​​en créditos y S-EDF para controlar cómo se distribuye la potencia de computación entre las VM que compiten. [ 1 ] Para obtener un rendimiento estable en aplicaciones virtualizadas, es necesario utilizar configuraciones de planificador que no sean de conservación de trabajo . Además, en el hipervisor KVM , algunos han propuesto utilizar estrategias de planificación basadas en EDF [ 2 ] para mantener un rendimiento estable y predecible de las aplicaciones virtualizadas. [ 3 ] [ 4 ] Finalmente, con un host físico multinúcleo o multiprocesador , es posible implementar cada VM en un procesador o núcleo separado para aislar temporalmente el rendimiento de varias VM.

Para la red, es posible utilizar técnicas de modelado de tráfico para limitar la cantidad de tráfico que cada máquina virtual (VM) puede imponer al host. También es posible instalar varios adaptadores de red en el mismo host físico y configurar la capa de virtualización para que cada VM pueda otorgar acceso exclusivo a cada uno de ellos. Por ejemplo, esto es posible con los dominios de controlador del hipervisor Xen. Existen adaptadores de red de múltiples colas que admiten varias VM a nivel de hardware, con colas de paquetes separadas asociadas a las diferentes VM alojadas (mediante las direcciones IP de las VM), como los dispositivos Virtual Machine Device Queue (VMDq) de Intel . [ 5 ] Finalmente, la programación en tiempo real de la CPU también puede utilizarse para mejorar el aislamiento temporal del tráfico de red de varias VM implementadas en la misma CPU. [ 6 ]

Al utilizar la planificación en tiempo real para controlar la cantidad de recursos de CPU reservados para cada máquina virtual (VM), un problema complejo es contabilizar correctamente el tiempo de CPU aplicable a las actividades de todo el sistema. Por ejemplo, en el caso del planificador Xen, los servicios Dom0 y de dominios de controladores podrían compartirse entre varias máquinas virtuales que acceden a ellos. De manera similar, en el caso del hipervisor KVM, la carga de trabajo impuesta al sistema operativo anfitrión debido al tráfico de red para cada sistema operativo invitado individual podría no ser fácilmente distinguible, ya que involucra principalmente controladores de dispositivos a nivel de kernel y la infraestructura de red (en el sistema operativo anfitrión). Se han propuesto algunas técnicas para mitigar estos problemas en el caso de Xen. [ 7 ]

Siguiendo la línea de las reservas adaptativas , es posible aplicar estrategias de control de retroalimentación para adaptar dinámicamente la cantidad de recursos reservados a cada máquina virtual para mantener un rendimiento estable para la(s) aplicación(es) virtualizada(s). [ 8 ] Siguiendo la tendencia de adaptabilidad, en aquellos casos en los que un sistema virtualizado no cumple con los niveles de rendimiento esperados (ya sea debido a interferencias imprevistas de otras máquinas virtuales que se ejecutan simultáneamente, o debido a una mala estrategia de implementación que simplemente seleccionó una máquina con recursos de hardware insuficientes), es posible migrar en vivo las máquinas virtuales mientras se están ejecutando, para alojarlas en un host físico más capaz (o menos cargado).

Referencias

  1. Ludmila Cherkasova; Diwaker Gupta; Amin Vahdat (3 de septiembre de 2007), "Comparación de los tres planificadores de CPU en Xen" (PDF) , Performance Evaluation Review. Vol. 35, número 2 , consultado el 30 de junio de 2010.
  2. Fabio Checconi, Tommaso Cucinotta, Dario Faggioli, Giuseppe Lipari, Reservas jerárquicas de CPU multiprocesador para el núcleo Linux , Actas del 5.º Taller Internacional sobre Plataformas de Sistemas Operativos para Aplicaciones Integradas en Tiempo Real (OSPERT 2009), Dublín, Irlanda, junio de 2009
  3. Tommaso Cucinotta, Gaetano Anastasi, Luca Abeni, Respeto de las restricciones temporales en los servicios virtualizados , Actas del 2.º Taller Internacional IEEE sobre Arquitectura y Aplicaciones Orientadas a Servicios en Tiempo Real (RTSOAA 2009), Seattle, Washington, julio de 2009
  4. Tommaso Cucinotta, Gaetano Anastasi, Luca Abeni, Máquinas virtuales en tiempo real , Actas del 29º Simposio de Sistemas en Tiempo Real (RTSS 2008) - Sesión de trabajos en curso, Barcelona, ​​diciembre de 2008
  5. Shefali Chinni, Radhakrishna Hiremane, Colas de dispositivos de máquinas virtuales , Libro blanco sobre tecnología de virtualización de Intel, 2007
  6. Tommaso Cucinotta, Dhaval Giani, Dario Faggioli y Fabio Checconi, Proporcionando garantías de rendimiento a las máquinas virtuales mediante la planificación en tiempo real , Actas del 5º Taller sobre Virtualización y Computación en la Nube de Alto Rendimiento (VHPC 2010), Ischia (Nápoles), Italia, agosto de 2010.
  7. Diwaker Gupta, Lucy Cherkasova, Robert Gardner, Amin Vahdat, Enforcing Performance Isolation Across Virtual Machines in Xen , Actas de la 7.ª Conferencia Internacional de Middleware (Middleware 2006), Lecture Notes in Computer Science, Volumen 4290/2006, pp. 342-362, Melbourne, Australia, noviembre de 2006
  8. Ripal Nathuji; Aman Kansal y Alireza Ghaffarkhah (abril de 2010), "Q-Clouds: Gestión de los efectos de interferencia en el rendimiento para nubes conscientes de la calidad de servicio" , Actas de la 5.ª Conferencia Europea sobre Sistemas Informáticos (EuroSys 2010) , París, Francia