Saltar al contenido

VirtualBox: ¿Es una mala idea asignar más núcleos de CPU virtuales que la cantidad de núcleos de CPU físicos?

Nuestros programadores estrellas agotaron sus depósitos de café, buscando todo el tiempo por la respuesta, hasta que José halló la contestación en Beanstalk y hoy la compartimos contigo.

Solución:

Hardware / SO / Software

Anfitrión: Linux Mint 18 Cinnamon de 64 bits (completamente actualizado); Versión de kernel 4.4.0-47-genérico

Huésped: Windows 8.1 Pro de 64 bits (completamente actualizado)

Procesador: Intel Core i7-4700HQ, (caché de 6 MB, 4 núcleos físicos u 8 con Hyper-Threading), CPU Benchmark

VirtualBox: Versión 5.1.10 r112026 (Qt5.5.1)

Adiciones de invitados: Instalado y actualizado

Herramienta de referencia n. ° 1: WinRAR versión 5.40 final de 64 bits

Herramienta de referencia n. ° 2: VeraCrypt versión 1.19 final de 64 bits


Preparación

En ambos casos, esperé después del arranque hasta que la CPU, la RAM y la unidad de disco estén estables cerca de los puntos cero.


Método

  1. Clonando la máquina virtual original para tener dos idénticas.
  2. Lo he hecho, para el segundo paso, desde que el reinicio desactivó el Antivirus señalado en la parte inferior de esta respuesta y actualicé WinRAR en ambos casos de una versión Beta a la Final.
  3. He hecho la misma preparación que se señaló anteriormente.
  4. La máquina virtual se ejecutó en primer plano, sin que se ejecutara ninguna otra aplicación que consumiera mucho tiempo de CPU, he desactivado lo que pude con el propósito de que la prueba no se vea influenciada.
  5. Para incluir el almacenamiento en caché potencial dentro o fuera del sistema, ejecuté la misma prueba dos veces en consecuencia. El beneficio es casi nulo.

Resultados

WinRAR

  1. 4 núcleos => 7.5 minutos (más corta el tiempo es mejor)

    WinRAR con 4 núcleos habilitados

    WinRAR con 4 núcleos habilitados, 1,5 GiB procesados ​​en 7.5 minutos.

  2. 8 núcleos => 4.5 minutos (más corta el tiempo es mejor)

    WinRAR con 8 núcleos habilitados

    WinRAR con 8 núcleos habilitados, 1,5 GiB procesados ​​en 4.5 minutos.


VeraCrypt

  1. 4 núcleos => velocidad 2.6 GiB / s (más alto la velocidad es mejor)

    VeraCrypt con 4 núcleos habilitados

    VeraCrypt con 4 núcleos habilitados, velocidad AES acelerada por HW (AES-NI) 2.6 GiB / s.

  2. 8 núcleos => velocidad 3.9 GiB / s (más alto la velocidad es mejor)

    VeraCrypt con 8 núcleos habilitados

    VeraCrypt con 8 núcleos habilitados, velocidad AES acelerada por HW (AES-NI) 3.9 GiB / s.


Conclusión

Podría ejecutar tantas pruebas como sea necesario. Pero me imagino, si estos dos, uno de los cuales es una prueba de compresión bastante compleja, el segundo es un conjunto de pruebas de cifrado bastante complejas, cuál sería el punto.

Ambos puntos de referencia muestran una marcada diferencia. No veo ninguna razón para creer que sus resultados son inexactos, ya que seguí una preparación y un método bastante rigurosos, además, estas pruebas se han realizado en RAM para descartar cuellos de botella de E / S. Desde mi punto de vista, la advertencia mencionada en la pregunta puede aplicarse a algunas condiciones, pero ciertamente no a todas. Después de haber compartido con ustedes estos resultados bastante notables, estoy seguro de que están de acuerdo conmigo en que esta advertencia probablemente no debería tomarse tan en serio en las CPU modernas con Hyper-Threading con la última versión de VirtualBox. Una cosa es segura: no me tome por la palabra y pruébelo en sus propias condiciones, antes de decidir aplicar esta configuración de forma permanente.


Nuevo punto de referencia

