Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon ¿Qué es una vCPU? Núcleos Vs Hilos de un procesador


 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 e hilos en un procesador

Un núcleo de CPU es el componente de hardware de un sistema informático y tiene la capacidad de realizar una tarea a la vez. Sin embargo, para ejecutar estas funciones de manera efectiva y obtener rápidamente la información necesaria de la aplicación, el sistema debe ser compatible con hilos de CPU

Los núcleos son componentes físicos dentro de la CPU que tienen la capacidad de ejecutar instrucciones de manera independiente. Cada núcleo funciona como una unidad de procesamiento individual, obteniendo instrucciones de una tarea y procesándolas rápidamente a medida que funcionan con la velocidad del reloj y las almacenan temporalmente en la memoria RAM.

Hilos

 

Un hilo es un componente virtual que maneja las tareas de un núcleo de CPU, para completarlas de manera efectiva, también se conoce como unidad de ejecución sobre programación simultánea. Los hilos a nivel de usuario son subprocesos del lado del usuario que se manejan como un proceso de hilo único porque el núcleo no es consciente de este tipo de subprocesos. 

Los hilos, threads o subprocesos no forman parte física del procesador, no al menos en lo que se refiere a más cantidad de núcleos o algo por el estilo.

Podemos definir un hilo de procesamiento como el flujo de control de datos de un programa. Es un medio que permite administrar las tareas de un procesador y de sus diferentes núcleos de una forma más eficiente. Gracias a los hilos, las unidades mínimas de asignación, que son las tareas o procesos de un programa, pueden dividirse en trozos para así optimizar los tiempos de espera de cada instrucción en la cola del proceso. Estos trozos se llaman subprocesos o threads.

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


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.

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.

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.

¿Podemos ver esos hilos o subprocesos en el sistema?

No de una forma demasiado detallada, pero si, podremos verlos, tanto en Windows como Mac.

En el caso de Windows, tan solo tendremos que abrir al administrador de tareas y situarnos sobre “rendimiento”. Luego pulsaremos abajo en el enlace de “monitor de recursos”. En esta nueva ventana tendremos dividido cada proceso en consumo de la CPU y en subprocesos (threads), estos será los hilos.

En el monitor de actividad de Mac, tendremos directamente los subprocesos enumerados en la pantalla principal.

Los programas, procesos e hilos

Todos sabemos qué es un programa, es un código que se almacena en nuestro ordenador y que está destinado a llevar a cabo alguna tarea concreta. Una aplicación es un programa, un driver también lo es e incluso el sistema operativo es un programa capaz de ejecutar otros programas en su interior. Todos ellos están almacenados en forma binaria, ya que el procesador solo entiende de unos y ceros, corriente / no corriente.

Los procesos del programa


Para ejecutar un programa, este se carga en memoria, la memoria RAM. Este programa es cargado mediante procesos, los cuales llevan su código binario asociado y los recursos que necesita para operar, que serán asignados de forma “inteligente” por el sistema operativo.

Los recursos básicos que necesita un proceso son, un contador de programa, y una pila de registros.

  • Contador de programa (CP): se llama puntero de instrucciones, y realiza el seguimiento de la secuencia de instrucciones que se vayan procesando.
  • Registros: es un almacén ubicado en el procesador en donde se puede guardar una instrucción, una dirección de almacenamiento o cualquier otro dato.
  • Pila: es la estructura de datos que almacena la información relativa a las instancias que un programa tiene activas en el ordenador.

Entonces cada programa está dividido en procesos, y está almacenado en un lugar determinado en memoria. Además, cada proceso se ejecuta de forma independiente, y esto es muy importante de entender porque así es como el procesador y el sistema son capaces de ejecutar varias tareas al mismo tiempo, lo que denominamos sistema multitarea. Este sistema de procesamiento es el culpable de que podamos seguir trabajando en nuestro PC, aunque un programa se haya quedado bloqueado.

Los hilos de un proceso



Aquí es donde hacen acto de presencia los hilos de procesamiento, denominados subprocesos en los sistemas operativos. Un hilo es la unidad de ejecución de un proceso. Podemos dividir el proceso en subprocesos, y cada uno de ellos será un hilo de ejecución.

Si un programa no es multi-hilo, los procesos dentro de él solamente tendrán un hilo, así que solamente se podrán procesar de una sola vez. Por el contrario, si tenemos procesos multi-hilo, estos podrán dividirse en varios trozos, y cada uno de esos hilos comparte los recursos asignados al proceso. Por eso dijimos que la ejecución en múltiples hilos es más eficiente.


Además, cada hilo cuenta con su propia pila de registros por lo que podrán procesarse dos o más de ellos al mismo tiempo, al contrario que un solo proceso, que tendrá que ejecutarse todo de una sola vez. Los subprocesos son tareas más sencillas que permiten ejecutar un proceso de forma dividida. Y esta es básicamente la función final de los hilos de procesamiento. Cuantos más hilos, mayor división de procesos, y mayor volumen de cálculos simultáneos y entonces, mayor eficiencia.

Todavía no hemos terminado, aún tenemos la pregunta pendiente de ¿Qué ocurre entonces con un núcleo con doble hilo? Ya dijimos que cada núcleo es capaz de ejecuta una sola instrucción a la vez. La CPU cuenta con un complejo algoritmo que divide de la forma más eficiente posible los tiempos de ejecución, así asigna a cada tarea un determinado intervalo de ejecución. El cambio entre tareas es tan rápido, que dará la sensación de que el nucleo ejecuta tareas de forma paralela.

Fuentes:

https://www.wikiversus.com/informatica/procesadores/que-es-vcpu/

https://www.profesionalreview.com/2019/04/03/que-son-los-hilos-de-un-procesador/


1 comentarios :

Anónimo dijo...

No es como se explica en este documento. Los threads no son lo que explica, hyperthreading no es lo que dice, es una tecnología de Intel, etc.

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.