Me gustaría preguntar si es posible reservar núcleos solo para máquinas virtuales específicas y evitar que otros los usen. Déjame explicarte más detalladamente:
Me gustaría tener 2 máquinas virtuales fijadas a los núcleos 0-7 y 16-23 y quiero evitar que el sistema (kernel isolcpus, rcu_nocbs y systemd AllowedCPU) y otras máquinas virtuales utilicen estos núcleos. Tampoco me importa qué núcleos ejecutarán otras máquinas virtuales, excepto que no deberían usar los núcleos 0-7 y 16-23. Además, no quiero fijarlos explícitamente a ningún núcleo específico. Solo quiero que usen núcleos del 8 al 15 y del 24 al 31.
¿Hay alguna manera de lograrlo?
Sólo para agregar.
Tengo 2 máquinas virtuales con transferencia de GPU fijadas a núcleos "reservados". Quiero tener estos núcleos reservados sólo para estas dos máquinas virtuales. Quiero evitar que kernel, systemd, otros procesos y también kvm-qemu usen estos núcleos reservados (en el caso de qemu, excepto esas dos máquinas virtuales de juegos, por supuesto). Parece que isolcpus rcu_nocbs y systemd AllowedCPUs funcionan correctamente, pero libvirt (o qemu o ambos) simplemente ignora estas configuraciones. Qemu ejecuta correctamente esos dos virtuales en CPU fijadas (configuradas con libvirt), pero cualquier otra máquina que no esté fijada explícitamente puede ejecutarse en cualquier núcleo, incluso si está aislada del kernel y no está permitida para systemd.
Respuesta1
Configure "CPUAffinity" en /etc/systemd/system.conf para seleccionar qué CPU pueden usar los procesos generales del sistema operativo del host de forma predeterminada, es decir, la inversa de las CPU que desea reservar para el uso de VM dedicada. La configuración 'isolcpus' del kernel no debe usarse excepto si se configura KVM Real-Time, porque también gira la programación completamente en las CPU, lo que evita que se equilibren los subprocesos QEMU que no son VCPU.
Con la configuración systemd presente, las máquinas virtuales se iniciarán en los núcleos no reservados de forma predeterminada. Luego puede usar la configuración de fijación de CPU en libvirt para las dos máquinas virtuales en las que desea usar los núcleos reservados.