Ir al contenido

Perfiles

Un perfil describe cómo se arma una VM: CPU, memoria, disco, parte de la GPU, streaming y las optimizaciones que se aplican dentro de Windows. Los perfiles son archivos JSON en profiles/.

Perfil CPU Memoria Disco Invitado
balanced 8 hilos 8 GB fijos dinámico, 128 GB plan Alto rendimiento, sin suspensión
max-performance 8 hilos, reserva 100 %, peso máximo (10000), topología SMT del host 8 GB fijos fijo, 96 GB plan Máximo rendimiento, Modo de juego, sin SysMain ni indexador, efectos visuales mínimos

base tiene los valores comunes a todos los perfiles y no se usa directamente. En la app, balanced aparece como Equilibrado y max-performance como Máximo rendimiento.

Un perfil puede extender otro. Los objetos se mezclan (ganan los valores del hijo) y las listas se reemplazan completas. La herencia circular es un error.

extendsextends max-performance balanced base

max-performance solo indica lo que cambia respecto de balanced:

{
"extends": "balanced",
"description": "…",
"vm": {
"cpu": { "count": 8, "reservePercent": 100, "relativeWeight": 10000, "hwThreadsPerCore": 0 },
"memoryGB": 8,
"disk": { "sizeGB": 96, "type": "Fixed" }
},
"guest": {
"optimizations": ["power-plan-ultimate", "disable-sleep", "game-mode", "disable-sysmain", "disable-search-indexing", "visual-effects-performance"]
}
}

Como guest.optimizations es una lista, reemplaza la del padre en lugar de sumarse a ella.

Campo Valor en base Significado
backend hyperv-gpup Cómo se le da la GPU a la VM. Consulta Arquitectura.
vm.root C:\GpuVM Carpeta de las VMs.
vm.cpu.count 6 Hilos. Al menos 2, y al menos uno libre para el host.
vm.cpu.reservePercent 0 Reserva de CPU, de 0 a 100.
vm.cpu.relativeWeight 100 Peso relativo, de 1 a 10000.
vm.cpu.hwThreadsPerCore null Topología SMT; 0 sigue al host. Requiere configuración de VM 9.0 o superior.
vm.memoryGB 8 Memoria fija. Al menos 4, dejando al menos 4 GB al host.
vm.disk.sizeGB / vm.disk.type 128 / Dynamic Al menos 64 GB; Dynamic o Fixed.
vm.network.switch Default Switch Switch de Hyper-V.
vm.network.isolation true Solo internet: la VM no llega al equipo ni a la red local (laboratorio 010). No se aplica en un switch externo.
vm.secureBoot, vm.tpm true Secure Boot y TPM.
vm.mmio.lowGB / vm.mmio.highGB 1 / 32 Espacio de E/S mapeada en memoria para la GPU.
gpu.match NVIDIA Texto que debe contener el nombre de la GPU del host.
gpu.allocationPercent 100 Parte de la GPU para la VM, de 1 a 100.
streaming Sunshine, pantalla virtual, altavoz USB Consulta Streaming.
guest.edition Pro Edición de Windows que se aplica desde el ISO.
guest.userName gpuvm Cuenta local.
guest.autoLogon true Inicio de sesión automático.
guest.optimizations power-plan-high, disable-sleep Optimizaciones que se aplican en el primer inicio.

GpuVM valida el perfil contra tu hardware antes de crear o cambiar una VM.

Cada optimización es una entrada en guest/optimizations.ps1 con una descripción y un bloque idempotente.

Nombre Efecto
power-plan-high Plan de energía Alto rendimiento.
power-plan-ultimate Plan Máximo rendimiento (Ultimate Performance); si no está disponible, Alto rendimiento.
disable-sleep Sin suspensión, hibernación ni apagado de pantalla (cortan el streaming).
game-mode Modo de juego de Windows activado.
disable-sysmain Desactiva SysMain (Superfetch); en un disco virtual solo agrega E/S.
disable-search-indexing Desactiva el indexador de Windows Search.
visual-effects-performance Efectos visuales ajustados para rendimiento.

New-GpuVM, Set-GpuVM, Test-GpuVMHost y Get-GpuVMProfile aceptan -Override para ajustes puntuales sin crear un perfil:

Ventana de terminal
Set-GpuVM -Name win11 -Override @{ vm = @{ cpu = @{ count = 10 }; memoryGB = 11 } }
Get-GpuVMProfile -Name max-performance -Override @{ gpu = @{ allocationPercent = 50 } } # ver el resultado ya resuelto

Cambiar de perfil o de ajustes requiere la VM apagada (Set-GpuVM). Sin -Profile parte de la configuración actual de la VM y solo cambia lo del override; con -Profile cambia de perfil pero conserva el disco, la carpeta y las preferencias de Moonlight. Las Opciones de la app usan el mismo mecanismo.

Agrega un JSON en profiles/ que extienda uno existente y elígelo por su nombre:

{
"extends": "max-performance",
"description": "10 hilos y 12 GB.",
"vm": { "cpu": { "count": 10 }, "memoryGB": 12 }
}
Ventana de terminal
./gpuvm.ps1 profiles # lista los perfiles
./gpuvm.ps1 check -Profile mi-perfil # lo valida contra este equipo

Prueba un cambio en un laboratorio antes de llevarlo a un perfil.