VMware vSphere でソケットごとの CPU コア数を設定する方法:ベストプラクティス

新しい仮想マシンのプロセッサ設定を行う際には、いくつかの重要な概念を理解しておくことが重要です。これには、ソケットあたりのCPUコア数の算出方法や、この設定が仮想マシンのパフォーマンスに与える影響などが含まれます。また、コア数の多いプロセッサを少数使用する場合と、コア数の少ないプロセッサを多数使用する場合とでは、どのような違いが生じるかを理解することも不可欠です。これらの関係性を明確にすることで、ワークロードやホストの性能に見合った構成を選択できるようになります。

これらの概念と、ESXiホスト上の仮想マシンにおけるCPU構成の基本原則について、以下で詳しく説明します。

NAKIVO for VMware vSphere Backup

NAKIVO for VMware vSphere Backup

Complete data protection for VMware vSphere VMs and instant recovery options. Secure backup targets onsite, offsite and in the cloud. Anti-ransomware features.

用語集

まず、CPU設定を行う際に知っておくべき用語の定義から始めましょう。 仮想マシン その仕組みを理解していただくために。

CPU (中央処理装置、マイクロプロセッサチップ、またはプロセッサ)は、コンピュータの主要な構成要素です。これは、ソケットに接続されたトランジスタを備えた電子回路です。CPUは命令を実行して、計算を行ったり、アプリケーションを起動したり、タスクを完了させたりします。プロセッサのクロック速度が発熱の限界に近づいたため、メーカーはプロセッサのアーキテクチャを変更し、複数のCPUコアを搭載したプロセッサの製造を開始しました。物理プロセッサと論理プロセッサ、あるいはプロセッサコアの混同を避けるため、一部のベンダーは物理プロセッサを”ソケット”と呼んでいます。

CPUソケット マザーボード上の物理的なコネクタであり、1つの物理CPUが接続されます。マザーボードには、少なくとも1つのCPUソケットが搭載されています。サーバー用マザーボードには通常、複数のマルチコアプロセッサに対応する複数のCPUソケットが搭載されています。CPUソケットは、プロセッサのシリーズごとに標準化されています。IntelとAMDは、それぞれのプロセッサファミリーで異なるCPUソケットを採用しています。

CPUコア L1キャッシュを搭載したプロセッサの一部です。これは、コア間で共有される”大型”プロセッサの他のコアや外部コンポーネントと連携することなく、独立して演算処理を行います。基本的に、コアとは、ソケットに接続されたメインプロセッサに組み込まれた小型のプロセッサと見なすことができます。マルチコアプロセッサを合理的に活用するためには、アプリケーションが並列演算に対応している必要があります。

ハイパースレッディング これは、単一のプロセッサコアを搭載したプロセッサ上で並列演算を可能にするためにインテルが開発した技術です。ハイパースレッディングは、2002年にデスクトップPC向けに投入されたPentium 4 HTプロセッサの登場とともに初めて採用されました。オペレーティングシステムは、ハイパースレッディング機能を備えたシングルコアプロセッサを、2つの論理コア(物理コアではない)を持つプロセッサとして認識します。 同様に、ハイパースレッディング機能を備えた4コアプロセッサは、OSからは8コアのプロセッサとして認識されます。各コアで実行されるスレッド数が多いほど、より多くのタスクを並列処理できます。現代のインテル製プロセッサは、マルチコアとハイパースレッディングの両方を備えています。通常、この機能はデフォルトで有効になっており、BIOSで有効または無効に設定できます。AMD Simultaneous Multi-Threading(SMT)は、AMDプロセッサにおけるハイパースレッディングに相当する技術です。

vCPU これは、VMの仮想ハードウェア設定において仮想デバイスとして構成される仮想プロセッサです。複数のCPUコアを使用できます。vCPUは仮想ソケットに接続されます。

CPUのオーバーコミット 物理ホスト上に存在する仮想マシン(VM)に対して、そのホストで利用可能な論理プロセッサの総数よりも多くの論理プロセッサ(CPUコア)を割り当てた場合に発生します。

