Minha VM (Ubuntu 12.04) tem duas interfaces de rede conectadas, que são reconhecidas como eth0
e eth1
.
Agora eu quero mudar as placas para o virtio para melhorar o desempenho, então eu abro configurações da VM e altero os tipos de ambos os adaptadores para Paravirtualized Network (virtio-net)
Mas após a reinicialização, o desempenho parece ser o mesmo, para não dizer muito mais lento, e quando eu verifiquei o ifconfig
output, há outra interface virbr0
além de eth0
e eth1
.
Eu achei que mudar o tipo no VirtualBox fará com que eth0
e eth1
se tornem um adaptador de virtio. Isso foi posteriormente confirmado por algumas páginas que encontrei na internet. Eles disseram que apenas mudar o tipo de adaptador é suficiente e a velocidade será melhorada imediatamente. Mas no meu caso não é.
Como configurar os adaptadores para que funcione?
A configuração é assim. eth0
é uma ponte para a rede externa. eth1
é um adaptador somente host
$ ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:62:0d:bd
inet addr:10.184.130.70 Bcast:10.184.130.255 Mask:255.255.240.0
inet6 addr: fe80::a00:27ff:fe64:dbd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:411321 errors:0 dropped:2 overruns:0 frame:0
TX packets:118875 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:298154310 (298.1 MB) TX bytes:65017532 (65.0 MB)
eth1 Link encap:Ethernet HWaddr 08:00:27:9d:6b:df
inet addr:172.17.0.6 Bcast:172.17.255.255 Mask:255.255.0.0
inet6 addr: fe80::a00:27ff:fe8d:6bdf/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12445 errors:0 dropped:0 overruns:0 frame:0
TX packets:13566 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1275663 (1.2 MB) TX bytes:8705940 (8.7 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8538 errors:0 dropped:0 overruns:0 frame:0
TX packets:8538 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2286738 (2.2 MB) TX bytes:2286738 (2.2 MB)
virbr0 Link encap:Ethernet HWaddr 76:ee:57:37:78:7c
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Eu corri lsmod | grep virt
, mas nenhum resultado é mostrado. insmod
não mostra nada como virtio_net
$ insmod virt<tab><tab>
virtio_balloon virtio_console virtio_mmio virtio-rng virtual
O atual kernel Linux vmdev 3.2.0-124-generic #167-Ubuntu SMP Fri Mar 3 15:26:21 UTC 2017 i686 i686 i386 GNU/Linux
. Existe alguma opção que eu preciso para ativar o carregamento do driver virtio?
O arquivo /etc/udev/rules.d/70-persistent-net.rules
também não mostra nada relacionado ao virtio, exceto no comentário quando eu regenerar o endereço MAC do adaptador
Eu fiz muitos testes com iperf
e os resultados com o adaptador Intel PRO / 1000 variam em torno de 250-350Mbps, enquanto os resultados com virtio-net card sempre ficam entre 100-150Mbps, muito abaixo das minhas expectativas. Então eu estou voltando para o cartão e1000 agora até que uma solução seja encontrada.
Eu vi alguns possíveis problemas relacionados na internet, mas não há como resolver até agora
Editar:
Meu projeto foi atualizado para uma nova VM Ubuntu 14.04 de 64 bits ( 3.13.0-86-generic #131-Ubuntu SMP Thu May 12 23:33:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
), mas os resultados ainda são os mesmos. virtio ainda é muito mais lento que o Intel 1000