
Mi VM (Ubuntu 12.04) tiene 2 interfaces de red conectadas que se reconocen como eth0
y eth1
.
Ahora quiero cambiar las tarjetas a virtio para mejorar el rendimiento, así que abroConfiguración de máquina virtualy cambie los tipos de ambos adaptadores aRed paravirtualizada (virtio-net)
Pero después de reiniciar, el rendimiento parece ser el mismo, por no decir mucho más lento, y cuando revisé ifconfig
el resultado hay otra virbr0
interfaz al lado de eth0
y eth1
.
Pensé que cambiar el tipo en VirtualBox me convertiría eth0
en eth1
un adaptador virtio. Esto fue confirmado más tarde por algunas páginas que encontré en Internet. Dijeron que basta con cambiar el tipo de adaptador y la velocidad mejorará de inmediato. Pero en mi caso no lo es.
¿Cómo configurar los adaptadores para que funcione?
La configuración es así. eth0
es un puente hacia la red externa. eth1
es un adaptador solo de 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)
Lo ejecuté lsmod | grep virt
pero no se muestra ningún resultado. insmod
no muestra nada virtio_net
parecido
$ insmod virt<tab><tab>
virtio_balloon virtio_console virtio_mmio virtio-rng virtual
El núcleo actual Linux vmdev 3.2.0-124-generic #167-Ubuntu SMP Fri Mar 3 15:26:21 UTC 2017 i686 i686 i386 GNU/Linux
. ¿Necesito alguna opción para habilitar la carga del controlador virtio?
El archivo /etc/udev/rules.d/70-persistent-net.rules
tampoco muestra nada relacionado con virtio, excepto en el comentario cuando regenero la dirección MAC del adaptador.
He realizado muchas pruebas iperf
y los resultados con el adaptador Intel PRO/1000 varían entre 250 y 350 Mbps, mientras que los resultados con la tarjeta virtio-net siempre se encuentran entre 100 y 150 Mbps, muy por debajo de mis expectativas. Así que voy a volver a usar la tarjeta e1000 ahora mismo hasta que encuentre una solución.
He visto algunos posibles problemas relacionados en Internet, pero hasta ahora no hay forma de resolverlos.
- https://getsatisfaction.cumulusnetworks.com/cumulus/topics/cumulus-vx-virtualbox-virtio-nic-slow
- https://bugs.launchpad.net/ubuntu/+source/qemu-kvm/+bug/1079212
- https://forums.virtualbox.org/viewtopic.php?f=7&t=26783
Editar:
Mi proyecto se actualizó a una nueva máquina virtual 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
), pero los resultados siguen siendo los mismos. virtio sigue siendo mucho más lento que Intel 1000
Respuesta1
ManualCapítulo 6. Redes virtuales:
El "Adaptador de red paravirtualizado (virtio-net)" es especial. Si selecciona esto, VirtualBox no virtualiza el hardware de red común (que es compatible con los sistemas operativos invitados comunes listos para usar). En cambio, VirtualBox espera que el huésped proporcione una interfaz de software especial para entornos virtualizados, evitando así la complejidad de emular hardware de red y mejorando el rendimiento de la red. A partir de la versión 3.1, VirtualBox brinda soporte para los controladores de red "virtio" estándar de la industria, que forman parte del proyecto KVM de código abierto.