Capítulo 7: Configuración de máquinas virtuales

Publicado por P. Ruiz en

7.5. Diferencias entre máquina real y virtual.

Antes de continuar, debemos afianzar dos conceptos básicos que nos eviten futuras confusiones:

  1. Cuando hablamos de una máquina real (o máquina física) nos referimos al dispositivo formado por los componentes electrónicos, como el procesador, la memoria RAM, los dispositivos de E/S, los dispositivos de almacenamiento, etc.

    En la máquina real se ejecuta el software base, que estará encargado de relacionar entre ellos todos esos dispositivos para que el conjunto funcione de forma correcta.

  2. Por su parte, una máquina virtual es un producto software que se comporta como si fuese una máquina física.

    En este sentido, dispondrá de sus propios componentes virtuales: su propio procesador, memoria RAM, dispositivos de E/S y de almacenamiento, etc.

    Como es lógico, estos dispositivos virtuales se crean a partir de los dispositivos físicos, y será el software de virtualización (que se ejecutará como un conjunto de procesos de la máquina física) el encargado de compartir de manera equilibrada los componentes físicos entre todas las máquinas virtuales que se estén ejecutando de forma concurrente.

OvercommitCon el fin de aumentar la eficiencia y la rentabilidad de un sistema de virtualización aparecen estrategias como la sobreasignación (en inglés, Overcommit). Podemos decir que se está produciendo Overcommit cuando se están asignando una cantidad de recursos a las máquinas virtuales por encima de la cantidad subyacente de esos mismos recursos.

Esta técnica puede aplicarse a cualquier recurso, pero es particularmente importante cuando se refiere a dos:

  • La memoria RAM: Se produce cuando la suma de la memoria RAM que hemos asignado a los sistemas invitados es superior a la cantidad de memoria RAM disponible.

    Así, cuando los sistemas invitados estén funcionando, se les asignará memoria en función de sus necesidades, pero teniendo como valor máximo la cantidad que tengan asignada. El hipervisor tratará de balancear el uso de la memoria para que todos los invitados tengan la que necesitan en cada momento.

    Sin embargo, si todos los sistemas invitados necesitaran, en un momento dado, toda la memoria que tienen asignada, el anfitrión necesitaría recurrir a la paginación de memoria de forma intensiva y el rendimiento de todo el sistema caería drásticamente.

    Aún así, desde el punto de vista estadístico, es poco probable que todos los invitados necesiten la totalidad de su memoria asignada al mismo tiempo. Esto permite al administrador del sistema especular con los valores máximos para obtener una mayor rentabilidad de la instalación.

  • El procesador: El nivel de desarrollo de los procesadores actuales, les otorga una capacidad de procesamiento muy elevadas. Esto permite que podamos aumentar su carga de trabajo para incrementar su rendimiento. Y un modo sencillo de lograrlo sería asignar a los sistemas invitados más procesadores virtuales (más núcleos) de los que tenemos realmente el el procesador o procesadores físicos.

    Como en el caso de la memoria, si abusamos de esta característica, podríamos hacer que el rendimiento de la implementación cayese de forma considerable. Aún así, algunas fuentes afirman que podríamos asignar hasta 4 CPUs virtuales por cada CPU física manteniendo un nivel de rendimiento suficiente.

El Overcommit es importante en las implementaciones locales, porque puede permitirnos aumentar el rendimiento de nuestra infraestructura, siempre que lo apliquemos de una forma controlada y razonable.

Aún así, cuando esta técnica adquiere una mayor importancia es cuando contratamos virtualización en la nube. La mayoría de los proveedores aplicarán técnicas de overcommit, pero debemos de asegurarnos de que recibimos la información adecuada y de que el proveedor nos garantiza un nivel de servicio mínimo adecuado a nuestras necesidades