NUMA (Non-Uniform Memory Access) は、マルチプロセッサコンピュータで使用されるメモリ設計です。その基本概念は、各プロセッサに個別のメモリを提供することです(すべてのプロセッサがバスを介して共有メモリにアクセスするUMAとは異なります)。同時に、プロセッサは共有バスを使用することで、他のプロセッサに属するメモリにアクセスすることも可能です(すべてのプロセッサがコンピュータ上のすべてのメモリにアクセスできます)。 マルチプロセッサコンピュータにおいて、CPUは自身のローカルメモリに、他のメモリよりも高速にアクセスできるという性能上の利点を持つ。

The UMA and NUMA designs for multiprocessor computers

これらの基本的なアーキテクチャは、現代のマルチプロセッサコンピュータにおいて組み合わされています。プロセッサは、マルチコアCPUパッケージまたはノードごとにグループ化されています。同じノードに属するプロセッサは、UMAアーキテクチャと同様に、メモリモジュールへのアクセスを共有します。また、プロセッサは共有インターコネクトを介して、リモートノードのメモリにアクセスすることも可能です。NUMAアーキテクチャにおいても同様のアクセスが行われますが、メモリに直接アクセスするのではなく、そのメモリを所有するCPUを経由するため、パフォーマンスは低下します。

The mixed architecture for modern multiprocessor computers

NUMAノードとは、CPUソケットとそれに最も近いメモリモジュールで構成されるCPU/メモリのペアのことです。NUMAは通常、BIOSにおいて”ノードインターリーブ”または”インターリーブメモリ”設定として構成されます。

仮想NUMA (vNUMA) これは、VMware仮想マシン向けのNUMAに相当するものです。vNUMAは、複数の物理NUMAノードのハードウェアリソースを消費することで、最適なパフォーマンスを実現します。vNUMAテクノロジーは、NUMAトポロジーをゲストOSに公開します。その結果、ゲストOSは基盤となるNUMAトポロジーを認識できるようになります。vNUMAを使用するには、仮想マシンの仮想ハードウェアバージョンが8以上である必要があります。

VMware vSphere 6.5、8.0、および 9.0 では、vNUMA の処理が大幅に改善されました。この機能は、VM 構成内の”ソケットあたりの CPU コア数”の設定値によって制御されなくなりました。デフォルトでは、8 つ以上の論理プロセッサ(vCPU)を持つ VM に対して vNUMA が有効になっています。VM の VMX 構成ファイルを編集し、次の行を追加することで、VM に対して vNUMA を手動で有効にすることができます。 numa.vcpu.min=Xここで、X は仮想マシンの vCPU 数です。

“の”Cores per Socket”” の値はvNUMAの有効化を制御するものではありませんが、vCPU数が多大な大規模な仮想マシンで最適なパフォーマンスを実現するためには、ホストの物理NUMAノードトポロジに合わせてこの設定を手動で構成することが、依然としてベストプラクティスです。

コア数の計算

サーバーの物理CPUコア数、論理CPUコア数、およびその他のパラメータを計算する方法を見ていきましょう。

  • 物理CPUコアの総数 ホストマシン上での値は、次の式で計算されます:

    (プロセッサソケット数) × (プロセッサあたりのコア数) = 物理プロセッサコア数

    : プロセッサが搭載されているソケットのみを考慮する必要があります。

  • ハイパースレッディングがサポートされている場合、計算することができます 論理プロセッサコアの数 次の式を用いて:

    (物理プロセッサコアの数) × (物理プロセッサあたり2スレッド) = 論理プロセッサの数

  • 最後に、この式を使って計算してください。 利用可能なプロセッサリソース 仮想マシンに割り当て可能なもの:

    (CPUソケット数)×(CPUコア数)×(スレッド数)

    たとえば、2つのプロセッサを搭載し、各プロセッサが4コアでハイパースレッディングに対応しているサーバーの場合、VMに割り当て可能な論理プロセッサの総数は次のようになります:

    2(CPU)× 4(コア)× 2(HT)= 16 論理プロセッサ

    1つの論理プロセッサは、VMに対して単一のプロセッサまたは単一のCPUコアとして割り当てることができます。

    仮想マシンについては、ハードウェアエミュレーション機能により、構成において複数のプロセッサやCPUコアを使用することができます。1つの物理CPUコアは、仮想CPUとして、あるいは仮想マシンの仮想CPUコアとして設定することが可能です。

  • クロックサイクルの総数 VMで利用可能な容量は、次のように計算されます:

    (論理ソケット数)×(CPUのクロック速度)

    たとえば、クロック速度が3.0 GHzの物理プロセッサを使用している場合に、2つのコアを持つ2つのvCPUを使用するようにVMを設定すると、合計クロック速度は2 × 2 × 3 = 12 GHzとなります。ESXiホストでCPUオーバーコミットが使用されている場合、VMがCPU負荷の高いタスクを実行すると、VMが利用できる周波数は計算値よりも低くなる可能性があります。

