
Моя виртуальная машина (Ubuntu 12.04) имеет 2 подключенных сетевых интерфейса, которые распознаются как eth0
и eth1
.
Теперь я хочу сменить карты на virtio, чтобы улучшить производительность, поэтому я открываюНастройки ВМи измените типы обоих адаптеров наПаравиртуализированная сеть (virtio-net)
Но после перезагрузки производительность, похоже, осталась прежней, если не сказать, что стала намного медленнее, а когда я проверил ifconfig
вывод, то увидел еще один virbr0
интерфейс рядом с eth0
и eth1
.
Я думал, что изменение типа в VirtualBox сделает eth0
и eth1
станет адаптером virtio. Это позже подтвердилось несколькими страницами, которые я нашел в интернете. Они говорили, что достаточно просто изменить тип адаптера, и скорость сразу же улучшится. Но в моем случае это не так.
Как настроить адаптеры, чтобы все заработало?
Конфигурация выглядит следующим образом. eth0
Это мост к внешней сети. eth1
Это адаптер, работающий только на хосте.
$ 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)
Я запустил lsmod | grep virt
, но никаких результатов не показано. insmod
не показывает ничего virtio_net
похожего
$ insmod virt<tab><tab>
virtio_balloon virtio_console virtio_mmio virtio-rng virtual
Текущее ядро Linux vmdev 3.2.0-124-generic #167-Ubuntu SMP Fri Mar 3 15:26:21 UTC 2017 i686 i686 i386 GNU/Linux
. Есть ли какие-либо параметры, необходимые для включения загрузки драйвера virtio?
В файле /etc/udev/rules.d/70-persistent-net.rules
также нет ничего, связанного с virtio, за исключением комментария, когда я повторно генерирую MAC-адрес адаптера.
Я провел много тестов iperf
, и результаты с адаптером Intel PRO/1000 варьируются в пределах 250-350 Мбит/с, в то время как результаты с картой virtio-net всегда лежат в пределах 100-150 Мбит/с, что намного ниже моих ожиданий. Поэтому я сейчас переключаюсь обратно на карту e1000, пока не будет найдено решение.
Я видел в интернете несколько возможных связанных проблем, но пока не нашел способа их решить.
- 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
Редактировать:
Мой проект обновился до новой 64-битной виртуальной машины Ubuntu 14.04 ( 3.13.0-86-generic #131-Ubuntu SMP Thu May 12 23:33:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
), но результаты остались прежними. virtio по-прежнему намного медленнее Intel 1000
решение1
РуководствоГлава 6. Виртуальные сети:
"Паравиртуализированный сетевой адаптер (virtio-net)" является специальным. Если вы выберете его, VirtualBox не будет виртуализировать обычное сетевое оборудование (которое поддерживается обычными гостевыми операционными системами из коробки). Вместо этого VirtualBox ожидает, что гость предоставит специальный программный интерфейс для виртуализированных сред, что позволяет избежать сложности эмуляции сетевого оборудования и повысить производительность сети. Начиная с версии 3.1, VirtualBox обеспечивает поддержку стандартных сетевых драйверов "virtio", которые являются частью проекта KVM с открытым исходным кодом.