Qualquer maneira de aumentar o tempo de resposta da rede guest libvirt?

2

Estamos executando um número de VMs do Debian Wheezy em cima do Ubuntu Servers 12.04.4 / Libvirt 0.9.8-2ubuntu17.17

O host está conectado à rede por meio de um tronco. Em seguida, ele divide as VLANs e cria uma ponte para cada uma delas com o seguinte conf:

auto eth4.2 kvmbrtrunk.2
iface eth4.2 inet manual
    up ifconfig eth4.2 up
    down ifconfig eth4.2 down

iface kvmbrtrunk.2 inet manual
    bridge-ports eth4.2
    bridge-stp no
    bridge-fd 0
    bridge-maxwait 0

As VMs são configuradas da seguinte forma:

 <interface type='bridge'>
   <mac address='54:52:00:02:10:70'/>
   <source bridge='kvmbrtrunk.2'/>
   <model type='virtio'/>
   <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
 </interface>

E eles usam o VirtIO

00:09.0 Ethernet controller: Red Hat, Inc Virtio network device

Protagonistas (todos na mesma VLAN):

A: 1st Ubuntu 12.04 desktop
B: 2nd Ubuntu 12.04 desktop
C: 1st VM, 1st host
D: 2nd VM, 1st host
E: 3rd VM, 2nd host

Quando fazemos uma série de 60 pings "rtt min / avg / max / mdev":

A -> B = 0.093/0.132/0.158/0.015 ms
A -> C = 0.272/0.434/1.074/0.113 ms
A -> D = 0.294/0.460/0.832/0.091 ms
A -> E = 0.324/0.505/0.831/0.069 ms
C -> D = 0.348/0.607/0.863/0.124 ms
C -> E = 0.541/0.792/0.972/0.101 ms

Assim, esses resultados parecem indicar que o virtual switch / filtering da libvirt não só adiciona alguma latência, como se poderia esperar , mas triplica (0,132 vs 0,460)

Pergunta

 Is there anything that can be done to attenuate this extra latency?

Agradecemos antecipadamente por qualquer dica.

    
por Jef Bucas 09.05.2014 / 13:30

1 resposta

1

Que tipo de recursos você está disposto a sacrificar por essa redução na latência?

Para começar, tente desabilitar o iptables / ebtables nas interfaces da bridge. Você pode alterar /proc/sys/net/bridge/bridge-nf-call-iptables para 0 para fazer isso. A desvantagem aqui é que você não pode mais fazer nenhum tipo de filtragem no tráfego de convidados.

A opção 'melhor' aqui é mudar para placas de rede virtualizadas, usando o SR-IOV. Isso requer que sua placa-mãe e seu controlador de rede o suportem. Você também está limitado a 7 pessoas por placa de rede (para gigabit ethernet, acredito que 10gig é maior). Isso funciona dando a cada convidado acesso direto ao hardware de rede. O sistema operacional hosts não está envolvido no fluxo de pacotes, a VM apenas fala diretamente com o NIC.

O SR-IOV lhe dará o melhor desempenho (o uso da CPU foi cerca de 10% menor em nossos testes, para altos níveis de tráfego de rede) e menor latência (já que há muito menos camadas de software interagindo com os pacotes). Acredito que você possa configurar a marcação vlan com isso, mas a configuração provavelmente seria um pouco difícil (o SR-IOV é basicamente uma mágica não documentada, e você estará fazendo muitas alterações nas configurações).

    
por 27.05.2014 / 02:21