Administración de recursos de CPU del host de Hyper-V

Los controles de recursos de CPU del host de Hyper-V que se incluyeron en Windows Server 2016 o versiones posteriores permiten a los administradores de Hyper-V administrar y asignar mejor los recursos de CPU del servidor host entre la "raíz", o partición de administración, y las máquinas virtuales invitadas. Con estos controles, los administradores pueden dedicar un subconjunto de los procesadores de un sistema host a la partición raíz. Esto permite separar el trabajo realizado en un host de Hyper-V de las cargas de trabajo que se ejecutan en máquinas virtuales invitadas mediante su ejecución en subconjuntos independientes de los procesadores del sistema.

Para más información sobre el hardware de los hosts de Hyper-V, consulte Requisitos de sistema de Hyper-V en Windows 10.

Información previa

Antes de establecer controles para los recursos de CPU del host de Hyper-V, resulta útil revisar los conceptos básicos de la arquitectura de Hyper-V. Puede encontrar un resumen general en la sección Arquitectura de Hyper-V. Estos son conceptos importantes para este artículo:

  • Hyper-V crea y administra particiones de máquina virtual en las que se asignan y comparten los recursos de proceso, bajo control del hipervisor. Las particiones proporcionan límites de aislamiento sólidos entre todas las máquinas virtuales invitadas y entre estas y la partición raíz.

  • La partición raíz es en sí misma una partición de máquina virtual, aunque tiene propiedades únicas y privilegios mucho mayores que las máquinas virtuales invitadas. La partición raíz proporciona los servicios de administración que controlan todas las máquinas virtuales invitadas, proporciona compatibilidad con dispositivos virtuales para invitados y administra todas las E/S del dispositivo para las máquinas virtuales invitadas. Microsoft recomienda encarecidamente no ejecutar ninguna carga de trabajo de aplicación en una partición del host.

  • Cada procesador virtual de la partición raíz se asigna con una correspondencia estricta 1:1 a un procesador lógico subyacente. Un procesador virtual de host siempre se ejecutará en el mismo procesador lógico subyacente: no hay ninguna migración de los procesadores virtuales de la partición raíz.

  • De forma predeterminada, los procesadores lógicos en los que se ejecutan los procesadores virtuales de host también pueden ejecutar procesadores virtuales invitados.

  • El hipervisor puede programar un procesador virtual invitado para que se ejecute en cualquier procesador lógico disponible. Aunque el programador del hipervisor se encarga de tener en cuenta la ubicación temporal de la caché, la topología NUMA y muchos otros factores al programar un procesador virtual de invitado, este, en última instancia, se podría programar en cualquier procesador lógico del host.

Configuración de raíz mínima o "Minroot"

Las primeras versiones de Hyper-V tenían un límite máximo arquitectónico de 64 procesadores virtuales por partición. Esto se aplica tanto a las particiones raíz como a las de invitado. A medida que aparecían sistemas con más de 64 procesadores lógicos en servidores de gama alta, Hyper-V también evolucionó sus límites de escalado de hosts para admitir estos sistemas más grandes, llegando en un momento dado a admitir un host con hasta 320 procesadores lógicos. Sin embargo, superar el límite de 64 procesadores virtuales por partición en aquel momento presentaba varios retos y producía dificultades que hacían prohibitivo admitir más de 64 procesadores por partición. Para solucionar este problema, Hyper-V limitó el número de procesadores virtuales dados a la partición raíz a 64, aunque la máquina subyacente tuviera muchos más procesadores lógicos disponibles. El hipervisor seguiría usando todos los procesadores lógicos disponibles para ejecutar los procesadores virtuales invitados, pero limitaba artificialmente la partición raíz a 64. Esta configuración se conoce como la configuración de "raíz mínima" o "minroot". Las pruebas de rendimiento confirmaron que, incluso en sistemas a gran escala con más de 64 procesadores lógicos, la raíz no necesitaba más de 64 procesadores virtuales raíz para proporcionar respaldo suficiente a un gran número de máquinas y procesadores lógicos invitados; de hecho, menos de 64 procesadores virtuales raíz era a menudo suficiente, dependiendo, por supuesto, del número y tamaño de las máquinas virtuales invitadas, las cargas de trabajo específicas que se estuvieran ejecutando, etc.

Este concepto de "minroot" se sigue utilizando hoy en día. De hecho, aunque Hyper-V para Windows Server 2016 aumentó su límite máximo de compatibilidad arquitectónica para hospedar procesadores lógicos a 512, la partición raíz seguirá estando limitada a un máximo de 320 procesadores lógicos.

Uso de Minroot para restringir y aislar recursos de proceso de host

Con el umbral predeterminado alto de 320 procesadores lógicos de Hyper-V para Windows Server 2016, la configuración minroot solo se usará en los sistemas de servidores más grandes. Sin embargo, esta funcionalidad se puede configurar en un umbral mucho menor mediante el administrador del host de Hyper-V y, por tanto, aprovecharse para restringir considerablemente la cantidad de recursos de CPU del host disponibles en la partición raíz. El número específico de procesadores lógicos de la partición raíz que se van a usar debe elegirse cuidadosamente para que admita las demandas máximas de las máquinas virtuales y cargas de trabajo asignadas al host. Sin embargo, se pueden determinar unos valores razonables del número de procesadores lógicos de host mediante una evaluación y supervisión cuidadosas de las cargas de trabajo de producción, y validarlos en entornos de no producción antes de su implementación generalizada.

Habilitación y configuración de Minroot

La configuración minroot se controla a través de entradas BCD del hipervisor. Para habilitar minroot, desde un símbolo del sistema de cmd con privilegios de administrador:

     bcdedit /set hypervisorrootproc n

Donde n es el número de procesadores lógicos de la partición raíz.

El sistema debe reiniciarse y el nuevo número de procesadores raíz se conservará durante la vigencia del arranque del sistema operativo. La configuración minroot no se puede cambiar dinámicamente en el entorno de ejecución.

Si hay varios nodos NUMA, cada nodo obtendrá n/NumaNodeCount procesadores.

Tenga en cuenta que con varios nodos NUMA, debe asegurarse de que la topología de la máquina virtual sea tal que haya suficientes procesadores lógicos libres (es decir, procesadores lógicos sin procesadores virtuales raíz) en cada nodo NUMA para ejecutar los procesadores virtuales del nodo NUMA de la máquina virtual correspondiente.

Comprobación de la configuración minroot

Puede comprobar la configuración minroot del host mediante el Administrador de tareas, como se muestra a continuación.

Host's minroot configuration shown in Task Manager

Si Minroot está activo, el Administrador de tareas mostrará el número de procesadores lógicos asignados actualmente al host, además del número total de procesadores lógicos del sistema.