
Tanto la emulación como la virtualización logran el mismo objetivo: ejecutar otro sistema operativo dentro de una máquina virtual. Sin embargo, cada uno lo hace de forma diferente y, cuando se puede utilizar, la virtualización es mucho más rápida.
Una cuestión de rendimiento
La respuesta corta es que la emulación es mucho más lenta que la virtualización y todo se reduce a optimizaciones de hardware.
La emulación es la forma más sencilla de ejecutar una aplicación en un host no deseado. Un emulador acepta comandos destinados al sistema de destino y los traduce en algo que la computadora host pueda comprender y ejecutar. Por lo general, esto implica emular códigos y registros operativos de la CPU. Un buen ejemplo de esto es la emulación de juegos antiguos, como la Nintendo N64, en una PC moderna. La PC no puede ejecutar juegos de N64 directamente, pero el emulador puede tomar las instrucciones destinadas al N64 y ejecutarlas lo más cerca posible de la perfección.
Aunque "Emulación" se usa comúnmente para referirse a la emulación de videojuegos, se usa con la misma frecuencia para aplicaciones comerciales. Por ejemplo, tal vez tenga un software heredado básico, que debe ejecutarse en un sistema como DOS. A menudo, ejecutarlo en un emulador en un servidor nuevo puede ser más fácil que ejecutarlo en una máquina en ese entonces. También puede referirse a software que emula los efectos del hardware heredado, como la emulación de controladores de red antiguos.
Sin embargo, la emulación puede ser innecesariamente lenta. Un caso de uso extremadamente común es ejecutar varias máquinas virtuales Linux en un sistema operativo host. Cuando la máquina host es la misma que la máquina virtual, la emulación completa de toda la CPU es muy lenta en comparación con la ejecución normal.
Por lo tanto, la mayoría de las máquinas virtuales utilizarán tecnología de virtualización optimizada por hardware. En Intel, esta tecnología se llama Intel-VT y en AMD, se llama AMD-V. Ambos logran el mismo objetivo de virtualizar aplicaciones x86. Si está utilizando una computadora de escritorio, es posible que deba habilitarlos en el BIOS si no están habilitados de forma predeterminada.
La virtualización se usa a menudo junto con un hipervisor, que es un sistema operativo básico que administra múltiples servidores privados virtuales. Si alquila un VPS de una empresa de computación en la nube como AWS, es probable que se ejecute en un hipervisor como Nitro, Proxmox o Hyper-V de AWS. Los hipervisores modernos pueden lograr un rendimiento muy cercano al nativo (también llamado "bare metal"). Si bien siempre hay algo de sobrecarga, es mejor que tener que emularlo.
La virtualización casi siempre funciona mejor si está virtualizando la misma arquitectura. Por ejemplo, las CPU x86 de AMD e Intel podrán virtualizar sistemas operativos x86 como Windows y Linux estándar. Si bien no es técnicamente imposible para una CPU ARM virtualizar una CPU x86, generalmente no es una cosa.
Esto puede ser un problema, como es el caso de Los nuevos Macbooks basados en ARM de Apple que se ejecutan en sus propios procesadores M1. No se admite la virtualización de sistemas operativos x86. Si bien aún puedes ejecutar otros sistemas operativos con programas como Parallels, será mucho más lento ya que tendrás que recurrir a la emulación.
Entonces, en conclusión, si está ejecutando un programa desde otro sistema operativo, le recomendamos que se asegure de hacerlo utilizando algún tipo de virtualización si desea alcanzar una velocidad nativa cercana al 100%.
¿Cómo se compara Docker?
Docker le permite ejecutar contenedores de aplicaciones, que son paquetes aislados que contienen todo el código necesario para ejecutar una aplicación. También es muy seguro; una máquina host puede ejecutar varios contenedores Docker sin temor a que salgan del contenedor o se confundan entre sí.
En muchos sentidos, Docker logra exactamente el mismo objetivo de ejecutar múltiples aplicaciones en máquinas virtuales privadas de Linux, pero bajo el capó, hace las cosas de manera un poco diferente.
Docker no utiliza emulación ni virtualización. Ejecute todo el código directamente en la CPU y el sistema host, sin gastos generales de virtualización. Para aislar contenedores, hace un uso inteligente de los espacios de nombres de Linux, entre otras características que pueden aislar procesos en su propia "prisión de contenedores". Los procesos dentro de la prisión no pueden ver o interactuar con archivos, procesos o recursos del sistema no asignados a ellos.
Esto permite un sistema en el que varias aplicaciones pueden ejecutarse en paralelo en un sistema operativo host sin la sobrecarga de un sistema operativo independiente para cada servidor privado virtual. Para un proveedor como AWS, esto ahorra dinero Mucho dinero.
Si está buscando virtualizar pero le preocupa el rendimiento, Docker casi no tiene gastos generales en comparación con la ejecución de aplicaciones en bare metal. Puede leer nuestra guía para comenzar a usarlo para obtener más información.
RELACIONADO: Cómo empaquetar la infraestructura de su aplicación con Docker
Deja una respuesta