Anfitrión + Invitado: Linux Mint 19.2 “Tina” – Canela (64 bits); ambos con kernel: 5.3.0-24-generic.

Procesador: Intel® Core ™ i7-7700HQ; Caché de 6 MB, hasta 3,80 GHz, 4 núcleos físicos u 8 con Hyper-Threading, comparación de referencia de CPU

VirtualBox: Versión 6.1.0 r135406 (Qt5.9.5)

Adiciones de invitados: Instalado y actualizado

Herramienta de referencia: VeraCrypt versión 1.24 Hotfix1 64-bit final (página web, enlace de descarga de deb directo)


Preparación y método

Igual que el índice de referencia anterior.


Resultados

Encriptación VeraCrypt AES con 4 núcleos

⟶ velocidad 4.8 GiB / s (mayor velocidad es mejor)

Encriptación VeraCrypt AES 4 núcleos = velocidad 4.8 GiB / s


Encriptación VeraCrypt AES con 8 núcleos (advertencia de Hyper-Threading emitida)

⟶ velocidad 7,2 GiB / s (mayor velocidad es mejor)

Encriptación VeraCrypt AES 8 núcleos = velocidad 7.2 GiB / s

Conclusión

Maravilloso aumento del 50% en el rendimiento con Hyper-Threading habilitado, pero solo con el AES, lamentablemente, tendré que ejecutar una prueba más completa. Volveré en unos días con resultados.

Como diseñador de sistemas operativos, estoy completamente de acuerdo con el resultado de las mediciones. La cantidad de tonterías que se producen en otros lugares sobre el tema es increíble.

Vea el número de núcleos lógicos como el número de subprocesos / procesos paralelos que puede ejecutar el HW. Eso se logra duplicando, por ejemplo, los registros y los punteros de instrucción de un núcleo de CPU. El propio núcleo de la CPU ahora decide qué subproceso (puntero de instrucción) utilizar. Decidirá usar el otro subproceso ya que la instrucción del subproceso actual no está disponible en la caché y debe ser recuperada, por ejemplo, de la memoria o de la caché L3. Este mecanismo creará una mejora potencial del 10% al 30% en las instrucciones / segundos o en el rendimiento de la CPU.

Si ejecuta una sola aplicación con un hilo, no podrá obtener este beneficio, pero si ejecuta dos aplicaciones de alta carga en, por ejemplo, un HT Pentium antiguo, podrá aprovechar los beneficios. Lo mismo es true por supuesto para aplicaciones que tienen más de un hilo. Mi sistema Linux tiene 200 subprocesos, por lo que siempre están presentes algunos beneficios que dependen de la carga real. Todas estas observaciones se aplican sin virtualización.

Virtualbox solo limita la cantidad de subprocesos que se pueden ejecutar en paralelo para cada máquina virtual (VM), pero el programador de procesos del host cambiará los procesadores lógicos y, por lo tanto, los procesadores físicos, en los que los procesos de la VM se ejecutan dinámicamente. Si ejecuta aplicaciones de alta carga en una máquina virtual, los núcleos lógicos adicionales le brindarán el mismo beneficio del 10% al 30%. La carga puede ser una sola aplicación multiproceso o un conjunto de aplicaciones diferentes.

En los sistemas modernos con VT-x o AMD-V, no existe una penalización de rendimiento por maximizar el número de núcleos lógicos, ya que tampoco existe una penalización de rendimiento notable por ejecutar más máquinas virtuales al mismo tiempo. Su límite es el rendimiento de su chip de CPU, por lo que no puede renderizar videos en 3 VM al mismo tiempo sin ralentizar cada VM, porque tienen que compartir la misma CPU física.

Su sistema host podría volverse irresponsable si procesa un video en una máquina virtual con todos los núcleos lógicos presentes, pero tendría casi el mismo problema si ejecutara esa aplicación de procesamiento en su host. Al menos en VM tiene una opción y podría resolverlo limitando la carga máxima de la CPU al 80% -90% o reduciendo la cantidad de núcleos por este motivo.

Si te gusta la idea, eres capaz de dejar una reseña acerca de qué te ha parecido este post.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *