stringtranslate.com

Aislamiento temporal entre máquinas virtuales

El aislamiento temporal o aislamiento de rendimiento entre máquinas virtuales (VM) se refiere a la capacidad de aislar el comportamiento temporal (o limitar las interferencias temporales) de múltiples VM 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 utilizar la virtualización en la consolidación de servidores es la posibilidad de "empaquetar" sin problemas varios sistemas subutilizados en un único host físico, logrando así una mejor utilización general de los recursos de hardware disponibles. De hecho, un sistema operativo (OS) completo, junto con las aplicaciones que se ejecutan en él, se puede ejecutar en una máquina virtual (VM). Sin embargo, cuando varias VM se ejecutan simultáneamente en el mismo host físico, comparten los recursos físicos disponibles, incluidos CPU , adaptadores de red , discos y memoria. Esto agrega un nivel de imprevisibilidad en el rendimiento que puede exhibir cada VM individual, en comparación con lo esperado. Por ejemplo, una VM con un pico temporal de uso intensivo de recursos informáticos podría perturbar a las otras VM en ejecución, lo que causaría una caída temporal significativa e indeseable en su rendimiento. En un mundo de informática que está cambiando hacia paradigmas de computación en la nube donde los recursos (computación, almacenamiento, redes) pueden alquilarse de forma remota en forma virtualizada bajo acuerdos de nivel de servicio precisos, sería muy deseable que el rendimiento de los recursos virtualizados fuera lo más estable y predecible posible.

Posibles soluciones

Se pueden utilizar múltiples técnicas para hacer frente al problema mencionado anteriormente. Su objetivo es lograr cierto grado de aislamiento temporal entre las máquinas virtuales que se ejecutan simultáneamente, en los distintos niveles críticos de programación : programación de CPU, programación de red y programación de disco.

Para la CPU, es posible utilizar técnicas de programación adecuadas a nivel de 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 programadores BVT, basados ​​en crédito y S-EDF para controlar cómo se distribuye la potencia informática entre las VM que compiten. [1] Para obtener un rendimiento estable en aplicaciones virtualizadas, es necesario utilizar configuraciones de programador que no conserven el trabajo . Además, en el hipervisor KVM , algunos han propuesto utilizar estrategias de programació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 VM puede imponer al host. También es posible instalar múltiples 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 controladores del hipervisor Xen. Existen adaptadores de red multi-cola que soportan múltiples VM a nivel de hardware, teniendo colas de paquetes separadas asociadas a las diferentes VM alojadas (por medio de 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 múltiples VM implementadas en la misma CPU. [6]

Al utilizar la programación en tiempo real para controlar la cantidad de recursos de CPU reservados para cada máquina virtual, un problema complicado es el de contabilizar correctamente el tiempo de CPU aplicable a las actividades de todo el sistema. Por ejemplo, en el caso del programador Xen, los servicios de dominios de controlador y Dom0 pueden 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 host debido a la prestación de servicio de tráfico de red para cada sistema operativo invitado individual puede no ser fácilmente distinguible, porque involucra principalmente controladores de dispositivos a nivel de núcleo y la infraestructura de red (en el sistema operativo host). Se han propuesto algunas técnicas para mitigar dichos problemas para 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 la adaptabilidad, en aquellos casos en los que un sistema virtualizado no está cumpliendo con los niveles de rendimiento esperados (ya sea por interferencias imprevistas de otras máquinas virtuales que se ejecutan simultáneamente, o por una mala estrategia de implementación que simplemente eligió una máquina con recursos de hardware insuficientes), es posible migrar en vivo las máquinas virtuales mientras están en ejecución, 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 programadores 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 sobre sistemas en tiempo real (RTSS 2008) -- Sesión de trabajo 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, Proporcionar garantías de rendimiento a máquinas virtuales mediante programació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, Aplicación del aislamiento del rendimiento en máquinas virtuales en Xen, Actas de la 7.ª Conferencia internacional sobre middleware (Middleware 2006), Lecture Notes in Computer Science, Volumen 4290/2006, págs. 342-362, Melbourne, Australia, noviembre de 2006
  8. ^ Ripal Nathuji; Aman Kansal y Alireza Ghaffarkhah (abril de 2010), "Q-Clouds: Managing Performance Interference Effects for QoS-Aware Clouds", Actas de la 5.ª conferencia europea sobre sistemas informáticos (EuroSys 2010) , París, Francia