Los proveedores de servidores en la nube como Amazon Web Services (AWS), Microsoft Azure, Google Cloud, Digital Ocean, etc. utilizan el término vCPU para describir la potencia de sus máquinas virtuales. ¿Pero cuánto rendimiento tiene una vCPU en comparación con una CPU normal?
Núcleos Vs Hilos
Lo primero que debemos tener en cuenta es que, desde hace bastantes años, todas las CPU están compuestas de varios cores o núcleos que son los que ejecutan los cálculos y tareas. Pero incluso con haciendo las tareas más intensivas, los núcleos, no están al 100% todo el tiempo con un solo programa.
Los programas a menudo deben esperar lecturas de memoria de la caché L3, la RAM y las unidades de almacenamiento para cargar o escribir datos. En esos momentos, los núcleos del procesador se encuentran inactivos.
Para obtener mayor rendimiento del procesador y aprovechar estos descansos los procesadores, los sistemas operativos y los programas están diseñados para poder ejecutar otras tareas de manera simultánea. Esta tecnología se llama hyperthreading (hiperhilo) o simultaneous multithreading (multihilo simultáneo).
Dependiendo de la aplicación, el hyperthreading puede conseguir mejoras teóricas (si ambos hilos están esperando lecturas de memoria y no están en conflicto entre sí) del 100% de rendimiento. Aunque en la mayoría de los casos, el hyperthreading da una mejora cercana al 30% de velocidad sobre las ejecuciones sin hyperthreading.
Sin embargo, en algunos casos, cuando dos hilos se fijan al 100% y se ejecutan en el mismo núcleo, pueden causar desaceleraciones mientras “luchan” por los recursos de la CPU. Cosa que pasa ha pasado a veces en algunos videojuegos, por lo que muchas veces se aconseja desactivar el hyperthreading para conseguir más FPS y menos tirones.
Por ejemplo el AMD Ryzen 9 5900X de 12 núcleos y 24 hilos que se ha puesto a la venta por unos 550 euros, más o menos el mismo precio de venta del Intel Core i9-10900K que tiene 10 núcleos. Es la segunda CPU más potente que AMD ofrece en la gama Zen 3, solo por detrás del Ryzen 9 5950X de 16 núcleos y 32 hilos. El resto del cuarteto inicial de nuevas CPU basadas en Zen 3 incluye el Ryzen 7 5800X de ocho núcleos y 16 hilos, y el Ryzen 5 5600X de seis núcleos y 12 hilos
¿Qué es un vCPU? - Rendimiento frente a CPU
- Una vCPU es comparable a un hilo de procesamiento.
Eso significa que, si contratas una instancia o máquina virtual con 4 vCPU, en realidad no estás contratando un servidor con 4 núcleos, sino que se está emulando un servidor de 2 núcleos, ejecutando 4 hilos de procesamiento. Sin embargo, no es una comparación del todo justa porque el rendimiento de una vCPU de 4 hilos puede ser un poco mayor que el rendimiento de un procesador de 2 cores y 4 hilos por la gestión de los hilos.
Por ejemplo, si contratas una instancia c5.large de AWS que cuenta con 2 vCPU, tu programa se ejecutará, junto con muchos otros de otras personas, en un ordenador muy potente que puede tener decenas de núcleos físicos.
La gestión entre los hilos y los núcleos físicos se hacen a través de un hipervisor, que en caso de AWS se llama Nitro. El hipervisor se encarga de la creación y gestión de las máquinas virtuales que se ejecutan en el servidor físico.
Nitro decide a qué hilos asignar tu VM en función de la cantidad de potencia de procesamiento necesaria, de forma muy similar a como lo hace un programador de tareas en un entorno de escritorio normal.
Con 2 VCPU, el peor caso es que tu aplicación se ejecute en un único núcleo porque tus dos hilos estarán en el mismo núcleo y si utilizas la máquina al 100% tus hilos pueden entrar en conflicto y causar pequeñas ralentizaciones. Sin embargo, Nitro intenta evitar esta casuística por lo que probablemente, si contratas 2 vCPU, obtendrás el 100% de rendimiento de cada hilo, sin mermas.
En resumen, para una misma CPU, si la CPU está en tu ordenador, al hacer uso de los dos hilos de un núcleo obtendrás un rendimiento total del 130%. Al contratar esa misma en forma de vCPU deberíamos obtener un rendimiento de un 200%.
Sin embargo, la velocidad de procesamiento del vCPU dependerá del hardware real en el que se está ejecutando. No es lo mismo un núcleo de un Intel E6300 del 2007 que un núcleo de un 9900K.
- La mayoría de las CPU de los servidores son procesadores Xeon de Intel, aunque los Threadripper y Ryzen de AMD están subiendo mucho en la cuota de mercado.
Las instancias más baratas suelen correr en procesadores más antiguos. Por ejemplo, las instancias T3a de AWS utilizan las CPUs AMD EPYC de alto número de núcleos, funcionan un poco más despacio, pero cuestan menos debido a que el hardware es mucho más barato por núcleo.
Fuentes:
https://www.wikiversus.com/informatica/procesadores/que-es-vcpu/
No hay comentarios:
Publicar un comentario