2. Optimización de recursos y rendimiento

Para cargas de trabajo de alta exigencia (bases de datos transaccionales, motores analíticos o servicios web de alta concurrencia), NorTK VM permite ajustar de forma granular los subsistemas de cómputo, memoria, almacenamiento y redes para eliminar cuellos de botella y maximizar el rendimiento del hardware anfitrión.

2.1. Afinación de CPU: Modelo host-passthrough frente a modelos genéricos

Al crear una máquina virtual, libvirt permite seleccionar entre diversos modos de emulación de CPU:

  • Modelo genérico (qemu64): Emula un procesador estándar de 64 bits con un conjunto básico de instrucciones. Garantiza la máxima compatibilidad al migrar entre procesadores de diferentes generaciones, pero enmascara instrucciones criptográficas y vectoriales modernas.

  • Modelo host-model: Expone la mayoría de las características de la CPU del anfitrión, permitiendo migraciones seguras entre procesadores del mismo fabricante y familia arquitectónica.

  • Modelo host-passthrough: Pasa de forma transparente el 100% de las instrucciones y capacidades de la CPU física del anfitrión a la máquina virtual (incluyendo instrucciones AVX-512, AES-NI y extensiones de virtualización anidada).

Modelo de CPU

Impacto en rendimiento

Compatibilidad en migración en vivo

qemu64

Bajo (penalización del 15% al 30% en cómputo)

Universal entre cualquier procesador x86_64

host-model

Alto (penalización menor al 3%)

Compatible dentro de la misma familia de CPU

host-passthrough

Nativo (0% de sobrecarga por emulación)

Requiere procesadores idénticos en los nodos

2.2. Gestión elástica de memoria: Memory ballooning y compactación con KSM

La asignación y optimización de memoria en NorTK VM descansa en dos mecanismos coordinados:

  • Asignación elástica mediante VirtIO Ballooning:

    El controlador paravirtualizado virtio-balloon permite al hipervisor reclamar memoria que el huésped tiene asignada pero no está utilizando activamente. Cuando el anfitrión experimenta presión de memoria, el controlador paravirtualizado solicita una reserva de memoria en el espacio de direcciones del huésped, lo que induce al kernel invitado a liberar páginas de memoria intermedia y caché y devolver los marcos de memoria física al hipervisor anfitrión.

  • Compactación mediante KSM (Kernel Samepage Merging):

    Daemon del kernel Linux (ksmd) que escanea la memoria RAM compartida entre máquinas virtuales para detectar páginas con contenido idéntico (por ejemplo, librerías de sistema operativo repetidas entre múltiples servidores CentOS Stream idénticos).

    • Si detecta páginas duplicadas, las fusiona en una única página de memoria física marcada como de solo lectura (copy-on-write).

    • Si cualquiera de los huéspedes intenta modificar la página, el kernel genera una copia privada de inmediato sin interrumpir el servicio.

    • KSM permite incrementar la densidad de máquinas virtuales por nodo anfitrión entre un 20% y un 40% en entornos homogéneos.

2.3. Políticas de almacenamiento en caché para discos virtuales

La directiva cache en la configuración de disco de QEMU determina cómo interactúan las operaciones de escritura con la memoria intermedia del sistema anfitrión y la memoria caché del disco físico:

Modo de caché

Flujo de escritura

Recomendación para producción

none

I/O directa (O_DIRECT). Salta la caché del anfitrión y escribe directo en disco.

Obligatorio para producción y clústeres. Máximo desempeño y soporte de Live Migration.

writethrough

Escribe simultáneamente en la caché del anfitrión y en el disco antes de confirmar.

Mayor seguridad ante cortes eléctricos en almacenamiento local sin respaldo de batería.

writeback

Confirma la escritura tan pronto los datos ingresan a la caché del anfitrión.

Riesgo de pérdida de datos ante reinicio abrupto del host; no apto para bases de datos críticas.

unsafe

Ignora todas las solicitudes de sincronización a disco (fsync).

Reservado exclusivamente para entornos temporales de compilación o pruebas desechables.

2.4. Optimización de I/O de red con colas múltiples y descarga por hardware

Para interfaces de red de alta velocidad (10 GbE, 25 GbE o 100 GbE):

  • Colas múltiples en VirtIO Net (multi-queue): Por defecto, una tarjeta de red virtual procesa interrupciones en un único núcleo de CPU virtual. Habilitar multi-queue permite asociar múltiples colas de transmisión y recepción a diferentes vCPUs de la máquina virtual, escalando el ancho de banda de forma paralela sin saturar un solo hilo de ejecución.

  • Descarga de segmentación TCP (TSO y GSO): El hipervisor delega la división de paquetes TCP de gran tamaño a la tarjeta física (NIC), reduciendo drásticamente el consumo de CPU del huésped durante transferencias masivas de datos.