検索

11.8. DPDK を使用する HCI オーバークラウドの作成

download PDF

ハイパーコンバージドノードと共に NFV インフラストラクチャーをデプロイするには、リソースの使用率を最適化するために Compute サービスと Ceph Storage サービスを共存させて設定します。

ハイパーコンバージドインフラストラクチャー (HCI) の詳細は、ハイパーコンバージドインフラストラクチャーのデプロイ を参照してください。

次のセクションでは、さまざまな設定の例を説明します。

11.8.1. NUMA ノード設定の例

パフォーマンスを向上させるために、テナントネットワークおよび Ceph オブジェクトサービスデーモン (OSD) を 1 つの NUMA ノード (例: NUMA-0) に配置し、VNF および NFV 以外の仮想マシンを別の NUMA ノード (例: NUMA-1) に配置します。

CPU の割り当て
NUMA-0NUMA-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-0NUMA-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 の場合は 0NUMA-1 の場合は 1 など)。-1 は、アフィニティーを NUMA ノードなしに設定します。

この例では、osd_numa_nodeNUMA-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_ratio0.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 デプロイメントに推奨される設定

表11.1 HCI デプロイメント用の調整可能なパラメーター
ブロックデバイスの種別メモリー、デバイスごとの OSD および仮想 CPU

NVMe

メモリー : OSD ごとに 5 GB
デバイスごとの OSD 数: 4
デバイスごとの仮想 CPU 数: 3

SSD

メモリー : OSD ごとに 5 GB
デバイスごとの OSD 数: 1
デバイスごとの仮想 CPU 数: 4

HDD

メモリー : OSD ごとに 5 GB
デバイスごとの OSD 数: 1
デバイスごとの仮想 CPU 数: 1

以下の機能には、同じ 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 の最新バージョン

手順

  1. コントローラーロールと ComputeHCIOvsDpdk ロールの role_data.yaml ファイルを生成します。

    $ openstack overcloud roles generate -o ~/<templates>/roles_data.yaml \
    Controller ComputeHCIOvsDpdk
  2. openstack flavor create および openstack flavor set コマンドを使用して、新規フレーバーを作成および設定します。
  3. RHOSP director と Ceph 設定ファイルを使用して Ceph をデプロイします。

    $ openstack overcloud ceph deploy --config initial-ceph.conf

  4. 生成したカスタムの 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 logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.