第18章 パフォーマンスプロファイルを使用した低レイテンシーを実現するための Hosted Control Plane のチューニング


低レイテンシーを実現するために、パフォーマンスプロファイルを適用して Hosted Control Plane をチューニングします。パフォーマンスプロファイルを使用すると、インフラストラクチャーおよびアプリケーションコンテナーの CPU を制限したり、レイテンシーの影響を受けやすいプロセスに対して huge page、ハイパースレッディング、CPU パーティションを設定できます。

18.1. Hosted Control Plane のパフォーマンスプロファイルの作成

Performance Profile Creator (PPC) ツールを使用して、クラスターパフォーマンスプロファイルを作成できます。PPC は Node Tuning Operator の機能です。

PPC は、クラスターに関する情報とユーザー指定の設定を組み合わせて、ハードウェア、トポロジー、ユースケースに適したパフォーマンスプロファイルを生成します。

以下は、クラスターでパフォーマンスプロファイルを作成して適用するための大まかなワークフローです。

  1. must-gather コマンドを使用してクラスターに関する情報を収集します。
  2. PPC ツールを使用してパフォーマンスプロファイルを作成します。
  3. パフォーマンスプロファイルをクラスターに適用します。

18.1.1. PPC 用に Hosted Control Plane クラスターに関するデータを収集する

Performance Profile Creator (PPC) ツールには must-gather データが必要です。クラスター管理者は、must-gather コマンドを実行し、クラスターに関する情報を取得します。

前提条件

  • 管理クラスターへの cluster-admin ロールアクセス権がある。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. 次のコマンドを実行して、管理クラスターの kubeconfig ファイルをエクスポートします。

    $ export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、すべての namespace のノードプールをすべてリスト表示します。

    $ oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
    Copy to Clipboard Toggle word wrap

    出力例

    NAMESPACE   NAME                     CLUSTER       DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION   UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
    clusters    democluster-us-east-1a   democluster   1               1               False         False        4.17.0    False             True
    Copy to Clipboard Toggle word wrap

    • 出力には、NodePool リソースが定義されている管理クラスター内の namespace である clusters が表示されます。
    • NodePool リソースの名前 (例: democluster-us-east-1a)。
    • この NodePool が属する HostedCluster。たとえば、democluster などです。
  3. 管理クラスターで次のコマンドを実行して、利用可能なシークレットをリスト表示します。

    $ oc get secrets -n clusters
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                              TYPE                      DATA   AGE
    builder-dockercfg-25qpp           kubernetes.io/dockercfg   1      128m
    default-dockercfg-mkvlz           kubernetes.io/dockercfg   1      128m
    democluster-admin-kubeconfig      Opaque                    1      127m
    democluster-etcd-encryption-key   Opaque                    1      128m
    democluster-kubeadmin-password    Opaque                    1      126m
    democluster-pull-secret           Opaque                    1      128m
    deployer-dockercfg-8lfpd          kubernetes.io/dockercfg   1      128m
    Copy to Clipboard Toggle word wrap

  4. 次のコマンドを実行して、ホステッドクラスターの kubeconfig ファイルを抽出します。

    $ oc get secret <secret_name> -n <cluster_namespace> -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
    Copy to Clipboard Toggle word wrap

    $ oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
    Copy to Clipboard Toggle word wrap

  5. ホステッドクラスターの must-gather バンドルを作成するために、別のターミナルウィンドウを開き、次のコマンドを実行します。

    1. ホステッドクラスターの kubeconfig ファイルをエクスポートします。

      $ export HC_KUBECONFIG=<path_to_hosted_cluster_kubeconfig>
      Copy to Clipboard Toggle word wrap

      $ export HC_KUBECONFIG=~/hostedcpkube/hosted-cluster-kubeconfig
      Copy to Clipboard Toggle word wrap

    2. must-gather データを保存するディレクトリーに移動します。
    3. ホステッドクラスターのトラブルシューティングデータを収集します。

      $ oc --kubeconfig="$HC_KUBECONFIG" adm must-gather
      Copy to Clipboard Toggle word wrap
    4. 作業ディレクトリーに作成された must-gather ディレクトリーから圧縮ファイルを作成します。たとえば、Linux オペレーティングシステムを使用するコンピューターで以下のコマンドを実行します。

      $ tar -czvf must-gather.tar.gz must-gather.local.1203869488012141147
      Copy to Clipboard Toggle word wrap

