仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

仮想マシンのvCPU数とコア数の選び方|Windowsが全vCPUを認識しない原因と解決策

VMware、KVM、Hyper-Vなどのハイパーバイザーで仮想マシンを作成する際、ゲストOSに割り当てた仮想プロセッサ(vCPU)がすべて認識されないケースがあります。本記事では、KVM上の仮想マシンに8つのvCPUを割り当て、ゲストOSとしてWindows 10をインストールしたところ、WindowsがこれらのvCPUを個別のプロセッサ(ソケット)として認識し、実際に使用できたのはわずか2つだけだった事例をもとに、その原因と解決策を詳しく解説します。

Windows 10仮想マシンが2コアしか使えない現象

デバイスマネージャーを開くと、割り当てられた8つのコアすべてが「QEMU Virtual CPU version 2.5+」という名前の独立した仮想プロセッサとして表示されていることが確認できます。

仮想マシンのvCPU数とコア数の選び方|Windowsが全vCPUを認識しない原因と解決策

一方、システムのプロパティ(コンピューター→プロパティ)やタスクマネージャーを確認すると、利用可能なQEMU仮想プロセッサは2つしか表示されていません。

仮想マシンのvCPU数とコア数の選び方|Windowsが全vCPUを認識しない原因と解決策

つまり、Windows 10ではいくらvCPUを追加しても、実際に使用できるのは2コアまでということです。同じハイパーバイザー上で稼働しているWindows Server 2016の仮想サーバーでは、割り当てられた16個すべてのvCPUを問題なく認識できるのに、です。

Windowsがサポートするプロセッサ(ソケット)数の上限

この問題の原因は、デスクトップ向けWindows(Windows 10/8.1/7)には、コンピューターが使用できる物理プロセッサ(ソケット)数の最大値に制限があることにあります。

  • Windows 10 Home – 最大1 CPU
  • Windows 10 Professional – 最大2 CPU
  • Windows 10 Pro for Workstations – 最大4 CPU
  • Windows Server 2016 – 最大64 CPU

ただし、この制限はコア数には関係ありません。仮想マシンのパフォーマンスを向上させたい場合は、1ソケットあたりのコア数を増やすことで対応できます。多くのハイパーバイザーは、vCPUを「プロセッサ(ソケット)」「プロセッサコア」「スレッド」として提示することが可能です。つまり、8つのvCPUを別々のソケットとして割り当てる代わりに、「2ソケット×各4コア」という構成に変更できるのです。以下では、主要なハイパーバイザーで仮想プロセッサをコアとして割り当てる方法と、最新CPUで採用されているNUMAアーキテクチャとの関連について説明します。

KVMにおける仮想コアとvCPUの管理

筆者の環境にあるWindows 10を搭載したKVM仮想マシンでは、割り当てられたすべての仮想コアが独立したプロセッサとして認識されていました。

仮想マシンに割り当てたCPUリソースをフルに活用するには、8つのvCPUではなく、「8コアのプロセッサ1つ」「4コア×2ソケット」あるいは「4コア×2スレッドの1ソケット」として認識させる必要があります。ここから、KVM仮想マシンの仮想コア構成を変更してみましょう。

まず、仮想マシンをシャットダウンします:

# virsh shutdown w10testvm

w10testvmは対象の仮想マシン名に置き換えてください。なお、virshを使ったKVM仮想マシンのコンソールからの管理方法については、関連記事も併せて参照してください。

現在のKVM仮想マシンのXML構成を表示します:

# virsh dumpxml w10testvm

CPU設定を記述しているブロックを探します:

<vcpu placement='static'>8</vcpu>
<cputune>
<shares>1000</shares>
</cputune>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type>
<bootmenu enable='yes'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>

ご覧のとおり、ここでは8つのvCPUが設定されています。次のコマンドで構成を編集します:

# virsh edit w10testvm

</features>の後に、以下のブロックを追加します:

<cpu mode='host-passthrough' check='none'>
<topology sockets='1' cores='4' threads='2'/>
</cpu>

各パラメーターの意味は次のとおりです:

  • host-passthrough: クラスターノードの物理CPUを仮想マシンにそのまま見せるエミュレーションモード
  • sockets='1': ソケット(vCPU)数が1つであることを示す
  • cores='4': 1ソケットあたり4コアを持つ
  • threads='2': 各コアが2スレッドを持つ

構成ファイルを保存して仮想マシンを起動します。Windows 10ゲストにログインし、タスクマネージャーやリソースモニターを開いて、割り当てたすべての仮想コアが認識されていることを確認しましょう。

仮想マシンのvCPU数とコア数の選び方|Windowsが全vCPUを認識しない原因と解決策

システムのプロパティには、仮想CPUの代わりにホストの物理プロセッサであるIntel(R) Xeon(R) Silver 4114 CPUが表示されるようになります。

