Direct Data Access (DDA), también conocido como 'passthrough' o 'device assignment', es una capacidad de virtualización que permite a un sistema operativo invitado (máquina virtual) tener acceso exclusivo y directo a un dispositivo de hardware físico específico. A diferencia de la virtualización de E/S tradicional, donde el hipervisor intermedia todas las operaciones de E/S, DDA asigna el dispositivo directamente a la VM, eludiendo la capa de virtualización. Esto se logra mediante tecnologías como Intel VT-d o AMD-Vi (IOMMU), que permiten al hipervisor reasignar la propiedad de los dispositivos PCIe a una VM, permitiendo que el sistema operativo invitado cargue sus propios drivers nativos para interactuar directamente con el hardware.
En el mundo real, DDA es fundamental para cargas de trabajo que requieren alto rendimiento y baja latencia de E/S. Por ejemplo, en entornos de virtualización de escritorios (VDI) o estaciones de trabajo virtuales, DDA se utiliza para asignar GPUs físicas a VMs, permitiendo renderizado gráfico acelerado y computación GPGPU. En escenarios de almacenamiento, se puede asignar un NVMe SSD completo a una VM para lograr un rendimiento de E/S cercano al nativo. Otros ejemplos incluyen la asignación de tarjetas de red de alto rendimiento (NICs) para aplicaciones de baja latencia o FPGAs para aceleración de hardware, común en entornos de computación de alto rendimiento (HPC) y aprendizaje automático (ML). Plataformas como VMware vSphere (con 'VMDirectPath I/O'), Microsoft Hyper-V (con 'Discrete Device Assignment') y KVM (con 'PCI Passthrough') implementan DDA.
Para un arquitecto, DDA es una herramienta poderosa para optimizar el rendimiento de cargas de trabajo virtualizadas críticas. La decisión de usar DDA implica varios trade-offs: si bien mejora significativamente el rendimiento y reduce la latencia al eliminar la sobrecarga del hipervisor, también introduce limitaciones en la flexibilidad de la VM, como la imposibilidad de migración en vivo (vMotion) del dispositivo asignado, snapshots o suspensión. Además, un dispositivo asignado directamente no puede ser compartido entre múltiples VMs, lo que puede impactar la consolidación y la utilización de recursos. El arquitecto debe evaluar cuidadosamente los requisitos de rendimiento y flexibilidad, el costo de los dispositivos dedicados y la complejidad de la gestión, para determinar si los beneficios de DDA superan sus limitaciones en un diseño de sistema particular.