10.3. カスタムの SR-IOV Compute サービスの作成


Red Hat OpenStack Services on OpenShift (RHOSO) 環境では、NFV 用のカスタムの SR-IOV Compute サービスを作成する必要があります。このサービスは、データプレーン上で実行される Ansible サービスです。このカスタムサービスは、SR-IOV コンピュートノードで次のタスクを実行します。

  • CPU ピニングパラメーターを適用します。
  • PCI パススルーを実行します。

SR-IOV カスタムサービスを作成するには、次の操作を実行する必要があります。

  • CPU ピニング設定を、指定の SR-IOV コンピュートノードのセットにマッピングする CPU ピニング用の ConfigMap を作成します。
  • PCI パススルー設定を、指定の SR-IOV コンピュートノードのセットにマッピングする PCI パススルー用の ConfigMap を作成します。
  • データプレーンに configMaps を実装する実際の SR-IOV カスタムサービスを作成します。

前提条件

  • ワークステーションに oc コマンドラインツールがインストール済みである。
  • cluster-admin 権限を持つユーザーとして、RHOSO コントロールプレーンにアクセスできるワークステーションにログオン済みである。

手順

  1. CPU ピニングと PCI パススルーの設定を定義する ConfigMap CR を作成し、ワークステーション上の YAML ファイル (例: pinning-passthrough.yaml) に保存します。

    環境に応じて値 (太字部分) を変更します。

    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cpu-pinning-nova
    data:
      25-cpu-pinning-nova.conf: |
        [DEFAULT]
        reserved_host_memory_mb = 4096
        [compute]
        cpu_shared_set = 0-3,24-27
        cpu_dedicated_set = 8-23,32-47
        [neutron]
        physnets = <network_name1>, <network_name2>
        [neutron_physnet_<network_name1>]
        numa_nodes = <ID list>
        [neutron_physnet_<network_name2>]
        numa_nodes = <ID list>
        [neutron_tunnel]
        numa_nodes = <ID list>
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: sriov-nova
    data:
      26-sriov-nova.conf: |
        [libvirt]
        cpu_power_management=false
        [pci]
        passthrough_whitelist = {"address": "0000:05:00.2", "physical_network":"sriov-1", "trusted":"true"}
        passthrough_whitelist = {"address": "0000:05:00.3", "physical_network":"sriov-2", "trusted":"true"}
    ---
    • cpu_shared_set: vCPU のインベントリーを指定するために使用する物理ホスト CPU 番号のコンマ区切りリストまたは範囲を入力します。これにより、ピニングされていないインスタンスをスケジュールできるホスト CPU を決定します。また、共有エミュレータースレッドポリシーで設定されたインスタンスのインスタンスエミュレータースレッドをオフロードするホスト CPU を決定します。
    • cpu_dedicated_set: ピニングされたインスタンス CPU のプロセスをスケジュールできる物理ホスト CPU 番号のコンマ区切りのリストまたは範囲を入力します。たとえば、4-12,^8,15 は、8 を除く 4 - 12 および 15 のコアを予約します。
    • <network_name_n_>: <network_name1><network_name2> は、ゲートウェイが配置されている物理ネットワークの名前に置き換えます。(このネットワークは、neutron ネットワーク provider:*name フィールドで設定します。)
    • numa_nodes = <ID list>: <ID list> を、この物理ネットワークに関連付けられている NUMA ノードの ID のコンマ区切りリストに置き換えます。たとえば、0,1 です。以下に例を示します。

      [neutron]
      physnets = foo,bar
      
      [neutron_physnet_foo]
      numa_nodes = 0
      
      [neutron_physnet_bar]
      numa_nodes = 2, 3

      この設定では、provider:physical_network=foo で 1 つ以上の L2 タイプのネットワークを使用するインスタンスは NUMA ノード 0 のホストコアでスケジュールされる必要があり、provider:physical_network=bar で 1 つ以上のネットワークを使用するインスタンスは NUMA ノード 2 と 3 の両方のホストコアでスケジュールされる必要があります。後者の場合、hw:numa_nodes extra 仕様を使用して、ゲストを 2 つ以上のホスト NUMA ノードに分割する必要があります。

    • passthrough_whitelist: "address""physical_network" に、有効な NIC アドレスと名前を指定します。
  2. ConfigMap CR ファイルを使用して、ConfigMap オブジェクトを作成します。

    $ oc create -f sriov-pinning-passthru.yaml -n openstack
  3. SR-IOV カスタムサービスを定義する OpenStackDataPlaneService CR を作成し、ワークステーション上の YAML ファイル (例: nova-custom-sriov.yaml) に保存します。

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneService
    metadata:
      name: nova-custom-sriov
  4. ConfigMap CR をカスタムサービスに追加し、このサービスを実行するノードセットの接続先セルの Secret CR を指定します。

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneService
    metadata:
      name: nova-custom-sriov
    spec:
      label: dataplane-deployment-nova-custom-sriov
      dataSources:
        - configMapRef:
            name: cpu-pinning-nova
        - configMapRef:
            name: sriov-nova
        - secretRef:
            name: nova-cell1-compute-config
        - secretRef:
            name: nova-migration-ssh-key
      tlsCerts:
        default:
          contents:
            - dnsnames
            - ips
          networks:
            - ctlplane
          issuer: osp-rootca-issuer-internal
      caCerts: combined-ca-bundle
  5. Ansible Playbook を参照するか、playbookContents フィールドに Ansible プレイを含めることで、カスタムサービスを作成するための Ansible コマンドを指定します。

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneService
    metadata:
      name: nova-custom-sriov
    spec:
      label: dataplane-deployment-nova-custom-sriov
      edpmServiceType: nova
      dataSources:
        - configMapRef:
            name: cpu-pinning-nova
        - configMapRef:
            name: sriov-nova
        - secretRef:
            name: nova-cell1-compute-config
        - secretRef:
            name: nova-migration-ssh-key
      playbook: osp.edpm.nova
      tlsCerts:
        default:
          contents:
            - dnsnames
            - ips
          networks:
            - ctlplane
          issuer: osp-rootca-issuer-internal
      caCerts: combined-ca-bundle
  6. custom-nova-sriov サービスを作成します。

    $ oc apply -f nova-custom-sriov.yaml -n openstack
  7. カスタムサービスが作成されたことを確認します。

    $ oc get openstackdataplaneservice nova-custom-sriov -o yaml -n openstack
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る