🚀 B200 starting at $3.75/hr. The best price you'll find. DC in US West → (Access it from button on top after login).

Get Your B200 →
Start Building
Technical

Bare Metal vs VM GPU Performance: What the Benchmarks Actually Show

Bare metal vs virtual machine GPU performance: the benchmark numbers cloud providers quote are single-workload, ideal-condition results. Here is what the data actually shows across inference, training, and multi-node distributed workloads.

Author photo
packet.ai Team
July 19, 2026

GPU passthrough on KVM delivers 98 to 100 percent of bare metal GPU performance on single-node workloads, but real-world virtualization overhead on vGPU-based shared clouds ranges from 4 to 25 percent depending on workload type, and NCCL all-reduce latency in heavily virtualized multi-node setups can balloon by 200 to 400 percent. The decision isn't about bare metal versus VMs in the abstract - it's about matching isolation model to workload profile.

Key takeaways

  • Single-GPU passthrough overhead: 0-2% on modern KVM/VFIO. This is not where you lose performance.
  • vGPU time-slicing overhead: 4-12% for compute-bound workloads, up to 25% for memory-bandwidth-bound workloads under contention.
  • Multi-node NCCL all-reduce: the real cliff. SR-IOV adds 18-35% latency vs bare metal NVLink; vGPU adds 200-400% in congested scenarios.
  • Inference p99 latency: dedicated bare metal outperforms shared vGPU by 15-40% at high QPS, primarily due to scheduling jitter.
  • The right question isn't bare metal vs VM - it's dedicated vs shared scheduling, and what your workload actually needs.

The virtualization taxonomy that actually matters

"Bare metal" and "virtual machine" are often used as if they're a single axis. They're not. There are at least four distinct isolation models in GPU cloud:

1. Full passthrough (PCIe/VFIO): The GPU is attached directly to a single VM. No sharing, no time-slicing. Overhead is driver and PCIe transaction costs: 0-2% on modern hardware. This is what packet.ai's Dedicated tier uses.

2. SR-IOV virtual functions: The GPU exposes multiple virtual functions, each assigned to a separate VM. Compute isolation is good; NVLink fabric and P2P transfers are not shared across VFs. Common in H100 SXM deployments.

3. NVIDIA vGPU (MIG + time-slicing): Multiple VMs share a physical GPU through NVIDIA's driver stack. MIG (Multi-Instance GPU) provides hard partitions; time-slicing provides soft partitions. Both introduce overhead that scales with contention.

4. Container-level isolation (no VM): The workload runs in a container on bare metal, with GPU device access via nvidia-container-toolkit. Zero hypervisor overhead; isolation is cgroup and namespace-based. Weakest security boundary.

The benchmark literature almost universally conflates these. A paper showing "2% VM overhead" is usually measuring passthrough. A blog post showing "20% overhead" is usually measuring time-sliced vGPU under contention. They're describing different things.

Single-GPU inference: where the gap is smallest

For single-GPU inference workloads - running a model that fits entirely in one card's VRAM - the performance difference between bare metal passthrough and a well-configured VM is small.

