仮想マシンに適切なvCPUとコア数を選択する方法

仮想マシン (VM) にすべての vCPU を適切に認識させるのは、特に Windows がコアを意図したとおりに認識していない場合は、少し奇妙な場合があります。たとえば、KVM VM に 8 個の vCPU を割り当てても、Windows が 2 個のコアまたはプロセッサしか検出しないことがあります。なぜそうなるのかはわかりませんが、一部のセットアップでは、ライセンス、アーキテクチャの制限、または構成の設定方法が原因である可能性があります。この情報は、パフォーマンスを最大化しようとしている場合や、割り当てたコア数よりも少ないコア数を認識するためにアプリの動作が遅くなり始めた場合に役立ちます。重要なのは、Windows がハイパーバイザーで実際に構成されている方法でコアを認識するようにすることです。これにより、ワークロードを適切に分割し、ボトルネックを回避できます。実際には、1 つのセットアップでは CPU 構成を微調整すると正常に動作しますが、別のセットアップではそれほど動作しません。もちろん、Windows は必要以上に難しく設定しなければならない場合があります。でもご心配なく、この問題を解決する方法はいくつかあります。主にVMの設定を変更し、vCPUの数を物理プロセッサのアーキテクチャと一致させることです。Windowsがすべてのコアを正しく認識できるようにするための修正方法をいくつかご紹介します。

Windows 10 VMが2コアしか認識しない問題を修正する方法

方法1: KVMでVM CPUトポロジを調整する

Windows が 2 コアしか表示していないのに、実際には 2 コア以上割り当てている場合、これは間違いなく役立ちます。これは、VM が Windows に仮想 CPU をどのように提示するかを一致させることです。複数の vCPU を割り当てると、ハイパーバイザーはプロセッサのトポロジ(ソケット数、コア数、スレッド数)をエミュレートできます。Windows はこれに基づいて、認識内容を把握します。つまり、例えば、単に 8 個の vCPU を割り当てるのではなく、1 ソケット(ソケットあたり 4 コア、コアあたり 2 スレッド)として提示するように指示します。次のスニペットをご覧ください。

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

これにより、Windows は 4 つのコア(それぞれ 2 つのスレッド)を持つ単一のプロセッサを認識するようになり、コア検出の問題が解決されることがよくあります。これを行うには、VM をシャットダウンし、XML 構成を編集します。

  • 実行し# virsh dumpxml <your-vm-name>て現在の構成を確認します。
  • 編集方法# virsh edit <your-vm-name>
  • <features> ブロックの末尾を見つけて、上記に示した <cpu> トポロジ ブロックを挿入します。
  • 保存して VM を再起動します。

Windowsが起動したら、タスクマネージャーを確認すると、割り当てられたすべてのコアまたはvCPUがトポロジーに従って適切にマッピングされているはずです。実のところ、この方法はVMのCPU構成をWindowsが理解しやすい形で提示するのに役立ちます。場合によっては、異なるホストや構成において、Windowsがアクセスできるコアの数を誤認しないために、これが鍵となることもあります。

方法 2: vSphere で VM の CPU 設定を調整する (VMware の場合)

VMWareをお使いの場合は、GUIだけでほぼ同じことができます。VMの電源をオフにし、設定を開いてCPUセクションに移動します。ここで、ソケットあたりのコア数を調整できます。例えば、ソケットが2つでソケットあたり4コアに設定すると、Windowsは4コアずつ搭載された2ソケットシステムを明確に認識します。設定を保存してVMを起動し、Windowsがすべてのコアを認識しているかどうかを確認します。基本的に、これらの調整は、Windowsが仮想CPUトポロジを誤って解釈して動作が遅くなったり、CPUが十分に活用されなくなったりするのを防ぐのに役立ちます。

これがなぜ重要なのか、そして何を期待できるのか

これはパフォーマンスに直接影響します。特にアプリやサービスがCPUを大量に消費する場合です。これらの調整を行うと、Windowsはすべてのコアを検出し、アプリはタスクをより均等に分散できるようになります。経験上、構成変更後に再起動や再スキャンが必要になる場合もありますが、ほとんどの場合、VM XMLまたはGUI設定を編集するだけで問題なく動作します。それでもWindowsでコアが2つしか表示されない場合は、VMの生の構成を再確認するか、トポロジ情報を再度割り当ててみてください。最初の設定ではうまくいかない場合があります。

まとめ

Windows がすべての vCPU を実際のコアまたはプロセッサとして認識するようにするのは必ずしも簡単ではありませんが、VM 構成で CPU トポロジを微調整することで、ほとんどの問題を解決できます。これは、ハイパーバイザーが提供する機能と Windows の解釈方法の間で一種の駆け引きのようなもので、場合によっては生の構成ファイルや VM 設定にアクセスする必要があることもあります。正直なところ、トポロジをいじって VM 設定が物理アーキテクチャと一致していることを確認することで、多くの手間が省け、パフォーマンスも向上します。少しでも効果があれば、努力は報われたと言えるでしょう。この情報が、誰かの VM をスムーズに動作させ、すべてのコアがカウントされるようになる助けになれば幸いです。

まとめ

  • コア/スレッド情報を使用して VM CPU トポロジを変更します。
  • VM XML 構成またはハイパーバイザー GUI を確認してください。
  • 仮想 CPU プレゼンテーションを物理 CPU アーキテクチャに一致させます。
  • 調整後、Windows はすべてのコアを適切に認識するはずです。

最後に

これで仮想CPUの設定が少し楽になれば幸いです。こうした簡単なトポロジの変更だけで、Windowsが割り当てられたリソースをすべて活用する上で大きな違いが生まれます。私の場合はうまくいきました。他の人にもうまくいくことを願っています。