9.17.19.5. 仮想マシンのホットプラグ機能の無効化


ホットプラグ とは、仮想マシンの実行中にメモリーや CPU などのリソースを動的に追加する機能です。

OpenShift Virtualization のホットプラグのデフォルト乗数が原因で、仮想マシンが過剰な数のソケットを要求する可能性があります。たとえば、仮想マシンが 10 個のソケットを要求する場合、ホットプラグのデフォルト動作により、これが 4 倍になります。そのため、要求数が合計で 40 ソケットになります。これにより、Kernel-based Virtual Machine (KVM) でサポートされている推奨 CPU 数を超え、デプロイメントが失敗する可能性があります。

仮想マシンのデフォルトのホットプラグ機能を無効にすることで、仮想マシンのリソース要求を NUMA と整合した状態に保ち、リソースを大量に消費するワークロードのパフォーマンスを最適化できます。

9.17.19.5.1. インスタンスタイプごとの CPU ホットプラグの無効化

クラスター管理者は、インスタンスタイプごとに CPU ホットプラグを無効にできます。特定のインスタンスタイプに対して、ホットプラグなしで仮想マシン設定を標準化し、NUMA を考慮した CPU 割り当てを確実に行うには、この方法が推奨されます。

CPU ホットプラグが無効なインスタンスタイプを使用して仮想マシンを作成すると、仮想マシンがその設定を継承し、その仮想マシンの CPU ホットプラグが無効になります。

前提条件

  • OpenShift CLI (oc) がインストールされている。

手順

  1. VirtualMachineClusterInstancetype カスタムリソース (CR) の YAML ファイルを作成します。設定するインスタンスタイプに maxSockets spec を追加します。

    VirtualMachineClusterInstancetype CR の例:

    apiVersion: instancetype.kubevirt.io/v1beta1
    kind: VirtualMachineClusterInstancetype
    metadata:
      name: cx1.mycustom-numa-instance
    spec:
      cpu:
        dedicatedCPUPlacement: true
        isolateEmulatorThread: true
        numa:
          guestMappingPassthrough: {}
        guest: 8
        maxSockets: 8
      memory:
        guest: 16Gi
        hugepages:
          pageSize: 1Gi

    ここでは、以下のようになります。

    spec.cpu.dedicatedCPUPlacement
    仮想マシンインスタンスに専用リソースを割り当てるかどうかを指定します。これを true に設定すると、仮想マシンの仮想 CPU が物理ホストの CPU にピニングされます。これは、スケジューリングの揺らぎを最小限に抑えるために、ハイパフォーマンスワークロードでよく使用されます。
    spec.cpu.isolateEmulatorThread
    QEMU エミュレータースレッドを分離して専用の物理 CPU コアで実行するかどうかを指定します。これは通常 dedicatedCPUPlacement spec と一緒に使用されるパフォーマンス最適化です。
    spec.cpu.numa
    仮想マシンの NUMA トポロジー設定を指定します。
    spec.cpu.numa.guestMappingPassthrough
    仮想マシンの NUMA トポロジーが、基盤となるホストマシンの NUMA トポロジーをそのまま引き継ぐべきであることを指定します。これは、NUMA を考慮し、最適なパフォーマンスを必要とするアプリケーションにとって重要です。
    spec.cpu.guest
    仮想マシンに割り当てる仮想 CPU の合計数を指定します。
    spec.cpu.maxSockets
    仮想マシンの CPU ソケットの許容最大数を指定します。
    spec.memory
    仮想マシンのメモリー設定を指定します。
    spec.memory.guest
    仮想マシンに割り当てるメモリーの合計量を指定します。
    spec.memory.hugepages
    huge page に関連する設定を指定します。
    spec.memory.hugepages.pageSize
    仮想マシンのメモリーに使用する huge page のサイズを指定します。
  2. 次のコマンドを実行して、VirtualMachineClusterInstancetype CR を作成します。

    $ oc create -f <filename>.yaml

検証

  1. 更新された VirtualMachineClusterInstancetype 設定を使用する仮想マシンを作成します。
  2. 次のコマンドを実行して出力を調べ、作成した仮想マシンの設定を確認します。

    $ oc get vmi <vm_name> -o yaml

    出力例

    apiVersion: kubevirt.io/v1
    kind: VirtualMachineInstance
    metadata:
      name: example-vmi
      labels:
        instancetype.kubevirt.io/cluster-instancetype: cx1.example-numa-instance
    spec:
      domain:
        cpu:
          dedicatedCPUPlacement: true
          isolateEmulatorThread: true
          sockets: 8
          cores: 1
          threads: 1
          numa:
            guestMappingPassthrough: {}
          guest: 8
          maxSockets: 8
    # ...

    spec.template.spec.domain.cpu セクションが次のようになっている場合、更新が正常に適用されています。

    • sockets の値がインスタンスタイプの maxSockets および guest の値と一致している。これにより、追加のホットプラグスロットが設定されなくなります。
    • dedicatedCPUPlacement フィールドと isolateEmulatorThread フィールドが存在し、true に設定されている。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る