Мы запускаем несколько виртуальных машин Debian Wheezy поверх серверов Ubuntu 12.04.4 / Libvirt 0.9.8-2ubuntu17.17.
Хост подключен к сети через транк. Затем он разбивает сети VLAN и создает мост для каждой из них со следующей конфигурацией:
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?
Заранее благодарим за любые советы.
Какими функциями вы готовы пожертвовать ради сокращения задержки?
Для начала попробуйте отключить iptables / ebtables на интерфейсах моста. Ты можешь измениться /proc/sys/net/bridge/bridge-nf-call-iptables
до 0 для этого. Обратной стороной является то, что вы больше не можете фильтровать гостевой трафик.
«Лучшим» вариантом здесь является переход на виртуализированные сетевые карты с использованием SR-IOV. Для этого требуется, чтобы ваша материнская плата и сетевой контроллер поддерживали его. Вы также ограничены 7 гостями на сетевую карту (для гигабитного Ethernet, я думаю, 10 гигабайт выше). Это работает, предоставляя каждому гостю прямой доступ к сетевому оборудованию. ОС хоста не участвует в потоке пакетов, виртуальная машина просто общается напрямую с сетевой картой.
SR-IOV обеспечит вам лучшую производительность (использование ЦП в наших тестах было примерно на 10% ниже при высоком уровне сетевого трафика) и наименьшую задержку (поскольку с пакетами взаимодействует гораздо меньше уровней программного обеспечения). Я считаю, что вы можете настроить теги vlan с этим, но настройка, вероятно, будет немного сложной (SR-IOV в основном недокументированная магия, и вам придется много возиться с настройками).