18.5.3. infra およびアプリケーションコンテナーの CPU の制限

汎用ハウスキーピングおよびワークロードタスクは、レイテンシーの影響を受けるプロセスに影響を与える可能性がある方法で CPU を使用します。デフォルトでは、コンテナーランタイムはすべてのオンライン CPU を使用してすべてのコンテナーを一緒に実行するため、コンテキストスイッチおよびレイテンシーが急増する可能性があります。CPU のパーティション分割により、レイテンシーの影響を受けるプロセスが相互に分離することで、レイテンシーの影響を受けるプロセスが妨げられなくなります。以下の表は、Performance Add-On Operator を使用してノードをチューニングした後に CPU でプロセスを実行する方法について説明しています。

表18.1 プロセスの CPU 割り当て

プロセスタイプ詳細

Burstable および best-effort Pod

低レイテンシーのワークロードが実行中の CPU 以外の CPU で実行されます。

インフラストラクチャー Pod

低レイテンシーのワークロードが実行中の CPU 以外の CPU で実行されます。

割り込み

予約された CPU へのリダイレクト(OpenShift Container Platform 4.8 以降におけるオプション)

カーネルプロセス

予約された CPU へのピン

レイテンシーの影響を受けるワークロード Pod

分離されたプールからの特定の排他的 CPU セットに PIN します。

OS プロセス/systemd サービス

予約された CPU へのピン

使用するパーティショニングパターンは、ハードウェア、ワークロードの特性、および予想されるシステム負荷などの多くの要因によって異なります。いくつかのユースケースは以下のとおりです。

  • レイテンシーの影響を受けるワークロードがネットワークインターフェースコントローラー(NIC)などの特定のハードウェアを使用する場合は、分離されたプールの CPU が、このハードウェアに対してできるだけ近いようにしてください。少なくとも、同じ NUMA(Non-Uniform Memory Access)ノードにワークロードを配置する必要があります。
  • 予約プールは、すべての割り込みの処理に使用されます。システムネットワークによっては、十分なサイズの予約プールを割り当て、着信パケット割り込みをすべて処理します。4.8 以降のバージョンでは、ワークロードをオプションで機密としてラベル付けできます。

予約および分離されたパーティションに使用する特定の CPU に関する決定には、詳細な分析と測定が必要です。ロールを実行するデバイスやメモリーの NUMA アフィニティーなどの要因。また、選択は、ワークロードのアーキテクチャーと特定のユースケースによって異なります。

重要

予約された CPU プールと分離された CPU プールは重複してはならず、ワーカーノードで利用可能なコアすべてにまたがる必要があります。

ハウスキーピングタスクとワークロードが相互に干渉しないようにするには、パフォーマンスプロファイルの spec セクションに、2 つの CPU グループを指定します。

  • isolated: アプリケーションコンテナーのワークロード用の CPU を指定します。これらの CPU のレイテンシーが一番低くなります。このグループのプロセスには割り込みがないため、DPDK ゼロパケットロスの帯域幅がより高くなります。
  • reserved: クラスターおよびオペレーティングシステムのハウスキーピング向けに CPU を指定します。予約された グループのスレッドは、多くの場合ビジー状態です。予約 グループでは、レイテンシーの影響を受けるアプリケーションを実行しないでください。レイテンシーの影響を受けるアプリケーションは 分離された グループで実行されます。

手順

  1. 環境のハードウェアおよびトポロジーに適したパフォーマンスプロファイルを作成します。
  2. infra およびアプリケーションコンテナー用に予約して分離する CPU で、 reserved および isolated パラメーターを追加します。

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
      name: infra-cpus
    spec:
      cpu:
        reserved: "0-4,9" 1
        isolated: "5-8" 2
      nodeSelector: 3
        node-role.kubernetes.io/worker: ""
    1
    クラスターおよびオペレーティングシステムのハウスキーピングタスクを実行する infra コンテナーの CPU を指定します。
    2
    アプリケーションコンテナーがワークロードを実行する CPU を指定します。
    3
    オプション: ノードセレクターを指定してパフォーマンスプロファイルを特定のノードに適用します。