ソケットあたりのCPUコア数の制限

vSphere 7.0 Update 1におけるCPU/コア数の制限、 vSphere 8.0 および vSphere 9.0 は以下の通りです:

  • 1つのVMに割り当て可能な仮想プロセッサソケットの最大数は768です。これ以上の数を割り当てたい場合は、VMがマルチコアプロセッサを使用するように設定してください。
  • vSphere 8.0(仮想ハードウェアバージョン 18)では、1 つの仮想マシンに割り当て可能なプロセッサコアの最大数は 768 ですが、vSphere 9.0(仮想ハードウェアバージョン 22)では 960 に増加します。仮想マシンが使用できる CPU コア数は、物理マシン上の論理プロセッサコア数を超えることはできません。
  • CPUのホットアド. VMのvCPU数が128以下の場合、CPUのホットアド機能は使用できません。また、VMの実行中にCPU構成を編集することもできません。
  • OSのCPUに関する制限. オペレーティングシステムにプロセッサ数の制限があり、VMにそれ以上の仮想プロセッサを割り当てた場合、追加されたプロセッサはゲストOSによって認識も利用もされません。こうした制限は、OSの技術的な設計やライセンス上の制約によって生じることがあります。なお、ソケット単位やCPUコア単位でライセンスされるオペレーティングシステムがあることに注意してください(例えば、 Windows Server 2019 または Windows Server 2025)。

一部のオペレーティングシステムにおけるCPU(CPUソケット)の対応制限:

  • Windows 10 Pro – 2 CPU
  • Windows 10 Home – 1 CPU
  • Windows 10 ワークステーション – 4 CPU
  • Windows 11 Home/Pro x64 – 2 CPU(論理プロセッサまたはvCPU/コアの最大数は256)
  • Windows 11 Pro for Workstations – 4 CPU(論理プロセッサまたはvCPU/コアの最大数は256)
  • Windows Server 2022 (Standard/Datacenter) – 64 CPU(最大 640 個の論理プロセッサまたは CPU コア)
  • Windows Server 2025 (Standard/Datacenter) – 64 CPU(最大 2048 個の論理プロセッサまたは CPU コア)
  • Windows Server 2019 Standard/Datacenter – 64 CPU
  • Windows XP Pro x64 – 2 CPU
  • Windows 7 Pro/Ultimate/Enterprise – 2 CPU
  • Windows Server 2003 Datacenter – 64 CPU

設定に関する推奨事項

古いバージョンのvSphereでは、VMの設定においてコア数よりもソケット数を使用することを推奨します。当初は、CPUソケット数やコア数の違いによる顕著な違いに気づかないかもしれませんが、これらはVMのパフォーマンスに影響を与える可能性があります。いくつかの設定機能について留意してください。VMに複数の仮想プロセッサ(ソケット)を設定して最適なパフォーマンスを実現する際は、NUMAおよびvNUMAの概念を念頭に置いてください。

