11.4. RX-TX キューサイズ管理によるパケット損失の防止
以下に示す理由により、3.5 百万パケット毎秒 (mpps) を超える高いパケットレートでは、パケットロスが生じる場合があります。
- ネットワークの中断
- SMI
- 仮想ネットワーク機能におけるパケット処理のレイテンシー
パケットロスを防ぐには、キューサイズをデフォルトの 512 から最大の 1024 に増やします。
前提条件
-
アンダークラウドホストへのアクセスと
stack
ユーザーの認証情報。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
カスタム環境 YAML ファイルを作成し、
parameter_defaults
の下に次の定義を追加して、RX および TX キューのサイズを増やします。parameter_defaults: NovaLibvirtRxQueueSize: 1024 NovaLibvirtTxQueueSize: 1024
デプロイコマンドを実行します。コア Heat テンプレート、その他の環境ファイル、RX および TX キューサイズの変更を含む環境ファイルをコマンドに追加します。
例
$ openstack overcloud deploy --templates \ -e <other_environment_files> \ -e /home/stack/my_tx-rx_queue_sizes.yaml
検証
nova.conf
ファイル内の RX キューサイズと TX キューサイズの値を確認します。$ egrep "^[rt]x_queue_size" /var/lib/config-data/puppet-generated/\ nova_libvirt/etc/nova/nova.conf
以下のメッセージが表示されるはずです。
rx_queue_size=1024 tx_queue_size=1024
Compute ホストの libvirt により生成された仮想マシンインスタンスの XML ファイルで、RX キューサイズと TX キューサイズの値を確認します。
- 新規インスタンスを作成します。
Compute ホストとインスタンス名を取得します。
$ openstack server show testvm-queue-sizes -c OS-EXT-SRV-ATTR:\ hypervisor_hostname -c OS-EXT-SRV-ATTR:instance_name
出力例
以下のような出力が表示されるはずです。
+-------------------------------------+------------------------------------+ | Field | Value | +-------------------------------------+------------------------------------+ | OS-EXT-SRV-ATTR:hypervisor_hostname | overcloud-novacompute-1.sales | | OS-EXT-SRV-ATTR:instance_name | instance-00000059 | +-------------------------------------+------------------------------------+
Compute ホストにログインし、インスタンス定義をダンプします。
例
$ podman exec nova_libvirt virsh dumpxml instance-00000059
出力例
以下のような出力が表示されるはずです。
... <interface type='vhostuser'> <mac address='56:48:4f:4d:5e:6f'/> <source type='unix' path='/tmp/vhost-user1' mode='server'/> <model type='virtio'/> <driver name='vhost' rx_queue_size='1024' tx_queue_size='1024' /> <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/> </interface> ...