18.1.2. Podman を使用してホステッドクラスターで Performance Profile Creator を実行する

クラスター管理者は、Podman と Performance Profile Creator (PPC) ツールを使用してパフォーマンスプロファイルを作成できます。

PPC の引数の詳細は、「Performance Profile Creator の引数」を参照してください。

PPC ツールは、ホステッドクラスターを認識するように設計されています。ツールは must-gather データからホステッドクラスターを検出すると、自動的に次の操作を実行します。

  • マシン設定プール (MCP) が存在しないことを認識します。
  • MCP の代わりに、ノードプールをコンピュートノード設定の信頼できるソースとして使用します。
  • 特定のプールを対象とする場合を除き、node-pool-name 値を明示的に指定する必要はありません。
重要

PPC は、ホステッドクラスターからの must-gather データを使用して、パフォーマンスプロファイルを作成します。パフォーマンス設定の対象となるノードのラベルを変更するなど、クラスターに変更を加えた場合は、PPC を再度実行する前に、must-gather データを再作成する必要があります。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
  • ホステッドクラスターがインストールされている。
  • Podman と OpenShift CLI (oc) がインストールされている。
  • Node Tuning Operator イメージにアクセスできる。
  • クラスターの must-gather データにアクセスできる。

手順

  1. ホステッドクラスターで、次のコマンドを実行して、Podman を使用して registry.redhat.io に認証します。

    $ podman login registry.redhat.io
    Copy to Clipboard Toggle word wrap
    Username: <user_name>
    Password: <password>
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、ホステッドクラスターにパフォーマンスプロファイルを作成します。この例では、サンプルの PPC 引数と値を使用します。

    $ podman run --entrypoint performance-profile-creator \
        -v /path/to/must-gather:/must-gather:z \
    1
    
        registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.19 \
        --must-gather-dir-path /must-gather \
        --reserved-cpu-count=2 \
    2
    
        --rt-kernel=false \
    3
    
        --split-reserved-cpus-across-numa=false \ 
    4
    
        --topology-manager-policy=single-numa-node \
    5
    
        --node-pool-name=democluster-us-east-1a \
        --power-consumption-mode=ultra-low-latency \
    6
    
        --offlined-cpu-count=1 \
    7
    
        > my-hosted-cp-performance-profile.yaml
    Copy to Clipboard Toggle word wrap
    1
    oc adm must-gather の出力が作成されたローカルディレクトリーをコンテナーにマウントします。
    2
    予約済み CPU 数を 2 に指定します。
    3
    リアルタイムカーネルを無効にします。
    4
    NUMA ノード間での予約済み CPU の分割を無効にします。
    5
    NUMA トポロジーポリシーを指定します。NUMA Resources Operator をインストールする場合、これを single-numa-node に設定する必要があります。
    6
    消費電力の増加を代償にして、レイテンシーを最小限に抑えることを指定します。
    7
    1 つの CPU をオフライン化することを指定します。

    出力例

    level=info msg="Nodes names targeted by democluster-us-east-1a pool are: ip-10-0-129-110.ec2.internal "
    level=info msg="NUMA cell(s): 1"
    level=info msg="NUMA cell 0 : [0 2 1 3]"
    level=info msg="CPU(s): 4"
    level=info msg="2 reserved CPUs allocated: 0,2 "
    level=info msg="1 isolated CPUs allocated: 1"
    level=info msg="Additional Kernel Args based on configuration: []
    Copy to Clipboard Toggle word wrap

  3. 次のコマンドを実行して、作成された YAML ファイルを確認します。

    $ cat my-hosted-cp-performance-profile
    Copy to Clipboard Toggle word wrap

    出力例

    ---
    apiVersion: v1
    data:
      tuning: |
        apiVersion: performance.openshift.io/v2
        kind: PerformanceProfile
        metadata:
          creationTimestamp: null
          name: performance
        spec:
          cpu:
            isolated: "1"
            offlined: "3"
            reserved: 0,2
          net:
            userLevelNetworking: false
          nodeSelector:
            node-role.kubernetes.io/worker: ""
          numa:
            topologyPolicy: single-numa-node
          realTimeKernel:
            enabled: false
          workloadHints:
            highPowerConsumption: true
            perPodPowerManagement: false
            realTime: true
        status: {}
    kind: ConfigMap
    metadata:
      name: performance
      namespace: clusters
    Copy to Clipboard Toggle word wrap