vNUMAが自動的に設定されない場合は、物理サーバーのNUMAトポロジーを反映させてください。以下は、VMware vSphere 6.5以降(vSphere 8.0および9.0を含む)の仮想マシンに関する推奨事項です:

  • 仮想マシン(VM)の論理プロセッサ(vCPU)数を定義する際は、”ソケットあたりのコア数”設定を選択してください。ESXiサーバーの単一NUMAノード上のCPUコア数を超えるまで、この操作を繰り返します。同様に、物理ESXiサーバーの単一NUMAノードで使用可能なメモリ容量を超えるまで、この手順を繰り返します。
  • VMの設定において、論理プロセッサ(vCPU)の数が単一のNUMAノード上の物理CPUコア数を超えたり、RAMの容量が単一のNUMAノードで利用可能なメモリ総量を超えたりする場合があります。最適なパフォーマンスを得るためには、論理プロセッサ(vCPU)の数を、必要な最小限のNUMAノード数に分割することを検討してください。
  • CPUコア数またはメモリ容量が、vCPUの数を超える場合は、奇数のvCPUを設定しないでください。物理サーバー上の単一NUMAノードに割り当てられたメモリ容量を超える場合も同様です。
  • 物理ホスト上の物理プロセッサコアの数よりも多くのvCPUを持つ仮想マシンを作成しないでください。
  • 要件によりvNUMAを無効にできない場合は、vCPUのホットアド機能を有効にしないでください。

vSphere 6.5 以前のバージョンで vNUMA が有効になっており、VM の論理プロセッサ(vCPU)数を定義している場合は、ソケットあたりのコア数を 1(デフォルト値)のままに保ちつつ、仮想ソケットの数を選択してください。 “ソケットあたり1コア”の設定により、vNUMAはゲストOSに最適なvNUMAトポロジを自動的に選択できるようになります。この自動設定は、サーバーの基盤となる物理トポロジにおいて最適です。

vNUMAが有効になっている場合、論理プロセッサ(vCPU)の数は同じまま、仮想CPUコア数を増やし、仮想ソケット数を同数だけ減らすと、vNUMAはVMに対して最適なNUMA構成を設定できなくなります。その結果、VMのパフォーマンスに影響が生じ、低下する可能性があります。

仮想マシン(VM)にインストールされているゲストOSやその他のソフトウェアがプロセッサ単位でライセンスされている場合は、使用するプロセッサ数を減らし、代わりにCPUコア数を増やすようにVMを設定してください。たとえば、Windows Server 2012 R2はソケット単位でライセンスされ、Windows Server 2016(およびそれ以降のバージョン)はコア単位でライセンスされます。

VMware仮想マシンの設定でCPUのオーバーコミットを使用する場合は、以下の値に注意してください:

  • 1:1~3:1 – 仮想マシンの実行に問題はないはずです;
  • 3:1~5:1 – 性能の低下が見られる;
  • 6:1 – パフォーマンスの大幅な低下が見込まれます。

通常の値でのCPUオーバーコミットメントであれば、テスト環境や開発環境においてリスクなく利用できます。

ESXiホスト上の仮想マシンの構成

まず、仮想マシンを適切に実行し、十分なパフォーマンスを確保するために、物理ホストに必要な論理プロセッサの総数(CPUの総数)を決定します。次に、前述の推奨事項と制限事項を考慮しつつ、仮想マシンに設定すべきプロセッサを搭載した仮想ソケット数(vSphere Client上のソケット数)およびCPUコア数(ソケットあたりのコア数)を定義します。以下の表は、必要な構成を選択する際の参考になります。

calculate CPU cores per socket for multiprocessor VMs

VMに8つ以上の論理プロセッサを割り当てる必要がある場合でも、その仕組みは変わりません。論理CPUの数を計算するには、 vSphere Clientソケット数にコア数を掛け算します。たとえば、各ソケットに2つのCPUコアを搭載した2プロセッサのソケットを使用するようにVMを設定する場合、論理CPUの総数は2 × 2 = 4となります。つまり、この設定を適用するには、vSphere ClientのVMの仮想ハードウェアオプションでCPUを4つ選択する必要があります。

vSphere Client での CPU あたりのコア数の設定

