すべて
VMの1つをWindows 2008 ServerからWindows 7(最終版)に移行してから、サーバーで問題が発生しました。4つのコアをVMに割り当てましたが、それらを見るために、それは2つのコアを持っていると思われるようです!
誰がここで何が起こっているのか教えてもらえますか? KVM=とWindows 7の間にはいくつかの非互換性があるのではないかと思いましたが、仮想プロセッサが表示されるため、私は考えていません...手がかりはありませんか?
次のスクリーンショットは、同じボックスに2つのコアのみを示しています。
プロセッサーが個別のソケットのシングルコアプロセッサーとして提供されているのではないかと思います。 Windows 7 Ultimateは最大2ソケットシステムをサポートするため、2プロセッサを使用します。
KVM=を構成して、プロセッサをシングルクアッドコアCPUまたは2デュアルコアCPUのいずれかとして提示できるかどうかはわかりません。これで問題が解決します。
Libvirt 0.8.3では、次のように入力した場合:
virsh capabilities | grep topology
ホストのトポロジが一覧表示されます。
<topology sockets='1' cores='4' threads='1'/>
数値は、ソケット、ソケットあたりのコア、およびコアあたりのスレッドを示します。この行をxmlファイルのcpuエントリに追加して、ウィンドウが4つのコアすべてを使用できるようにします。例:
<vcpu>4</vcpu>
<cpu>
<topology sockets='1' cores='4' threads='1'/>
</cpu>
Ubuntu 15.04以降、トポロジ設定はvirt-managerで完全にサポートされています。
Virt-manager> CPUs> Topologyから:
以下は、virt-managerの上記の設定から作成されます。 virsh editでこれらを入力する必要はありません。
<vcpu placement='static'>8</vcpu>
<cpu mode='Host-model'>
<model fallback='allow'/>
<topology sockets='2' cores='2' threads='2'/>
</cpu>
更新後、トポロジはWindowsによって認識されなくなり、仮想CPUが2ソケットに制限されます。
これを修正するには、「virsh edit」を使用してkvm機能を非表示にし、hyperv機能を追加します。完全にシャットダウンして再起動した後、ウィンドウVMは複数のCPUを再び認識します。
Windows 7 VM Linuxで実行している理由)KVMすべての仮想プロセッサを使用しないのはなぜですか?
<features>
<acpi/>
<apic/>
<hyperv>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
</hyperv>
<kvm>
<hidden state='on'/>
</kvm>
</features>
RHEL/CentOS 5.5(kvm> = 83-164.el5)では、kvmバイナリは「-smp N、cores = N」オプションもサポートします(パッケージにバックポートパッチがあります)。ただし、libvirtバージョンはドメインXMLの<topology>要素をサポートしていません。回避策は、適切なオプションを追加する/ usr/libexec/kvmのラッパースクリプトを作成し、デフォルトのパスの代わりに<emulator>要素でそのスクリプトを指定することです。
Ubuntu 10.4(Lucid)にはバージョン0.7.5のlibvirtがあり、バージョン0.7.6では トポロジーのサポート がlibvirtに追加されていることに注意してください。 Ubuntu 10.10(Maverick)には0.8.3のlibvirtがあるため、ラッパーなしでXMLのトポロジー仕様を直接サポートできるはずです。