VMware vSphere におけるソケットごとの CPU コア数の設定方法:ベストプラクティス
新しい仮想マシンのプロセッサ設定を行う際には、いくつかの重要な概念を理解しておくことが重要です。これには、ソケットあたりのCPUコア数の算出方法や、この設定が仮想マシンのパフォーマンスに与える影響などが含まれます。また、コア数の多いプロセッサを少数使用する場合と、コア数の少ないプロセッサを多数使用する場合とでは、どのような違いが生じるかを理解することも不可欠です。これらの関係を明確に把握することで、ワークロードやホストの性能に見合った構成を選択できるようになります。
これらの概念や、ESXiホスト上の仮想マシンにおけるCPU構成の基本原則について、以下で詳しく解説します。
用語集
まず、CPU設定を行う際に知っておくべき用語の定義から始めましょう。 仮想マシン その仕組みを理解していただくために。
CPU (中央処理装置、マイクロプロセッサチップ、またはプロセッサ)は、コンピュータの主要な構成要素です。これは、ソケットに接続されたトランジスタを備えた電子回路です。CPUは、命令を実行して計算を行い、アプリケーションを動作させ、タスクを完了させます。プロセッサのクロック速度が発熱の限界に近づいたため、メーカーはプロセッサのアーキテクチャを変更し、複数のCPUコアを搭載したプロセッサの生産を開始しました。物理プロセッサと論理プロセッサ、あるいはプロセッサコアの混同を避けるため、一部のベンダーは物理プロセッサを”ソケット”と呼んでいます。
CPUソケット マザーボード上にあり、1つの物理CPUが接続される物理的なコネクタです。マザーボードには、少なくとも1つのCPUソケットが搭載されています。サーバー用マザーボードには通常、複数のマルチコアプロセッサに対応する複数のCPUソケットが搭載されています。CPUソケットは、プロセッサのシリーズごとに標準化されています。IntelとAMDは、それぞれのプロセッサファミリーごとに異なるCPUソケットを採用しています。
CPUコア L1キャッシュを内蔵したプロセッサの一部です。他のコアや、コア間で共有される”大型”プロセッサの外部コンポーネントと相互作用することなく、独立して演算処理を行います。基本的に、コアとは、ソケットに接続されたメインプロセッサに組み込まれた小型のプロセッサと見なすことができます。マルチコアプロセッサを合理的に活用するためには、アプリケーションが並列演算に対応している必要があります。
ハイパースレッディング これは、単一のプロセッサコアを搭載したプロセッサ上で並列演算を可能にするために、インテルが開発した技術です。ハイパースレッディングは、2002年にデスクトップコンピュータ向けに位置づけられた”Pentium 4 HT”プロセッサの発売とともに登場しました。オペレーティングシステムは、ハイパースレッディング機能を備えたシングルコアプロセッサを、2つの論理コア(物理コアではない)を持つプロセッサとして認識します。 同様に、ハイパースレッディング機能を備えた4コアプロセッサは、OSからは8コアのプロセッサとして認識されます。各コアで実行されるスレッド数が多いほど、より多くのタスクを並列処理できます。最新のインテル製プロセッサは、マルチコアとハイパースレッディングの両方を備えています。通常、この機能はデフォルトで有効になっており、BIOSで有効または無効に設定できます。AMDの”Simultaneous Multi-Threading(SMT)”は、AMDプロセッサにおけるハイパースレッディングに相当する技術です。
vCPU 1つ VMの仮想ハードウェア設定において、仮想デバイスとして構成される仮想プロセッサです。複数のCPUコアを使用することができます。vCPUは仮想ソケットに接続されます。
CPUのオーバーコミット 物理ホスト上に存在する仮想マシン(VM)に対して、そのホストで利用可能な論理プロセッサの総数よりも多くの論理プロセッサ(CPUコア)を割り当てた場合に発生します。
NUMA (Non-Uniform Memory Access) は、マルチプロセッサコンピュータで使用されるメモリ設計です。その考え方は、各プロセッサに個別のメモリを割り当てるというものです(すべてのプロセッサがバスを介して共有メモリにアクセスする UMA とは異なります)。同時に、プロセッサは共有バスを使用することで、他のプロセッサに属するメモリにアクセスすることも可能です(すべてのプロセッサがコンピュータ上のすべてのメモリにアクセスできます)。 マルチプロセッサコンピュータにおいて、CPUは自身のローカルメモリに、他のメモリよりも高速にアクセスできるという性能上の利点がある。

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