VMware vSphere Client で仮想マシンの CPU オプションを設定する方法について説明します。設定手順は、vSphere 6.x、7.0、8.0、9.0 においてすべて同じです。

  1. お使いのIPアドレスを入力してください vCenter Server Webブラウザで、VMware vSphere Clientを開きます。
  2. ナビゲーターで、以下を開きます ホストとクラスタ、設定したい仮想マシンを選択します。CPUの設定を変更するには、仮想マシンの電源がオフになっていることを確認してください。
  3. 仮想マシンを右クリックし、次に 設定を編集 コンテキストメニューから仮想マシンの設定を開きます。
  4. 展開する CPU のセクション 仮想ハードウェア タブの 設定を編集 ウィンドウ。
    • CPU. CPU の文字列にあるドロップダウンメニューをクリックし、この VM に必要な論理プロセッサの総数を選択します。この例では、Ubuntu VM に 4 つの論理プロセッサを選択します(ブログ-Ubuntu1).
    • ソケットあたりのコア数この文字列で、ドロップダウンメニューをクリックし、各仮想ソケット(プロセッサ)に必要なコア数を選択してください。
    • CPUのホットプラグこの機能を使用するには、 CPUのホットアドを有効にする チェックボックス。制限事項と要件を忘れないでください。

      Configuring processors and the number of cores per CPU

    • 予約ESXiホストまたはクラスター上の仮想マシンに対して、CPUクロック速度(周波数、MHzまたはGHz)の保証最低割り当てを選択します。
    • 上限. VMプロセッサの最大CPUクロック速度を選択します。この周波数は、たとえそのVMがESXiホストまたはクラスタ上で実行されている唯一のVMであり、利用可能なプロセッサリソースがさらに残っていたとしても、仮想マシンの最大周波数となります。 設定された制限は、VMのすべての仮想プロセッサに適用されます。たとえば、2つのシングルコアプロセッサを搭載したVMで、制限が1000 MHzに設定されている場合、両方の仮想プロセッサは合計で100万サイクル/秒(各コアあたり500 MHz)のクロック速度で動作します。
    • 株式. このパラメータは、ESXiホストまたはリソースプール上の仮想マシンによるリソース消費の優先度(Low、Normal、High、Custom)を定義します。これとは異なり、 ご予約 そして 上限 パラメータ、その 株式 このパラメータは、ESXiホスト、リソースプール、またはDRSクラスタ内でCPUリソースが不足している場合にのみ、VMに適用されます。

      利用可能なオプションは以下の通りです 株式 パラメータ:

      • – 仮想プロセッサ1つにつき500シェア
      • 通常 – 仮想プロセッサ1つにつき1000シェア
      • 高い – 仮想プロセッサあたり2000シェア
      • カスタム – カスタム値を設定する

      ~が高ければ高いほど 株式 この値が大きいほど、ESXiホストまたはリソースプール内でそのVMに割り当てられるCPUリソースが増えます。

    • ハードウェア仮想化このチェックボックスをオンにすると、機能が有効になります ネスト型仮想化このオプションは、テストや教育目的で、ある仮想マシン(VM)の中で別の仮想マシン(VM)を実行したい場合に便利です。
    • パフォーマンス・カウンターこの機能により、仮想マシン内にインストールされたアプリケーションのCPUパフォーマンスを測定した後、そのデバッグや最適化を行うことができます。
    • スケジューリングの親和性. このオプションは、VMを特定のプロセッサに割り当てるために使用されます。値は次のような形式になります:”0, 2, 4-7”.
    • I/O MMU。この機能により、VMは(エミュレートされたデバイスや準仮想化デバイスを使用するのではなく)ストレージコントローラ、ネットワークカード、グラフィックスカードなどのハードウェア入出力デバイスに直接アクセスできるようになります。 I/O MMUは、Intel Virtualization Technology for Directed I/O(Intel VT-d)やAMD I/O Virtualization(AMD-V)とも呼ばれます。I/O MMUはデフォルトで無効になっています。このオプションはvSphere 7.0では非推奨となっています。I/O MMUが有効になっている場合、VMは vMotion また、スナップショット、メモリのオーバーコミット、VMの一時停止状態、物理NICの共有、および NSXによるネットワーク仮想化.

