9.3. QoS ポリシーを使用した最小帯域幅の制御
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) の場合、保証された最小帯域幅 QoS ルールを 2 つの異なるコンテキストで適用できます。ネットワークサービスバックエンドの適用とリソース割り当てのスケジューリングの適用。
ネットワークバックエンド、ML2/OVS または ML2/SR-IOV は、ルールが適用される各ポートが指定されたネットワーク帯域幅以上であることを保証しようとします。
リソース割り当てスケジューリング帯域幅強制を使用すると、Compute サービス (nova) は最小帯域幅をサポートするホストにのみ VM インスタンスを配置します。
Networking サービスバックエンドの適用、リソース割り当てスケジュールの適用、またはその両方を使用して、QoS 最小帯域幅ルールを適用できます。
次の表は、最小帯域幅の QoS ポリシーをサポートする Modular Layer2(ML2) メカニズムドライバーを示しています。
ML2 メカニズムドライバー | エージェント | VNIC タイプ |
---|---|---|
ML2/SR-IOV | sriovnicswitch | direct |
ML2/OVS | openvswitch | normal |
9.3.1. Networking サービスのバックエンドの実行を使用した最小帯域幅の適用
Red Hat OpenStack Platform (RHOSP) のサービス品質 (QoS) ポリシーをポートに適用することで、ポートのネットワークトラフィックの最小帯域幅を保証できます。これらのポートは、フラットまたは VLAN 物理ネットワークによってサポートされている必要があります。
現在、Open Virtual Network メカニズムドライバー (ML2/OVN) を備えた Modular Layer 2 プラグインは、最小帯域幅の QoS ルールをサポートしていません。
前提条件
-
RHOSP Networking サービス (neutron) には、
qos
サービスプラグインがロードされている必要があります。(これがデフォルトです)。 同じ物理インターフェイス上で、帯域幅が保証されているポートと保証されていないポートを混在させないでください。これにより、保証のないポートで必要なリソースが拒否される (枯渇する) 可能性があります。
ヒントホストアグリゲートを作成して、帯域幅が保証されているポートと帯域幅が保証されていないポートを分離します。
手順
Source コマンドで認証情報ファイルを読み込みます。
例
$ source ~/overcloudrc
qos
サービスプラグインが Networking サービスにロードされていることを確認します。$ openstack network qos policy list
qos
サービスプラグインがロードされていない場合は、ResourceNotFound
エラーが発生します。続行するにはqos
サービスプラグインをロードする必要があります。詳細は、「QoS ポリシーの Networking サービスの設定」 を参照してください。QoS ポリシーを作成するプロジェクトの ID を特定します。
$ openstack project list
出力例
+----------------------------------+----------+ | ID | Name | +----------------------------------+----------+ | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors | | 519e6344f82e4c079c8e2eabb690023b | services | | 80bf5732752a41128e612fe615c886c6 | demo | | 98a2f53c20ce4d50a40dac4a38016c69 | admin | +----------------------------------+----------+
前の手順のプロジェクト ID を使用して、プロジェクトの QoS ポリシーを作成します。
例
この例では、
guaranteed_min_bw
という名前の QoS ポリシーがadmin
プロジェクト用に作成されています。$ openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
ポリシーのルールを設定します。
例
この例では、
guaranteed_min_bw
という名前のポリシーに対して、最小帯域幅が40000000
kbps の入力および出力の QoS ルールが作成されます。$ openstack network qos rule create \ --type minimum-bandwidth --min-kbps 40000000 \ --ingress guaranteed_min_bw $ openstack network qos rule create \ --type minimum-bandwidth --min-kbps 40000000 \ --egress guaranteed_min_bw
ポリシーを適用するポートを設定します。
例
この例では、
guaranteed_min_bw
ポリシーがポート56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
に適用されます。$ openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
検証
ML2/SR-IOV
ルートアクセスを使用して、Compute ノードにログインし、物理関数で保持されている仮想関数の詳細を表示します。
例
# ip -details link show enp4s0f1
出力例
50: enp4s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master mx-bond state UP mode DEFAULT group default qlen 1000 link/ether 98:03:9b:9d:73:74 brd ff:ff:ff:ff:ff:ff permaddr 98:03:9b:9d:73:75 promiscuity 0 minmtu 68 maxmtu 9978 bond_slave state BACKUP mii_status UP link_failure_count 0 perm_hwaddr 98:03:9b:9d:73:75 queue_id 0 addrgenmode eui64 numtxqueues 320 numrxqueues 40 gso_max_size 65536 gso_max_segs 65535 portname p1 switchid 74739d00039b0398 vf 0 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 1 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 2 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 3 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 4 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 5 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 6 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 7 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 8 link/ether fa:16:3e:2a:d2:7f brd ff:ff:ff:ff:ff:ff, tx rate 999 (Mbps), max_tx_rate 999Mbps, spoof checking off, link-state disable, trust off, query_rss off vf 9 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off
ML2/OVS
ルートアクセスを使用して、Compute ノードにログインし、物理ブリッジインターフェイスに
tc
ルールとクラスを表示します。例
# tc class show dev mx-bond
出力例
class htb 1:11 parent 1:fffe prio 0 rate 4Gbit ceil 34359Mbit burst 9000b cburst 8589b class htb 1:1 parent 1:fffe prio 0 rate 72Kbit ceil 34359Mbit burst 9063b cburst 8589b class htb 1:fffe root rate 34359Mbit ceil 34359Mbit burst 8589b cburst 8589b
関連情報
- コマンドラインインターフェイスリファレンスの network qos policy create
- コマンドラインインターフェイスリファレンス の network qos rule create
- コマンドラインインターフェイスリファレンス の port set
9.3.2. 最小帯域幅の QoS ポリシーを使用したインスタンスのスケジューリング
最小帯域幅の QoS ポリシーをポートに適用して、Red Hat OpenStack Platform (RHOSP) VM インスタンスが生成されるホストに最小のネットワーク帯域幅があることを保証できます。
前提条件
-
RHOSP Networking サービス (neutron) には、
qos
およびplacement
サービスのプラグインがロードされている必要があります。qos
サービスプラグインはデフォルトでロードされます。 Networking サービスは、次の API 拡張機能をサポートする必要があります。
-
agent-resources-synced
-
port-resource-request
-
qos-bw-minimum-ingress
-
- ML2/OVS または ML2/SR-IOV メカニズムドライバーを使用する必要がある。
- 最小帯域幅を確保する QoS ポリシーを変更できるのは、ポリシーが割り当てられたポートを使用するインスタンスがない場合に限る。ポートがバインドされている場合、Networking サービスは配置 API の使用情報を更新できない。
- Placement サービスは、マイクロバージョン 1.29 をサポートする必要があります。
- Compute サービス (nova) はマイクロバージョン 2.72 をサポートする必要があります。
手順
Source コマンドで認証情報ファイルを読み込みます。
例
$ source ~/overcloudrc
qos
サービスプラグインが Networking サービスにロードされていることを確認します。$ openstack network qos policy list
qos
サービスプラグインがロードされていない場合は、ResourceNotFound
エラーが発生します。続行するにはqos
サービスプラグインをロードする必要があります。詳細は、「QoS ポリシーの Networking サービスの設定」 を参照してください。QoS ポリシーを作成するプロジェクトの ID を特定します。
$ openstack project list
出力例
+----------------------------------+----------+ | ID | Name | +----------------------------------+----------+ | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors | | 519e6344f82e4c079c8e2eabb690023b | services | | 80bf5732752a41128e612fe615c886c6 | demo | | 98a2f53c20ce4d50a40dac4a38016c69 | admin | +----------------------------------+----------+
前の手順のプロジェクト ID を使用して、プロジェクトの QoS ポリシーを作成します。
例
この例では、
guaranteed_min_bw
という名前の QoS ポリシーがadmin
プロジェクト用に作成されています。$ openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
ポリシーのルールを設定します。
例
この例では、
guaranteed_min_bw
という名前のポリシーに対して、最小帯域幅が40000000
kbps の入力および出力の QoS ルールが作成されます。$ openstack network qos rule create \ --type minimum-bandwidth --min-kbps 40000000 \ --ingress guaranteed_min_bw $ openstack network qos rule create \ --type minimum-bandwidth --min-kbps 40000000 \ --egress guaranteed_min_bw
ポリシーを適用するポートを設定します。
例
この例では、
guaranteed_min_bw
ポリシーがポート56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
に適用されます。$ openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
検証
- アンダークラウドホストに stack ユーザーとしてログインします。
source コマンドでアンダークラウドの認証情報ファイルを読み込みます。
$ source ~/stackrc
利用可能なすべてのリソースプロバイダーをリスト表示します。
$ openstack --os-placement-api-version 1.17 resource provider list
出力例
+--------------------------------------+-----------------------------------------------------+------------+--------------------------------------+--------------------------------------+ | uuid | name | generation | root_provider_uuid | parent_provider_uuid | +--------------------------------------+-----------------------------------------------------+------------+--------------------------------------+--------------------------------------+ | 31d3d88b-bc3a-41cd-9dc0-fda54028a882 | dell-r730-014.localdomain | 28 | 31d3d88b-bc3a-41cd-9dc0-fda54028a882 | None | | 6b15ddce-13cf-4c85-a58f-baec5b57ab52 | dell-r730-063.localdomain | 18 | 6b15ddce-13cf-4c85-a58f-baec5b57ab52 | None | | e2f5082a-c965-55db-acb3-8daf9857c721 | dell-r730-063.localdomain:NIC Switch agent | 0 | 6b15ddce-13cf-4c85-a58f-baec5b57ab52 | 6b15ddce-13cf-4c85-a58f-baec5b57ab52 | | d2fb0ef4-2f45-53a8-88be-113b3e64ba1b | dell-r730-014.localdomain:NIC Switch agent | 0 | 31d3d88b-bc3a-41cd-9dc0-fda54028a882 | 31d3d88b-bc3a-41cd-9dc0-fda54028a882 | | f1ca35e2-47ad-53a0-9058-390ade93b73e | dell-r730-063.localdomain:NIC Switch agent:enp6s0f1 | 13 | 6b15ddce-13cf-4c85-a58f-baec5b57ab52 | e2f5082a-c965-55db-acb3-8daf9857c721 | | e518d381-d590-5767-8f34-c20def34b252 | dell-r730-014.localdomain:NIC Switch agent:enp6s0f1 | 19 | 31d3d88b-bc3a-41cd-9dc0-fda54028a882 | d2fb0ef4-2f45-53a8-88be-113b3e64ba1b | +--------------------------------------+-----------------------------------------------------+------------+--------------------------------------+--------------------------------------+
特定のリソースが提供する帯域幅を確認します。
(undercloud)$ openstack --os-placement-api-version 1.17 \ resource provider inventory list <rp_uuid>
例
この例では、リソースプロバイダー UUID、
e518d381-d590-5767-8f34-c20def34b252
を使用して、ホストdell-r730-014
のインターフェイスenp6s0f1
によって提供される帯域幅がチェックされます。[stack@dell-r730-014 nova]$ openstack --os-placement-api-version 1.17 \ resource provider inventory list e518d381-d590-5767-8f34-c20def34b252
出力例
+----------------------------+------------------+----------+------------+----------+-----------+----------+ | resource_class | allocation_ratio | min_unit | max_unit | reserved | step_size | total | +----------------------------+------------------+----------+------------+----------+-----------+----------+ | NET_BW_EGR_KILOBIT_PER_SEC | 1.0 | 1 | 2147483647 | 0 | 1 | 10000000 | | NET_BW_IGR_KILOBIT_PER_SEC | 1.0 | 1 | 2147483647 | 0 | 1 | 10000000 | +----------------------------+------------------+----------+------------+----------+-----------+----------+
インスタンス実行時のリソースプロバイダーに対する要求を確認するには、以下のコマンドを実行します。
(undercloud)$ openstack --os-placement-api-version 1.17 \ resource provider show --allocations <rp_uuid>
例
この例では、リソースプロバイダーに対するクレームは、リソースプロバイダー UUID
e518d381-d590-5767-8f34-c20def34b252
を使用して、ホストdell-r730-014
でチェックされます。[stack@dell-r730-014 nova]$ openstack --os-placement-api-version 1.17 resource provider show --allocations e518d381-d590-5767-8f34-c20def34b252 -f value -c allocations
出力例
{3cbb9e07-90a8-4154-8acd-b6ec2f894a83: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, 8848b88b-4464-443f-bf33-5d4e49fd6204: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, 9a29e946-698b-4731-bc28-89368073be1a: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, a6c83b86-9139-4e98-9341-dc76065136cc: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 3000000, NET_BW_IGR_KILOBIT_PER_SEC: 3000000}}, da60e33f-156e-47be-a632-870172ec5483: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, eb582a0e-8274-4f21-9890-9a0d55114663: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 3000000, NET_BW_IGR_KILOBIT_PER_SEC: 3000000}}}
関連情報
- コマンドラインインターフェイスリファレンスの network qos policy create
- コマンドラインインターフェイスリファレンス の network qos rule create
- コマンドラインインターフェイスリファレンス の port set