NUMAノードとは、CPUソケットとそれに最も近いメモリモジュールで構成されるCPU/メモリの組み合わせのことです。NUMAは通常、BIOSにおいて”ノードインターリーブ”または”インターリーブメモリ”の設定として構成されます。
仮想NUMA(vNUMA) これは、VMware仮想マシンにおけるNUMAに相当するものです。vNUMAは、複数の物理NUMAノードのハードウェアリソースを消費して、最適なパフォーマンスを実現します。vNUMAテクノロジーは、NUMAトポロジーをゲストOSに公開します。その結果、ゲストOSは基盤となるNUMAトポロジーを認識できるようになります。vNUMAを使用するには、VMの仮想ハードウェアバージョンが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 数です。
“の”ソケットあたりのコア数”(” )という値はvNUMAの有効化を制御するものではありませんが、vCPU数が多大な大規模な仮想マシンで最適なパフォーマンスを実現するためには、ホストの物理NUMAノードトポロジに合わせてこの設定を手動で構成することが、依然としてベストプラクティスです。
コア数の算出
サーバー上の物理CPUコア数、論理CPUコア数、およびその他のパラメータを算出する方法を見ていきましょう。
- 物理CPUコアの総数 ホストマシン上での値は、次の式で計算されます:
(プロセッサソケット数) × (プロセッサあたりのコア数) = 物理プロセッサコア数
注記: プロセッサが搭載されているプロセッサソケットのみを考慮する必要があります。
- ハイパースレッディングがサポートされている場合、次のように計算できます。 論理プロセッサコアの数 次の式を用いて:
(物理プロセッサコアの数) × (2スレッド/物理プロセッサ) = 論理プロセッサの数
- 最後に、この式を使って以下を計算してください。 利用可能なプロセッサリソース VMに割り当て可能なもの:
(CPUソケット数) × (CPUコア数) × (スレッド数)
たとえば、2つのプロセッサを搭載し、各プロセッサが4コアでハイパースレッディングに対応しているサーバーがある場合、VMに割り当て可能な論理プロセッサの総数は次のようになります:
2(CPU)× 4(コア)× 2(HT)= 16 論理プロセッサ
1つの論理プロセッサは、VMに対して単一のプロセッサまたは単一のCPUコアとして割り当てることができます。
仮想マシンについては、ハードウェアエミュレーション機能により、その構成において複数のプロセッサやCPUコアを使用することができます。1つの物理CPUコアは、仮想CPUとして、あるいは仮想マシンの仮想CPUコアとして設定することができます。
- クロックサイクルの総数 VMで利用可能な容量は、次のように計算されます:
(論理ソケット数)×(CPUのクロック速度)
たとえば、クロック速度が 3.0 GHz の物理プロセッサがある場合、VM を 2 つの vCPU(各 2 コア)を使用するように設定すると、合計クロック速度は 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の技術的な設計やOSのライセンス上の制約によって生じることがあります。なお、ソケット単位やCPUコア単位でライセンスされるオペレーティングシステムもあることに注意してください(例えば、 Windows Server 2019 または Windows Server 2025)。
一部のオペレーティングシステムにおけるCPU(CPUソケット)の対応制限:
- Windows 10 Pro – 2 CPU
- Windows 10 Home – 1 CPU
- Windows 10 ワークステーション – CPU 4基
- 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 ソケット数や CPU コア数の違いによる顕著な違いに気づかないかもしれませんが、これらは VM のパフォーマンスに影響を与える可能性があります。いくつかの構成機能について留意してください。VM に複数の仮想プロセッサ(ソケット)を設定して最適なパフォーマンスを実現することを検討する際は、NUMA および vNUMA を念頭に置いてください。
vNUMAが自動的に設定されない場合は、物理サーバーのNUMAトポロジーを反映させてください。以下は、VMware vSphere 6.5以降(vSphere 8.0および9.0を含む)の仮想マシンに関する推奨事項です。
- VM の論理プロセッサ(vCPU)の数を定義する際は、”ソケットあたりのコア数”の設定を選択してください。ESXi サーバー上の単一の NUMA ノードにある CPU コア数を超えるまで、この操作を繰り返します。物理 ESXi サーバーの単一の NUMA ノードで利用可能なメモリ容量を超えるまで、同様の手順を繰り返してください。
- VMの構成において、論理プロセッサの数が単一のNUMAノード上の物理CPUコア数を超えたり、RAMの容量が単一のNUMAノードで利用可能なメモリの合計量を超えたりする場合があります。最適なパフォーマンスを得るためには、論理プロセッサ(vCPU)の数を、必要な最小限のNUMAノード数に分割することを検討してください。
- CPUの数またはメモリ容量がCPUコア数を超える場合は、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 コア数(ソケットあたりのコア数)を定義します。以下の表は、必要な構成を選択する際の参考になります。

