10.9. SR-IOV での DPDK の使用


Data Plane Development Kit (DPDK) は、高速パケット処理用のライブラリーとドライバーのセットを提供するものです。SR-IOV ハードウェアと DPDK ドライバーを使用することで、クラスターや仮想マシン (VM) を設定し、超低遅延のパケット処理ワークロードを実行できます。

10.9.1. DPDK ワークロード用のクラスター設定

ネットワークパフォーマンスを向上させるために、Data Plane Development Kit (DPDK) ワークロードを実行するように OpenShift Container Platform クラスターを設定できます。

前提条件

  • cluster-admin 権限を持つユーザーとしてクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。
  • SR-IOV Network Operator がインストールされている。
  • Node Tuning Operator がインストールされている。

手順

  1. コンピュートノードトポロジーのマッピングを実行し、DPDK アプリケーション用に分離する Non-Uniform Memory Access (NUMA) CPU と、オペレーティングシステム (OS) 用に予約する NUMA CPU を決定します。
  2. OpenShift Container Platform クラスターが高可用性のために個別のコントロールプレーンとコンピュートノードを使用する場合:

    1. コンピュートノードのサブセットにカスタムロール (例: worker-dpdk) のラベルを追加します。

      $ oc label node <node_name> node-role.kubernetes.io/worker-dpdk=""
    2. 新しい MachineConfigPool マニフェストを作成します。spec.machineConfigSelector オブジェクト内に worker-dpdk ラベルを含めます。

      MachineConfigPool マニフェストの例:

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfigPool
      metadata:
        name: worker-dpdk
        labels:
          machineconfiguration.openshift.io/role: worker-dpdk
      spec:
        machineConfigSelector:
          matchExpressions:
            - key: machineconfiguration.openshift.io/role
              operator: In
              values:
                - worker
                - worker-dpdk
        nodeSelector:
          matchLabels:
            node-role.kubernetes.io/worker-dpdk: ""
  3. 前の手順で作成したラベル付きノードとマシン設定プールに適用する PerformanceProfile マニフェストを作成します。パフォーマンスプロファイルは、DPDK アプリケーション用に分離された CPU とハウスキーピング用に予約された CPU を指定します。

    PerformanceProfile マニフェストの例:

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
      name: profile-1
    spec:
      cpu:
        isolated: 4-39,44-79
        reserved: 0-3,40-43
      globallyDisableIrqLoadBalancing: true
      hugepages:
        defaultHugepagesSize: 1G
        pages:
        - count: 8
          node: 0
          size: 1G
      net:
        userLevelNetworking: true
      nodeSelector:
        node-role.kubernetes.io/worker-dpdk: ""
      numa:
        topologyPolicy: single-numa-node
    注記

    MachineConfigPool マニフェストと PerformanceProfile マニフェストを適用すると、コンピュートノードが自動的に再起動します。

  4. PerformanceProfile オブジェクトの status.runtimeClass フィールドから、生成された RuntimeClass リソースの名前を取得します。

    $ oc get performanceprofiles.performance.openshift.io profile-1 -o=jsonpath='{.status.runtimeClass}{"\n"}'
  5. HyperConverged カスタムリソース (CR) を編集して、以前に取得した RuntimeClass 名を virt-launcher Pod のデフォルトのコンテナーランタイムクラスとして設定します。

    $ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \
        --type='json' -p='[{"op": "add", "path": "/spec/defaultRuntimeClass", "value":"<runtimeclass-name>"}]'
    注記

    HyperConverged CR を編集すると、変更の適用後に作成されるすべての仮想マシンに影響するグローバル設定が変更されます。

  6. DPDK 対応コンピュートノードが同時マルチスレッド (SMT) を使用している場合は、HyperConverged CR を編集して AlignCPUs イネーブラーを有効にします。

    $ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \
        --type='json' -p='[{"op": "replace", "path": "/spec/featureGates/alignCPUs", "value": true}]'
    注記

    AlignCPUs を有効にすると、OpenShift Virtualization は、エミュレーターのスレッド分離を使用する場合に CPU 総数を偶数パリティーにするために、追加で最大 2 つの専用 CPU を要求できるようになります。

  7. spec.deviceType フィールドを vfio-pci に設定して、SriovNetworkNodePolicy オブジェクトを作成します。

    SriovNetworkNodePolicy マニフェストの例:

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: policy-1
      namespace: openshift-sriov-network-operator
    spec:
      resourceName: intel_nics_dpdk
      deviceType: vfio-pci
      mtu: 9000
      numVfs: 4
      priority: 99
      nicSelector:
        vendor: "8086"
        deviceID: "1572"
        pfNames:
          - eno3
        rootDevices:
          - "0000:19:00.2"
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: "true"
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る