MLPerf Inference v4.1 results show A100 80GB performance is within 1-3% across bare metal and passthrough VM configurations for ResNet-50 and BERT-Large. The overhead shows up in:

  • IOMMU translation latency for DMA transfers: 0.5-1.5% for large contiguous allocations
  • Interrupt routing overhead: negligible for GPU workloads (GPUs poll, they don't interrupt-drive computation)
  • Memory pinning overhead at startup: one-time cost, not steady-state

Where you see more separation is p99 tail latency under load. A shared vGPU environment with 4 tenants time-sliced on the same A100 will show inference p99 latency 15-40% higher than dedicated at high QPS, because scheduling jitter compounds at the tail. The median might be within 5%; the 99th percentile is where production SLAs break.

The practical implication: for batch inference, offline scoring, or latency-insensitive workloads, a well-managed vGPU environment can be cost-efficient. For real-time serving with p99 SLAs, dedicated hardware is the only reliable answer.

Training: where isolation model starts to matter more

Single-GPU training shows similar patterns to inference - passthrough overhead is small, vGPU contention overhead is workload-dependent.

The gap widens with memory-bandwidth-bound workloads. Training large language models is heavily bandwidth-bound (VRAM bandwidth, not FLOPS, is often the bottleneck). vGPU time-slicing introduces context-switch overhead that disrupts the prefetch/compute pipeline. Results from IEEE papers on BERT-Large fine-tuning show:

  • Passthrough vs bare metal: 1-2% overhead
  • MIG (hard partition, A100): 3-8% overhead depending on instance size
  • Time-sliced vGPU under 2x contention: 12-18% overhead
  • Time-sliced vGPU under 4x contention: 20-28% overhead

These numbers assume a well-tuned vGPU environment. Poorly configured time-slicing (wrong scheduling policy, incorrect memory reservation) can push overhead above 30%.

Multi-node: the real cliff

This is where isolation model stops being a marginal consideration and becomes the dominant factor in whether a workload is feasible at all.

Distributed training across multiple nodes requires low-latency, high-bandwidth GPU-to-GPU communication. In bare metal NVLink/InfiniBand configurations, NCCL all-reduce bandwidth approaches hardware limits. In virtualized environments:

SR-IOV with InfiniBand passthrough: 18-35% higher all-reduce latency versus bare metal NVLink. This is from actual InfiniBand SR-IOV deployments at scale. The overhead comes from VF interrupt processing and IOMMU pressure on RDMA paths.

vGPU with virtualized networking: 200-400% higher all-reduce latency in congested environments. NCCL is extremely sensitive to jitter; a single slow step causes the entire collective to wait. In a shared environment where other tenants are generating I/O, the variance is unacceptable for large-scale training.

This is why distributed training at scale - 64+ GPUs, multi-node - is almost always run on bare metal or passthrough. Not because of average performance, but because training stability requires predictable step times. A 10% slower average with 2x variance in step time is worse than 20% slower average with 5% variance, because gradient staleness compounds.

The packet.ai scheduling model

packet.ai's Dynamic tier is not vGPU time-slicing. It's a scheduling model where workloads are co-located on the same physical infrastructure but assigned dedicated GPU resources for the duration of their job - no time-slicing, no VRAM sharing.

The isolation model is closer to SR-IOV passthrough than to vGPU: each tenant gets deterministic access to their assigned GPU capacity. The "dynamic" refers to the scheduler's ability to place workloads across the fleet based on utilization patterns, not to sharing GPU resources within a single job.

This matters for benchmarking: comparing packet.ai Dynamic to a cloud provider's "shared GPU" offering is comparing different isolation models. The relevant comparison is dedicated passthrough versus dedicated passthrough, at different price points.

When to choose what

Based on the benchmark literature and production deployment patterns:

Single-GPU inference, latency-sensitive (p99 SLA < 100ms at high QPS): Dedicated bare metal or passthrough VM. vGPU tail latency is unpredictable under load.

Single-GPU inference, batch or async (latency-tolerant): Shared infrastructure with scheduler-enforced isolation (like Dynamic) is cost-efficient. 5-15% overhead on median latency is acceptable; you're optimizing for $/token.

Single-GPU training, model fits in VRAM: Dedicated or passthrough. The overhead of contended vGPU (12-28%) compounds over a multi-hour training run.

Multi-GPU, single-node (NVLink scale): Dedicated. NVLink performance is critical; vGPU and SR-IOV both add meaningful overhead to NVLink P2P transfers.

Multi-node (InfiniBand scale, 64+ GPUs): Bare metal only. No production-grade distributed training framework tolerates the jitter introduced by shared virtualization layers at this scale.

Reading benchmark claims critically

When a cloud provider claims "near bare metal performance" on their GPU VMs, ask:

  • What is the isolation model? Passthrough, SR-IOV, or vGPU?
  • What workload? Single-GPU inference and multi-node training have very different sensitivity to virtualization overhead.
  • What metric? Average throughput will always look better than p99 latency under load.
  • Under what contention? A benchmark run as the only tenant on a host will always outperform production conditions.

The benchmark literature is clear: passthrough overhead is small and acceptable for most workloads. Contended vGPU overhead is significant and workload-dependent. Multi-node virtualization overhead is often prohibitive for serious distributed training.

The right question isn't "bare metal vs VM." It's "what isolation model does this provider actually use, and does it match what my workload needs?"

Waste less compute.

Same models. Same API. Fraction of the cost. Start free — no credit card required.

Start Building →

More from the blog