VMに8つ以上の論理プロセッサを割り当てる必要がある場合でも、その仕組みは変わりません。論理CPUの数を計算するには、 vSphere Client、ソケット数にコア数を掛けます。たとえば、各ソケットに 2 つの CPU コアを備えた 2 プロセッサのソケットを使用するように VM を構成する場合、論理 CPU の総数は 2 × 2 = 4 となります。つまり、この構成を適用するには、vSphere Client の VM の仮想ハードウェアオプションで 4 つの CPU を選択する必要があります。
vSphere Client での CPU あたりのコア数の設定
ここでは、VMware vSphere Client で仮想マシンの CPU オプションを設定する方法について説明します。設定手順は、vSphere 6.x、7.0、8.0、9.0 のいずれでも同じです。
- お使いのIPアドレスを入力してください vCenter Server Webブラウザで、VMware vSphere Clientを開きます。
- ナビゲーターで、以下を開きます。 ホストとクラスタ, 設定したい仮想マシンを選択します。CPUの設定を変更するには、その仮想マシンが電源オフの状態であることを確認してください。
- VMを右クリックし、次に以下を選択します。 設定を編集 コンテキストメニューから、仮想マシンの設定を開きます。
- を展開する CPU のセクション 仮想ハードウェア のタブ 設定を編集 ウィンドウ。
- CPU. CPU の文字列にあるドロップダウンメニューをクリックし、この VM に必要な論理プロセッサの総数を選択します。この例では、Ubuntu VM 用に 4 つの論理プロセッサを選択します(ブログ-Ubuntu1).
- ソケットあたりのコア数. この文字列で、ドロップダウンメニューをクリックし、各仮想ソケット(プロセッサ)に必要なコア数を選択してください。
- CPUのホットプラグ. この機能を使用するには、 CPUのホットアドを有効にする チェックボックス。制限事項と要件を忘れないでください。

- 予約. ESXiホストまたはクラスター上の仮想マシンに対して、CPUクロック速度(周波数、MHzまたはGHz)の保証最低割り当てを選択します。
- 上限. VMプロセッサの最大CPUクロック速度を選択します。この周波数は、たとえそのVMがESXiホストまたはクラスタ上で実行されている唯一のVMであり、利用可能なプロセッサリソースに余裕があったとしても、仮想マシンの最大周波数となります。 設定された制限は、VMのすべての仮想プロセッサに適用されます。たとえば、2つのシングルコアプロセッサを搭載したVMで、制限が1000 MHzに設定されている場合、両方の仮想プロセッサは合計で100万サイクル/秒(各コアあたり500 MHz)のクロック速度で動作します。
- 株式. このパラメータは、ESXiホストまたはリソースプール上の仮想マシンによるリソース消費の優先度(低、標準、高、カスタム)を定義します。これとは異なり、 予約 そして 上限 パラメータ、その 株式 このパラメータは、ESXiホスト、リソースプール、またはDRSクラスタ内でCPUリソースが不足している場合にのみ、VMに適用されます。
この機能で利用可能なオプションは、 株式 パラメータ:
- 低 – 仮想プロセッサ1つにつき500株
- 通常 – 仮想プロセッサ1つにつき1000シェア
- 高い – 仮想プロセッサ1つにつき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の設定を開くと、仮想プロセッサの基本設定を編集できます。
- クリック VM > 設定, を選択して ハードウェア タブをクリックして プロセッサ.
- 仮想プロセッサ(ソケット)の数と、プロセッサあたりのコア数を選択してください。
次のスクリーンショットでは、先ほどvSphere Clientで設定したのと同じUbuntu VMのプロセッサ構成を確認できます。
プロセッサコアの総数(ESXiホストまたはクラスタ上の物理プロセッサの論理コア数)は自動的に計算され、以下に表示されます。これに対し、vSphere Clientのインターフェースでは、プロセッサコアの総数(“CPU”オプション)を設定し、プロセッサあたりのコア数を選択すると、仮想ソケット数が計算されて表示されます。

PowerCLI での VM プロセッサの設定
VMware vSphere のコンポーネントの設定にコマンドラインインターフェースを使用したい場合は、次のコマンドを使用してください。 Power CLI VMのCPU設定を編集するには。VMのCPU設定を編集する方法を見てみましょう(Ubuntu 19) Power CLI で。電源がオフになっている仮想マシンには、これらのコマンドを使用してください。
- 2つのシングルコア仮想プロセッサ(2つの仮想ソケット)を使用するようにVMを設定するには、次のコマンドを実行します。
get-VM -name Ubuntu19 | set-VM -NumCpu 2VMのプロセッサ(ソケット)数を別の数に設定したい場合は、別の数値を入力してください。
- 次の例では、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”
- VMのプロセッサ(ソケット)の数を減らす必要がある場合は、前述のコマンドと同じものを、数値を少なくして使用してください。たとえば、VMのプロセッサ(ソケット)を1つに設定するには、次のコマンドを使用します。
get-VM -name Ubuntu19 | set-VM -NumCpu 1
Power CLI を使用する主な利点は、複数の仮想マシンを一括で構成できることです。 タスクの自動化 構成する仮想マシンの数が多い場合には重要です。VMware コマンドレットと Microsoft PowerShell の構文を使用してスクリプトを作成してください。
結論
VMware vSphere で仮想ソケットおよびソケットあたりのコア数を設定することで、仮想マシンの CPU トポロジをゲスト OS にどのように提示するかを定義できます。これらの設定により、仮想マシンの構成が、インストールされた OS やアプリケーションの要件に確実に適合するようになります。VMware は、ソケットあたりのコア数を調整するための柔軟なオプションを提供しており、管理上の要件やライセンスの要件に合わせて構成を調整することが可能です。仮想マシンの導入を計画する際には、vSphere が CPU トポロジをどのように公開するかを理解することが不可欠です。