18.1.3. ホステッドクラスターでの低レイテンシーチューニングの設定

ホステッドクラスター内のノードでパフォーマンスプロファイルを使用して低レイテンシーを設定するには、Node Tuning Operator を使用できます。Hosted Control Plane では、Tuned オブジェクトを含む config map を作成し、ノードプールでその config map を参照することで、低レイテンシーのチューニングを設定できます。この場合の Tuned オブジェクトは、ノードプール内のノードに適用するパフォーマンスプロファイルを定義する PerformanceProfile オブジェクトです。

手順

  1. 次のコマンドを実行して、管理クラスターの kubeconfig ファイルをエクスポートします。

    $ export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、管理クラスターに ConfigMap オブジェクトを作成します。

    $ oc --kubeconfig="$MGMT_KUBECONFIG" apply -f my-hosted-cp-performance-profile.yaml
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、clusters namespace の NodePool オブジェクトを編集します。spec.tuningConfig フィールドを追加して、作成したパフォーマンスプロファイルの名前をそのフィールドに追加します。

    $ oc edit np -n clusters
    Copy to Clipboard Toggle word wrap
    apiVersion: hypershift.openshift.io/v1beta1
    kind: NodePool
    metadata:
      annotations:
        hypershift.openshift.io/nodePoolCurrentConfig: 2f752a2c
        hypershift.openshift.io/nodePoolCurrentConfigVersion: 998aa3ce
        hypershift.openshift.io/nodePoolPlatformMachineTemplate: democluster-us-east-1a-3dff55ec
      creationTimestamp: "2025-04-09T09:41:55Z"
      finalizers:
      - hypershift.openshift.io/finalizer
      generation: 1
      labels:
        hypershift.openshift.io/auto-created-for-infra: democluster
      name: democluster-us-east-1a
      namespace: clusters
      ownerReferences:
      - apiVersion: hypershift.openshift.io/v1beta1
        kind: HostedCluster
        name: democluster
        uid: af77e390-c289-433c-9d29-3aee8e5dc76f
      resourceVersion: "53056"
      uid: 11efa47c-5a7b-476c-85cf-a274f748a868
    spec:
      tuningConfig:
      - name: performance
      arch: amd64
      clusterName: democluster
      management:
    Copy to Clipboard Toggle word wrap
    注記

    複数のノードプールで同じプロファイルを参照できます。Hosted Control Plane では、Node Tuning Operator により、Tuned カスタムリソースを区別するために、リソースの名前にノードプール名と namespace のハッシュが追加されます。変更を加えると、設定の変更が必要であることがシステムによって検出され、そのプール内のノードのローリング更新が開始し、新しい設定が適用されます。

