Virtio je paravirtualizovaný ovladač, což znamená, že operační systém a ovladač si uvědomují, že se nejedná o fyzické zařízení. Ovladač je ve skutečnosti API mezi hostem a hypervizorem, takže jeho rychlost je zcela odpojena od jakéhokoli fyzického zařízení nebo standardu Ethernet.
To je dobrá věc, protože je to rychlejší než hypervizor, který předstírá, že je fyzickým zařízením a používá na tok libovolný koncept „rychlosti spojení“.
VM pouze ukládá rámce na sběrnici a je úkolem hostitele, aby se vypořádal s fyzickými zařízeními; není potřeba, aby VM věděl nebo se staral, jaká je rychlost připojení fyzických zařízení hostitelů.
Jednou z výhod toho je, že když se pakety pohybují mezi 2 VM na stejném hostiteli, mohou posílat pakety tak rychle, jak je CPU hostitele může přesunout z jedné sady paměti do druhé, nastavení „rychlosti linky“ zde pouze vloží nepotřebné omezení rychlosti.
To také umožňuje hostiteli vytvořit týmový adaptér a rozložit provoz na více linek, aniž by musel být každý virtuální počítač explicitně konfigurován, aby získal plnou šířku pásma nastavení.
 Pokud chcete vědět, jak rychle můžete skutečně přenášet data z vašeho VM do jiného umístění, musíte provést skutečné testy propustnosti pomocí nástrojů jako iperf .
 Abych to trochu rozvedl, protože jsem do toho nedávno přišel a byl jsem také částečně zmaten nedostatkem podrobností o rychlosti při spuštění ethtool na virtuálním počítači:
$ ethtool eth0
Settings for eth0:
    Link detected: yes
 
 Když jsem se podíval do lshw výstup:
$ lshw -class network -short
H/W path            Device      Class          Description
==========================================================
/0/100/3                        network        Virtio network device
/0/100/3/0          eth0        network        Ethernet interface
 To nám říká, že ovladač zařízení používaný pro tento virtuální počítač je virtualizovaný, v tomto případě se jedná o virtuální počítač běžící na KVM, takže virtuální počítač používá ovladače virtio_* pro všechny své interakce s "hardwarem".
$ lsmod | grep virt
virtio_rng             13019  0
virtio_balloon         13864  0
virtio_net             28096  0
virtio_console         28066  1
virtio_scsi            18453  2
virtio_pci             22913  0
virtio_ring            22746  6 virtio_net,virtio_pci,virtio_rng,virtio_balloon,virtio_console,virtio_scsi
virtio                 14959  6 virtio_net,virtio_pci,virtio_rng,virtio_balloon,virtio_console,virtio_scsi
 Tyto moduly jádra jsou dostupné pro určité operační systémy (Linux, BSD a Windows). S těmito ovladači nainstalovanými ve vašem VM má jádro ve vašem VM speciální přístup k základnímu hardwaru prostřednictvím jádra, které běží na vašem hypervisoru.
Pamatujte, že hypervizory existují 2 různé typy. ESX/vsphere jsou považovány za typ 1. Připomenutí typů:
- Hypervizory typu 1, nativní nebo kovové hypervizory
 - Hypervizory typu 2 nebo hostované hypervizory
 
KVM je více podobný typu 2, ale má některé prvky, jako je virtio_*, díky kterým se chová a funguje více jako typ 1 tím, že vystavuje virtualizaci základní linuxové jádro hypervizoru takovým způsobem, že virtuální počítače může k němu mít polopřímý přístup.
Rychlost mého NIC?
 Vzhledem k tomu, že používáte paravirtualizovaný hypervizor, musíte přejít na skutečný hypervizor a zjistit teoretickou rychlost vašeho NIC pomocí ethtool . Místo toho to lze zjistit pouze tím, že uděláte něco jako pomocí iperf porovnat NIC pod zatížením a experimentálně zjistit, jaká je rychlost NIC.
 Například zde mám 2 servery, které běží na 2 různých hypervizorech. Pomocí iperf na obou serverech:
$ sudo yum install iperf
 
 Poté spusťte jeden server jako iperf server na hostiteli 1 VM:
host1$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------ 
 Poté na klientském virtuálním počítači host2:
host2$ iperf -c 192.168.100.25
------------------------------------------------------------
Client connecting to 192.168.100.25, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.100.101 port 55854 connected with 192.168.100.25 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  10.0 GBytes  8.60 Gbits/sec
 Na výstupu hostitele1 uvidíte toto:
$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.100.25 port 5001 connected with 192.168.100.101 port 55854
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  10.0 GBytes  8.60 Gbits/sec
 Zde můžeme vidět, že NIC dokázalo dosáhnout rychlosti až 8,60 Gbit/s.