¿Qué es una vCPU? ¿Cuánto rinde frente a una CPU?

Rubén Castro, 16 abril 2020

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).

Procesador -> Núcleos -> Hilos

Actualmente, casi todas las CPU de gama alta de Intel o AMD soportan dos hilos por núcleo. Por ejemplo, 1 CPU Ryzen 3700 tiene 8 núcleos y puede ejecutar 16 hilos.

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.

¿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.

En AWS también puedes alquilar todo el servidor con una instancia de AWS Bare Metal, que te da acceso directo al procesador.

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.

Gracias a eso, se contratan servidores virtuales o VM (Virtual Machine o Máquina Virtual) y no bandejas de rack en un CPD (Centro de procesamiento de datos).

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.

Ver más
WikiVersus puede usar cookies para recopilar estadísticas, optimizar la funcionalidad del sitio y ofrecerte publicidad basada en tus intereses. Si sigues navegando estarás aceptando su uso. Más información de nuestras políticas.