<Poprzedni | Spis treści | Następne>
5.5. OpenVswitch-DPDK
Będąc biblioteką, sama niewiele zdziała, więc zależy od powstających projektów, które z niej korzystają. Jednym z konsumentów biblioteki, która jest już zawarta w wydaniu Ubuntu 16.04, jest OpenVswitch z obsługą DPDK w pakiecie openvswitch-switch-dpdk.
Oto przykład, jak zainstalować i skonfigurować podstawowy OpenVswitch przy użyciu DPDK do późniejszego wykorzystania przez libvirt/qemu-kvm.
sudo apt-get install 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-switch
sudo restart usługi openvswitch-switch
Pamiętaj, że przed ponownym uruchomieniem musisz przypisać urządzenia do sterowników zgodnych z DPDK (patrz wyżej).
Sekcja --vhost-właściciel libvirt-qemu:kvm --vhost-perm 0664 ustawi porty vhost_user z właścicielami/uprawnieniami, aby były zgodne ze sposobem uruchamiania qemu-kvm/libvirt w systemie Ubuntu z ograniczonymi uprawnieniami dla większego bezpieczeństwa.
Należy pamiętać, że sekcja -m 2048 to najbardziej podstawowa konfiguracja numa dla systemu z jednym gniazdem. Jeśli masz wiele gniazd, możesz na przykład chcieć zdefiniować, jak podzielić między nie pamięć -m 1024, 1024. Należy pamiętać, że DPDK będzie próbował pracować tylko z pamięcią lokalną dla kart sieciowych, z którymi współpracuje (ze względu na wydajność). To powiedziawszy, jeśli masz wiele węzłów, ale wszystkie karty sieciowe na jednym, powinieneś rozważyć rozłożenie kart. Jeśli nie, przynajmniej przydziel swoją pamięć do węzła, w którym znajdują się karty, na przykład w dwóch węzłach wszystko do węzła nr 2: -m 0, 2048. Możesz użyć narzędzia Istopo z pakietu hwloc-nox aby zobaczyć, w którym gnieździe znajdują się Twoje karty.
Uruchomiony teraz OpenVswitch obsługuje wszystkie typy portów, które zwykle obsługuje OpenVswitch, a także typy portów DPDK. Oto przykład jak stworzyć mostek i - zamiast zwykłego portu zewnętrznego - dodać do niego zewnętrzny port DPDK.
ovs-vsctl add-br ovsdpdkbr0 -- ustaw most ovsdpdkbr0 datapath_type=netdev ovs-vsctl add-port ovsdpdkbr0 dpdk0 -- ustaw interfejs dpdk0 type=dpdk
Włączenie DPDK w Open vSwitch zostało zmienione w wersji 2.6. A więc dla użytkowników wydań
>=16.10, ale także dla użytkowników Ubuntu Cloud Archive37 >=neutron włączenie uległo zmianie w porównaniu z dostępem dla użytkowników Ubuntu 16.04. Opcje poprzednio przekazywane przez DPDK_OPTS są teraz konfigurowane przez ovs-vsctl w bazie danych konfiguracji Open vSwitch.
Ten sam przykład, co powyżej, w nowy sposób wyglądałby następująco:
37 https://wiki.ubuntu.com/OpenStack/CloudArchive
# Włącz DPDK
ovs-vsctl ustaw Open_vSwitch . „other_config:dpdk-init=true”
# uruchom na rdzeniu 0
ovs-vsctl ustaw Open_vSwitch . „other_config:dpdk-lcore-mask=0x1”
# Przydziel duże strony 2G (bez obsługi węzła Numa)
ovs-vsctl ustaw Open_vSwitch . „other_config: dpdk-alloc-mem=2048”
# grupa/uprawnienia dla gniazd vhost-user (wymagane do pracy z libvirt/qemu) ovs-vsctl set Open_vSwitch . \
"other_config:dpdk-extra=--vhost-owner libvirt-qemu:kvm --vhost-perm 0666"
Aby uzyskać więcej informacji, zapoznaj się z powiązaną dokumentacją nadrzędną i stroną podręcznika konfiguracji vswitch, dostarczoną w pakiecie:
• /usr/share/doc/openvswitch-common/INSTALL.DPDK.md.gz
• /usr/share/doc/openvswitch-common/INSTALL.DPDK-ADVANCED.md.gz
• man ovs-vswitchd.conf.db