
Мы запускаем несколько виртуальных машин Debian Wheezy поверх серверов Ubuntu 12.04.4 / Libvirt 0.9.8-2ubuntu17.17
Хост подключается к сети через транк. Затем он разделяет VLAN и создает мост для каждого из них со следующим 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
Виртуальные машины настроены следующим образом:
<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>
И они используют VirtIO
00:09.0 Ethernet controller: Red Hat, Inc Virtio network device
Главные герои (все в одной 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
Когда мы делаем серию из 60 пингов «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
Итак, эти результаты, похоже, указывают на то, что libvirtвиртуальный коммутатор/фильтрацияне только добавляет некоторую задержку, как можно было бы ожидать, но и утраивает ее (0,132 против 0,460)
Вопрос
Is there anything that can be done to attenuate this extra latency?
Заранее спасибо за любые советы.
решение1
Какими функциями вы готовы пожертвовать ради сокращения задержки?
Для начала попробуйте отключить iptables/ebtables на интерфейсах моста. /proc/sys/net/bridge/bridge-nf-call-iptables
Для этого можно изменить на 0. Недостаток здесь в том, что вы больше не можете выполнять какую-либо фильтрацию гостевого трафика.
«Лучшим» вариантом здесь является переключение на виртуализированные сетевые карты с использованием SR-IOV. Для этого требуется, чтобы ваша материнская плата и сетевой контроллер поддерживали это. Вы также ограничены 7 гостями на одну сетевую карту (для гигабитного Ethernet, я думаю, 10 Гбит выше). Это работает, предоставляя каждому гостю прямой доступ к сетевому оборудованию. ОС хоста не участвует в потоке пакетов, виртуальная машина просто напрямую общается с сетевой картой.
SR-IOV обеспечит вам наилучшую производительность (в наших тестах загрузка ЦП была примерно на 10% ниже при высоком уровне сетевого трафика) и наименьшую задержку (поскольку с пакетами взаимодействует гораздо меньше слоев программного обеспечения). Я считаю, что вы можете настроить тегирование VLAN с помощью этого, но настройка, скорее всего, будет немного сложной (SR-IOV — это по сути недокументированная магия, и вам придется много возиться с настройками).