Есть ли способ увеличить время отклика гостевой сети libvirt?

Мы запускаем несколько виртуальных машин 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 гигабайт выше). Это работает, предоставляя каждому гостю прямой доступ к сетевому оборудованию. ОС хоста не участвует в потоке пакетов, виртуальная машина просто общается напрямую с NIC.

SR-IOV обеспечит вам лучшую производительность (загрузка ЦП в наших тестах была примерно на 10% ниже, для высокого уровня сетевого трафика) и минимальную задержку (поскольку существует гораздо меньше уровней взаимодействия программного обеспечения с пакетами). Я полагаю, что вы можете настроить теги VLAN с этим, но настройка, вероятно, будет немного сложнее (SR-IOV в основном недокументированная магия, и вы будете много играть с настройками).

Другие вопросы по тегам