すべて
VMの1つをWindows 2008 ServerからWindows 7(究極)に移行したため、サーバーで問題が発生しました。 2つのコアがあります!
誰がここで何が起こっているのか教えてもらえますか?KVMとWindows 7の間に非互換性があるのではないかと思っていましたが、仮想プロセッサが表示されるので、私はそうは思わないようになりました...手がかりはありませんか?
同じボックスに2つのコアのみを表示するプロセスマネージャーのスクリーンショットを次に示します。
すべて
VMの1つをWindows 2008 ServerからWindows 7(究極)に移行したため、サーバーで問題が発生しました。 2つのコアがあります!
誰がここで何が起こっているのか教えてもらえますか?KVMとWindows 7の間に非互換性があるのではないかと思っていましたが、仮想プロセッサが表示されるので、私はそうは思わないようになりました...手がかりはありませんか?
同じボックスに2つのコアのみを表示するプロセスマネージャーのスクリーンショットを次に示します。
回答:
プロセッサは、別々のソケットのシングルコアプロセッサとして提供されていると思われます。Windows 7 Ultimateは最大2つのソケットシステムをサポートするため、2つのプロセッサを使用します。
プロセッサをシングルクアッドコアCPUまたは2つのデュアルコアCPUとして提示するようにKVMを構成できるかどうかはわかりませんが、これにより問題が解決するはずです。
libvirt 0.8.3では、次のように入力すると:
virsh capabilities | grep topology
ホストのトポロジーをリストします:
<topology sockets='1' cores='4' threads='1'/>
番号は、ソケット、ソケットごとのコア、およびコアごとのスレッドを示します。この行をxmlファイルのcpuエントリに追加して、Windowsが4つのコアすべてを使用できるようにします。例:
<vcpu>4</vcpu>
<cpu>
<topology sockets='1' cores='4' threads='1'/>
</cpu>
<topology sockets='1' cores='4' threads='1'/>
私のxmlに追加されました。virsh capabilities | grep topology
ショー<topology sockets='1' cores='6' threads='2'/>
。kill -HUP nnnnn
重要:nnnnnはlibvirtdプロセスのPIDです。VMを開始しました。動いた。+1!ありがとう!...しかし、HUPシグナルまたは再起動でlibvirtdをキックすることを忘れないでください!
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機能を追加します。完全にシャットダウンして再起動すると、Windows VMは再び複数のCPUを認識します。
LinuxのKVMで実行されているWindows 7 VMがすべての仮想プロセッサを使用しないのはなぜですか?
<features>
<acpi/>
<apic/>
<hyperv>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
</hyperv>
<kvm>
<hidden state='on'/>
</kvm>
</features>
Ubuntu 10.4(Lucid)にはバージョン0.7.5のlibvirtがありますが、トポロジーのサポートがバージョン0.7.6でlibvirt に追加されたことは注目に値します。Ubuntu 10.10(Maverick)には0.8.3 libvirtがあるため、ラッパーなしでXMLのトポロジ仕様を直接サポートできるはずです。