スタンドアロンのESXiホストとVMware Host Clientを使用してWebブラウザから仮想マシンを設定する場合、その設定方法はVMware vSphere Clientの場合と同じです。

VMware Workstation での CPU あたりのコア数の設定

vCenter Server または ESXi ホストに接続する場合、 VMware Workstation vSphere VMの設定を開くと、仮想プロセッサの基本設定を編集できます。

  1. クリック VM > 設定、を選択して ハードウェア タブをクリックして プロセッサ.
  2. 仮想プロセッサ(ソケット)の数と、プロセッサあたりのコア数を選択してください。

    次のスクリーンショットには、先ほどvSphere Clientで設定したのと同じUbuntu VMのプロセッサ構成が表示されています。

    プロセッサコアの総数(ESXiホストまたはクラスタ上の物理プロセッサの論理コア数)は自動的に計算され、以下に表示されます。これに対し、vSphere Clientのインターフェースでは、プロセッサコアの総数(“CPU”オプション)を設定し、プロセッサあたりのコア数を選択すると、仮想ソケット数が計算されて表示されます。

    the number of cores per CPU for vSphere VMs in VMware Workstation

PowerCLI での仮想マシンのプロセッサの設定

VMware vSphere のコンポーネントの設定にコマンドラインインターフェースを使用したい場合は、 Power CLI VMのCPU設定を編集するには。VMのCPU設定を編集する方法を見てみましょう(Ubuntu 19) を Power CLI で実行します。電源がオフになっている仮想マシンには、これらのコマンドを使用してください。

  1. 2つのシングルコア仮想プロセッサ(2つの仮想ソケット)を使用するようにVMを設定するには、次のコマンドを実行します:

    get-VM -name Ubuntu19 | set-VM -NumCpu 2

    VMのプロセッサ(ソケット)数を変更する場合は、別の数値を入力してください。

  2. 次の例では、2つのデュアルコア仮想プロセッサを使用するようにVMを設定する方法を示しています(2つのソケットが使用されます):

    $VM=Get-VM -Name Ubuntu19

    $VMSpec=New-Object -Type VMware.Vim.VirtualMachineConfigSpec -Property @{ “NumCoresPerSocket” = 2

    $VM.ExtensionData.ReconfigVM_Task($VMSpec)

    $VM | Set-VM -NumCPU 2

    新しいCPU構成が仮想マシンに適用されると、その設定は仮想マシンのVMX構成ファイルに保存されます。この例では、 Ubuntu19.vmx データストア上のVMディレクトリにあるファイル(/vmfs/volumes/datastore2/Ubuntu19/)。新しいCPU構成の設定行は、VMXファイルの末尾に記載されています。

    numvcpus = “2”

    cpuid.coresPerSocket = “2”

  3. VMのプロセッサ(ソケット)数を減らす必要がある場合は、前述のコマンドと同じものを、数値を少なくして使用します。たとえば、VMのプロセッサ(ソケット)を1つに設定するには、次のコマンドを使用します:

    get-VM -name Ubuntu19 | set-VM -NumCpu 1

Power CLI を使用する最大の利点は、複数の仮想マシンを一括で設定できる点です。 タスクの自動化 設定する仮想マシンの数が多い場合は、これが重要です。VMware コマンドレットと Microsoft PowerShell の構文を使用してスクリプトを作成します。

結論

VMware vSphere で仮想ソケットおよびソケットあたりのコア数を設定することで、仮想マシンの CPU トポロジをゲスト OS にどのように提示するかを定義できます。これらの設定により、仮想マシンの構成が、インストールされた OS やアプリケーションの要件に確実に適合するようになります。VMware は、ソケットあたりのコア数を調整するための柔軟なオプションを提供しており、管理上の要件やライセンス要件に合わせて構成を調整することが可能です。仮想マシンの導入を計画する際には、vSphere が CPU トポロジをどのように公開するかを理解することが不可欠です。

Try NAKIVO Backup & Replication

Try NAKIVO Backup & Replication

Get a free trial to explore all the solution’s data protection capabilities. 15 days for free. Zero feature or capacity limitations. No credit card required.

People also read