5.5. OpenVswitch-DPDK
ライブラリであるため、それ自体ではあまり機能しないため、それを利用する新興プロジェクトに依存しています。 Ubuntu 16.04 リリースにすでにバンドルされているライブラリのコンシューマの XNUMX つは、openvswitch-switch-dpdk パッケージで DPDK をサポートする OpenVswitch です。
ここでは、後で libvirt/qemu-kvm 経由で使用できるように、DPDK を使用して基本的な OpenVswitch をインストールおよび構成する方法の例を示します。
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サービスopenvswitch-switchの再起動
再起動する前に、デバイスを DPDK 互換ドライバー (上記を参照) に割り当てる必要があることに注意してください。
セクション --vhost-owner libvirt-qemu:kvm --vhost-perm 0664 セキュリティを強化するために権限を減らして qemu-kvm/libvirt を実行する Ubuntus の方法と互換性を持たせるために、vhost_user ポートに所有者/権限を設定します。
セクションに注意してください -m 2048 これは、単一ソケット システムの最も基本的な uma セットアップです。 複数のソケットがある場合は、それらの間でメモリを分割する方法を定義することができます。たとえば、 -m 1024、1024。 DPDK は、(パフォーマンス上の理由から) 動作するネットワーク カードのローカル メモリでのみ動作しようとすることに注意してください。 ただし、複数のノードがあり、すべてのネットワーク カードが 2 つ上にある場合は、カードを分散することを検討する必要があります。 そうでない場合は、少なくともカードが存在するノードにメモリを割り当てます。たとえば、XNUMX つのノードではすべてノード #XNUMX に割り当てます。 -m 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 を設定
Open vSwitch での DPDK の有効化はバージョン 2.6 で変更されました。 したがって、リリースのユーザーにとっては
16.10 以上、ただし Ubuntu Cloud Archive のユーザーも対象37 >=neutron の有効化は、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 huge page を割り当てる (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-owner 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