検証

  1. 次のコマンドを実行して、すべての namespace のノードプールをすべてリスト表示します。

    $ oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
    Copy to Clipboard Toggle word wrap

    出力例

    NAMESPACE   NAME                     CLUSTER       DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION   UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
    clusters    democluster-us-east-1a   democluster   1               1               False         False        4.17.0    False             True
    Copy to Clipboard Toggle word wrap

    注記

    UPDATINGCONFIG フィールドは、ノードプールの設定が更新中かどうかを示します。この更新中は、ノードプールのステータスの UPDATINGCONFIG フィールドが True になります。UPDATINGCONFIG フィールドが False に戻った場合に限り、新しい設定が完全に適用されたとみなされます。

  2. 次のコマンドを実行して、clusters-democluster namespace 内のすべての config map をリスト表示します。

    $ oc --kubeconfig="$MGMT_KUBECONFIG" get cm -n clusters-democluster
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                 DATA   AGE
    aggregator-client-ca                                 1      69m
    auth-config                                          1      68m
    aws-cloud-config                                     1      68m
    aws-ebs-csi-driver-trusted-ca-bundle                 1      66m
    ...                                                  1      67m
    kubelet-client-ca                                    1      69m
    kubeletconfig-performance-democluster-us-east-1a     1      22m
    ...
    ovnkube-identity-cm                                  2      66m
    performance-democluster-us-east-1a                   1      22m
    ...
    tuned-performance-democluster-us-east-1a             1      22m
    Copy to Clipboard Toggle word wrap

    この出力には、kubeletconfig kubeletconfig-performance-democluster-us-east-1a とパフォーマンスプロファイル performance-democluster-us-east-1a が作成されたことが示されています。Node Tuning Operator により、Tuned オブジェクトがホステッドクラスターに同期されます。どの Tuned オブジェクトが定義されているか、どのプロファイルが各ノードに適用されているかを確認できます。

  3. 次のコマンドを実行して、管理クラスターで使用可能なシークレットをリスト表示します。

    $ oc get secrets -n clusters
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                              TYPE                      DATA   AGE
    builder-dockercfg-25qpp           kubernetes.io/dockercfg   1      128m
    default-dockercfg-mkvlz           kubernetes.io/dockercfg   1      128m
    democluster-admin-kubeconfig      Opaque                    1      127m
    democluster-etcd-encryption-key   Opaque                    1      128m
    democluster-kubeadmin-password    Opaque                    1      126m
    democluster-pull-secret           Opaque                    1      128m
    deployer-dockercfg-8lfpd          kubernetes.io/dockercfg   1      128m
    Copy to Clipboard Toggle word wrap

  4. 次のコマンドを実行して、ホステッドクラスターの kubeconfig ファイルを抽出します。

    $ oc get secret <secret_name> -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
    Copy to Clipboard Toggle word wrap

    $ oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
    Copy to Clipboard Toggle word wrap

  5. 次のコマンドを実行して、ホステッドクラスターの kubeconfig をエクスポートします。

    $ export HC_KUBECONFIG=<path_to_hosted-cluster-kubeconfig>
    Copy to Clipboard Toggle word wrap
  6. 次のコマンドを実行して、kubeletconfig がホステッドクラスターにミラーリングされていることを確認します。

    $ oc --kubeconfig="$HC_KUBECONFIG" get cm -n openshift-config-managed | grep kubelet
    Copy to Clipboard Toggle word wrap

    出力例

    kubelet-serving-ca                            			1   79m
    kubeletconfig-performance-democluster-us-east-1a		1   15m
    Copy to Clipboard Toggle word wrap

  7. 次のコマンドを実行して、ホステッドクラスターに single-numa-node ポリシーが設定されていることを確認します。

    $ oc --kubeconfig="$HC_KUBECONFIG" get cm kubeletconfig-performance-democluster-us-east-1a -o yaml -n openshift-config-managed | grep single
    Copy to Clipboard Toggle word wrap

    出力例

        topologyManagerPolicy: single-numa-node
    Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat