<Предыдущая | Содержание: | Следующая>
5.5. OpenVswitch-DPDK
Будучи библиотекой, она мало что делает сама по себе, поэтому зависит от новых проектов, которые ее используют. Одним из потребителей библиотеки, которая уже включена в выпуск Ubuntu 16.04, является OpenVswitch с поддержкой DPDK в пакете openvswitch-switch-dpdk.
Вот пример того, как установить и настроить базовый OpenVswitch с помощью DPDK для последующего использования через libvirt / qemu-kvm.
sudo apt-get установить openvswitch-switch-dpdk
sudo update-alternatives --set ovs-vswitchd / usr / lib / openvswitch-switch-dpdk / ovs-vswitchd- dpdk
echo "DPDK_OPTS = '- dpdk -c 0x1 -n 4 -m 2048 --vhost-owner libvirt-qemu: kvm --vhost-perm 0664'" | sudo tee -a / etc / default / openvswitch-переключатель
sudo service openvswitch-switch перезапуск
Помните, что перед перезапуском вы должны назначить устройствам драйверы, совместимые с DPDK (см. Выше).
Секция --vhost-owner libvirt-qemu: kvm --vhost-perm 0664 установит порты vhost_user с правами владельца / для совместимости с Ubuntus способом запуска qemu-kvm / libvirt с ограниченными привилегиями для большей безопасности.
Обратите внимание, что в разделе -m 2048 это самая простая настройка numa для однопроцессорной системы. Если у вас несколько сокетов, вы можете определить, как разделить вашу память между ними, например -м 1024, 1024. Имейте в виду, что DPDK будет пытаться работать только с локальной памятью на сетевых картах, с которыми он работает (из соображений производительности). Тем не менее, если у вас несколько узлов, но все сетевые карты на одном, вам следует рассмотреть возможность распространения своих карт. Если нет, по крайней мере, выделите свою память узлу, где находятся карты, например, в двух узлах, все на узле №2: -м 0, 2048. Вы можете использовать инструмент лстопо из пакета hwloc-nox чтобы увидеть, в каком гнезде находятся ваши карты.
Запущенный вами OpenVswitch поддерживает все типы портов, которые обычно поддерживает OpenVswitch, а также типы портов DPDK. Вот пример того, как создать мост и - вместо обычного внешнего порта - добавить к нему внешний порт DPDK.
ovs-vsctl add-br ovsdpdkbr0 - установить мост ovsdpdkbr0 datapath_type = netdev ovs-vsctl add-port ovsdpdkbr0 dpdk0 - установить интерфейс dpdk0 type = dpdk
Включение DPDK в Open vSwitch изменилось в версии 2.6. Итак, для пользователей релизов
> = 16.10, но также для пользователей облачного архива Ubuntu37 > = нейтрон разрешение изменилось по сравнению с тем, что было для пользователей Ubuntu 16.04. Параметры, ранее передаваемые через DPDK_OPTS, теперь настраиваются через ovs-vsctl в базу данных конфигурации Open vSwitch.
Тот же пример, что и выше, по-новому будет выглядеть так:
37 https://wiki.ubuntu.com/OpenStack/CloudArchive
# Включить DPDK
ovs-vsctl устанавливает Open_vSwitch. "other_config: dpdk-init = true"
# запустить на ядре 0
ovs-vsctl устанавливает Open_vSwitch. "other_config: dpdk-lcore-mask = 0x1"
# Выделять 2G огромных страниц (без ноды Numa)
ovs-vsctl устанавливает Open_vSwitch. "other_config: dpdk-alloc-mem = 2048"
# группа / разрешения для сокетов vhost-user (требуется для работы с libvirt / qemu) ovs-vsctl set Open_vSwitch. \
"other_config: dpdk-extra = - владелец vhost libvirt-qemu: kvm --vhost-perm 0666"
Дополнительные сведения см. В связанной документации по восходящей линии и на странице руководства по настройке vswitch, предоставленной в пакете:
• /usr/share/doc/openvswitch-common/INSTALL.DPDK.md.gz
• /usr/share/doc/openvswitch-common/INSTALL.DPDK-ADVANCED.md.gz
• человек ovs-vswitchd.conf.db