仮想マシンのvCPU数とコア数の選び方|Windowsが全vCPUを認識しない原因と解決策

これにより、2コアではアプリケーションが正常に動作しなかった高負荷時の問題を解消できました。

VMware仮想マシンでのソケットあたりコア数の設定

VMware仮想マシンのvCPUの提示方法は、vSphere Clientの画面から簡単に変更できます。

  1. 仮想マシンをシャットダウンし、設定画面を開きます。
  2. CPUセクションを展開します。
  3. ゲストOSが「2プロセッサ×各4コア」として認識されるように構成を変更します。[ソケットごとのコア数(Cores per Socket)]の値を4に設定してください。これにより、ゲストOSは「2ソケット×各4コア」の構成として認識します。仮想マシンのvCPU数とコア数の選び方|Windowsが全vCPUを認識しない原因と解決策
  4. 変更を保存し、仮想マシンを起動します。

仮想マシンのvCPUとNUMAアーキテクチャ

vCPUとコアを仮想マシンに割り当てる際には、理解しておくべき重要なポイントが他にもあります。

ソケットあたりのコア数を設定するときは、物理CPUがNUMAアーキテクチャ(最近のCPUのほとんどが採用)を採用しているかどうかを考慮してください。仮想マシンに対して、物理的な1ソケット(NUMAノード)が持つコア数を超えるコア数(およびvCPU総数)を割り当てることは推奨されません。仮想マシンが単一の物理NUMAノード上に配置されれば、そのノードが持つ高速なローカルメモリを利用できます。逆に複数のNUMAノードにまたがると、プロセスは別ノードからの応答を待つ必要があり、応答時間が長くなります。

仮想マシンに2つの独立した仮想ソケットを割り当てると、ハイパーバイザーはそれらを異なるNUMAノード上で実行する可能性があります。これは仮想マシンのパフォーマンスに悪影響を及ぼします。

必要なvCPU数が1つの物理ソケット(NUMAノード)のコア数を超える場合は、必要なコア数を持つ複数の仮想ソケットを作成してください。また、奇数のプロセッサ数は避け、1 vCPUを追加して偶数にすることをお勧めします。

こうすることで、仮想マシンのパフォーマンスを維持できます。

仮想マシンのvCPU数とコア数の選び方|Windowsが全vCPUを認識しない原因と解決策

例として、1ソケットあたり10コアの2ソケット構成ホスト(ハイパースレッディング込みで合計40 vCPUが利用可能)で仮想マシン用のvCPUを構成する場合、以下のような設定が推奨されます:

必要なvCPU数 VM設定での仮想ソケット数 VM設定での1仮想プロセッサあたりのコア数
111
……
10110
11非最適
1226
……
20210

なお、無償版のESXiでは、8 vCPUを超える仮想マシンを作成できない点に注意してください。

具体例を挙げると、Microsoft SQL Server 2016 Enterprise Editionを稼働させる16 vCPUの仮想マシンの場合、「8ソケット×各2コア」という構成よりも「2ソケット×各8コア」の構成の方が高いパフォーマンスを発揮します。
また、一部のアプリケーション(旧バージョンのSQL Serverなど)は、物理ソケット数に基づいてライセンスされる点にも注意が必要です。コア数の少ない複数プロセッサより、マルチコアの単一プロセッサの方がライセンス面で有利になることもあります。

さらに、最近のWindows Serverは仮想環境において特別なライセンス方式が採用されており、VMware vSphereにおけるプロセッサライセンスにも特有の考慮点があります。

  1. Microsoft Storeについに「Mozilla Firefox」が登場 ― Windows 10/11で正式配信開始

    Windows 10およびWindows 11向けのMicrosoft Storeに、大手Webブラウザとして初めて「Mozilla Firefox」が登場しました。これにより、Windowsユーザーは人気ブラウザをより簡単に検索・ダウンロードできるようになります。Firefoxの参入は、近年DiscordやEpic Games Storeなど著名アプリが相次いでストアに追加された流れを受けたものです。 独自エンジンの使用を認めた新ポリシーが鍵 近年、Mozilla FirefoxはGoogle ChromeをはじめとするChromiumベースのブラウザに対してシェアを落としてきました。それで

  2. Windows PC 向けベスト 10 仮想マシン ソフトウェア (2022)

    コンピューターで一度に 1 つのソフトウェアしか実行できないとしたらどうなるか想像してみてください。メールをチェックしたい場合は、現在のプログラムをオフにする必要があります。インターネットにアクセスしたい場合は、Word 文書または現在作業中の他のアプリを閉じる必要があります。かなり難しそうですよね? 一度に多数のアプリケーションを実行できることは「当然」と考えていますが、一度に複数のオペレーティング システムを実行することはほとんど考えていません。ありがたいことに、ベスト仮想化ソフトウェア (2021) 単一のマシンで複数の OS を並行して使用する作業が容易になります。 1 台の物理マ