第7章 Topology Manager の使用

Topology Manager は、CPU マネージャーおよびデバイスマネージャーからヒントを収集し、Pod CPU およびデバイスリソースを同じ Non-Uniform Memory Access (NUMA) ノードに配置する Kubelet コンポーネントです。

Topology Manager は、収集したヒントのトポロジー情報を使用し、設定される Topology Manager ポリシーおよび要求される Pod リソースに基づいて、Pod がノードから許可されるか、または拒否されるかどうかを判別します。

Topology Manager は、ハードウェアアクセラレーターを使用して低遅延 (latency-critical) の実行と高スループットの並列計算をサポートするワークロードの場合に役立ちます。

注記

Topology Manager は OpenShift Container Platform のアルファ機能です。

7.1. Topology Manager のセットアップ

前提条件

  • CPU マネージャーのポリシーを static に設定します。「スケーラビリティーおよびパフォーマンス」セクションの「 CPU マネージャーの使用」を参照してください。

手順

  1. LatencySensitive FeatureGate を有効にします。

    # oc edit featuregate/cluster
  2. Feature Set: LatencySensitive を仕様に追加します。

    # oc describe featuregate/cluster
    
    Name:         cluster
    Namespace:
    Labels:       <none>
    Annotations:  release.openshift.io/create-only: true
    API Version:  config.openshift.io/v1
    Kind:         FeatureGate
    Metadata:
      Creation Timestamp:  2019-10-30T15:06:41Z
      Generation:          2
      Resource Version:    7773803
      Self Link:           /apis/config.openshift.io/v1/featuregates/cluster
      UID:                 b00204ab-cc5e-4ca5-ad93-b9bdd738c1de
    Spec:
      Feature Set:  LatencySensitive
    Events:         <none>
  3. KubeletConfig で Topology Manager ポリシーを設定します。

    以下の YAML ファイルのサンプルには、single-numa-node ポリシーが指定されています。

    apiVersion: machineconfiguration.openshift.io/v1
    kind: KubeletConfig
    metadata:
      name: cpumanager-enabled
    spec:
      machineConfigPoolSelector:
        matchLabels:
          custom-kubelet: cpumanager-enabled
      kubeletConfig:
         cpuManagerPolicy: static
         cpuManagerReconcilePeriod: 5s
         topologyManagerPolicy: single-numa-node 1
    1
    選択した Topology Manager ポリシーを指定します。
    # oc create -f topologymanager-kubeletconfig.yaml