11.8. DPDK を使用する HCI オーバークラウドの作成
ハイパーコンバージドノードと共に NFV インフラストラクチャーをデプロイするには、リソースの使用率を最適化するために Compute サービスと Ceph Storage サービスを共存させて設定します。
ハイパーコンバージドインフラストラクチャー (HCI) の詳細は、ハイパーコンバージドインフラストラクチャーのデプロイ を参照してください。
次のセクションでは、さまざまな設定の例を説明します。
11.8.1. NUMA ノード設定の例
パフォーマンスを向上させるために、テナントネットワークおよび Ceph オブジェクトサービスデーモン (OSD) を 1 つの NUMA ノード (例: NUMA-0) に配置し、VNF および NFV 以外の仮想マシンを別の NUMA ノード (例: NUMA-1) に配置します。
CPU の割り当て
NUMA-0 | NUMA-1 |
---|---|
Ceph OSD 数 * 4 HT | VNF および NFV 以外の仮想マシン用のゲスト仮想 CPU |
DPDK lcore - 2 HT | DPDK lcore - 2 HT |
DPDK PMD - 2 HT | DPDK PMD - 2 HT |
CPU 割り当ての例
NUMA-0 | NUMA-1 | |
---|---|---|
Ceph OSD | 32,34,36,38,40,42,76,78,80,82,84,86 | |
DPDK-lcore | 0,44 | 1,45 |
DPDK-pmd | 2,46 | 3,47 |
nova | 5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87 |
11.8.2. Ceph 設定ファイルの例
このセクションでは、Red Hat Ceph Storage 設定ファイルのサンプルを説明します。Red Hat OpenStack Platform 環境に適した値を代入することで、これを基に設定ファイルをモデル化できます。
[osd] osd_numa_node = 0 # 1 osd_memory_target_autotune = true # 2 [mgr] mgr/cephadm/autotune_memory_target_ratio = 0.2 # 3
次のパラメーターを使用して、Ceph Object Storage Daemon (OSD) プロセスに CPU リソースを割り当てます。ここで示されている値は例です。ワークロードとハードウェアに応じて値を適切に調整します。
- 1
osd_numa_node
: Ceph プロセスの NUMA ノードへのアフィニティーを設定します (たとえば、NUMA-0
の場合は0
、NUMA-1
の場合は1
など)。-1
は、アフィニティーを NUMA ノードなしに設定します。この例では、
osd_numa_node
はNUMA-0
に設定されています。「DPDK 設定ファイルの例」 に示すように、OvsPmdCoreList
の要素が削除された後、IsolCpusList
にはNUMA-1
上の奇数番号の CPU が含まれます。レイテンシーの影響を受けやすいコンピュートサービス (nova) ワークロードはNUMA-1
でホストされているため、Ceph ワークロードをNUMA-0
で分離する必要があります。この例では、ストレージネットワークのディスクコントローラーとネットワークインターフェイスの両方がNUMA-0
上にあることを前提としています。- 2
osd_memory_target_autotune
: true に設定すると、OSD デーモンはosd_memory_target
設定オプションに基づいてメモリー消費を調整します。- 3
autotune_memory_target_ratio
: OSD のメモリーを割り当てるために使用されます。デフォルトは0.7
です。システム内の合計 RAM の 70% が開始点となり、自動調整されていない Ceph デーモンによって消費されるメモリーがここから差し引かれます。すべての OSD に対して
osd_memory_target_autotune
が true の場合は、残りのメモリーが OSD ごとに分割されます。HCI デプロイメントの場合は、mgr/cephadm/autotune_memory_target_ratio
を0.2
に設定して、コンピュートサービスに使用できるメモリーを増やすことができます。必要に応じて調整し、各 OSD に少なくとも 5 GB のメモリーがあることを確認します。
11.8.3. DPDK 設定ファイルの例
parameter_defaults: ComputeHCIParameters: KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=240 intel_iommu=on iommu=pt # 1 isolcpus=2,46,3,47,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87" TunedProfileName: "cpu-partitioning" IsolCpusList: # 2 ”2,46,3,47,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,49,51, 53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87" VhostuserSocketGroup: hugetlbfs OvsDpdkSocketMemory: "4096,4096" # 3 OvsDpdkMemoryChannels: "4" OvsPmdCoreList: "2,46,3,47" # 4
- 1
- KernelArgs:
hugepages
を算出するには、合計メモリーからNovaReservedHostMemory
パラメーターの値を減算します。 - 2
- IsolCpusList: このパラメーターを使用して、ホストプロセスから分離する CPU コアのセットを割り当てます。
IsolCpusList
パラメーターの値を算出するには、NovaComputeCpuDedicatedSet
パラメーターの値にOvsPmdCoreList
パラメーターの値を加えます。 - 3
- OvsDpdkSocketMemory:
OvsDpdkSocketMemory
パラメーターを使用して、NUMA ノードごとにヒュージページプールから事前に割り当てるメモリー容量を指定します (MB 単位)。OVS-DPDK パラメーターの計算に関する詳細は、OVS-DPDK パラメーター を参照してください。 - 4
- OvsPmdCoreList: このパラメーターを使用して、DPDK Poll Mode Driver (PMD) に使用される CPU コアを指定します。DPDK インターフェイスのローカルの NUMA ノードに関連付けられた CPU コアを選択します。
OvsPmdCoreList
パラメーターの値を算出するには、NUMA ノードごとに 2 つの HT シブリングスレッドを割り当てます。
11.8.4. nova 設定ファイルの例
parameter_defaults: ComputeHCIExtraConfig: nova::cpu_allocation_ratio: 16 # 2 NovaReservedHugePages: # 1 - node:0,size:1GB,count:4 - node:1,size:1GB,count:4 NovaReservedHostMemory: 123904 # 2 # All left over cpus from NUMA-1 NovaComputeCpuDedicatedSet: # 3 ['5','7','9','11','13','15','17','19','21','23','25','27','29','31','33','35','37','39','41','43','49','51','| 53','55','57','59','61','63','65','67','69','71','73','75','77','79','81','83','85','87
- 1
- NovaReservedHugePages:
NovaReservedHugePages
パラメーターを使用して、ヒュージページプールからメモリーを事前に割り当てます (MB 単位)。これは、OvsDpdkSocketMemory
パラメーターの値と同じ合計メモリーです。 - 2
- NovaReservedHostMemory:
NovaReservedHostMemory
パラメーターを使用して、ホスト上のタスク用にメモリーを確保します (MB 単位)。確保しなければならないメモリー容量を算出するには、以下のガイドラインを使用します。- OSD ごとに 5 GB
- 仮想マシンごとに 0.5 GB のオーバーヘッド
- 一般的なホストプロセス用に 4 GB。複数 NUMA にまたがる OSD 操作によって生じるパフォーマンスの低下を防ぐために、十分なメモリーを割り当てるようにしてください。
- 3
- NovaComputeCpuDedicatedSet:
NovaComputeCpuDedicatedSet
パラメーターを使用して、OvsPmdCoreList
またはCeph_osd_docker_cpuset_cpus
に記載されていない CPU のリストを指定します。CPU は DPDK NIC と同じ NUMA ノードになければなりません。
11.8.5. HCI-DPDK デプロイメントに推奨される設定
ブロックデバイスの種別 | メモリー、デバイスごとの OSD および仮想 CPU |
---|---|
NVMe |
メモリー : OSD ごとに 5 GB |
SSD |
メモリー : OSD ごとに 5 GB |
HDD |
メモリー : OSD ごとに 5 GB |
以下の機能には、同じ NUMA ノードを使用します。
- ディスクコントローラー
- ストレージネットワーク
- ストレージ CPU およびメモリー
DPDK プロバイダーネットワークの以下の機能には、別の NUMA ノードを割り当てます。
- NIC
- PMD CPU
- ソケットメモリー
11.8.6. HCI-DPDK オーバークラウドのデプロイ
以下の手順に従って、DPDK を使用するハイパーコンバージドオーバークラウドをデプロイします。
前提条件
- Red Hat OpenStack Platform (RHOSP) 17.1 以降。
- Red Hat Ceph Storage 6.1 の最新バージョン
手順
コントローラーロールと ComputeHCIOvsDpdk ロールの
role_data.yaml
ファイルを生成します。$ openstack overcloud roles generate -o ~/<templates>/roles_data.yaml \ Controller ComputeHCIOvsDpdk
-
openstack flavor create
およびopenstack flavor set
コマンドを使用して、新規フレーバーを作成および設定します。 RHOSP director と Ceph 設定ファイルを使用して Ceph をデプロイします。
例
$ openstack overcloud ceph deploy --config initial-ceph.conf
生成したカスタムの
roles_data.yaml
ファイルを使用して、オーバークラウドをデプロイします。例
$ openstack overcloud deploy --templates \ --timeout 360 \ -r ~/<templates>/roles_data.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/\ cephadm/cephadm-rbd-only.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-ovs-dpdk.yaml \ -e ~/<templates>/<custom environment file>
重要この例では、Ceph RGW (オブジェクトストレージ) を使用せずに Ceph RBD (ブロックストレージ) をデプロイします。デプロイメントに RGW を含めるには、
cephadm-rbd-only.yaml
の代わりにcephadm.yaml
を使用します。
関連情報
- Red Hat OpenStack Platform デプロイメントのカスタマイズ の コンポーザブルサービスとカスタムロール。
- 「Ceph 設定ファイルの例」
- director を使用した Red Hat Ceph Storage と Red Hat OpenStack Platform のデプロイ で Red Hat Ceph Storage クラスターを設定します。