Alle
Ich hatte ein Problem auf meinem Server, seit ich eine meiner VMs von Windows 2008 Server auf Windows 7 (ultimativ) migriert habe: Obwohl ich der VM vier Kerne zugewiesen habe und sie sogar zu sehen scheint, scheint es, als ob es so wäre hat zwei Kerne!
Kann mir jemand sagen, was hier los ist? Ich dachte, es könnte eine Inkompatibilität zwischen KVM und Windows 7 gewesen sein, aber da es die virtuellen Prozessoren sieht, beginne ich nicht zu denken ... irgendwelche Hinweise?
Hier ist ein Screenshot des Prozessmanagers, der nur zwei Kerne auf derselben Box zeigt:
Antworten:
Ich vermute, dass die Prozessoren als Single-Core-Prozessoren in separaten Sockeln präsentiert werden. Windows 7 Ultimate unterstützt bis zu 2 Socket-Systeme, sodass 2 Prozessoren verwendet werden.
Ich weiß nicht, ob Sie KVM so konfigurieren können, dass die Prozessoren entweder als einzelne Quad-Core-CPU oder als zwei Dual-Core-CPUs dargestellt werden. Dies sollte das Problem beheben.
quelle
Auf libvirt 0.8.3, wenn Sie Folgendes eingeben:
Es wird die Topologie des Hosts aufgelistet:
Die Zahlen beziehen sich auf Sockets, Cores pro Socket und Threads pro Core. Fügen Sie diese Zeile zum Eintrag cpu in der XML-Datei hinzu, damit Windows alle 4 Kerne verwenden kann. Beispiel:
quelle
<topology sockets='1' cores='4' threads='1'/>
meiner XML hinzugefügt .virsh capabilities | grep topology
zeigt<topology sockets='1' cores='6' threads='2'/>
. KRITISCH: Es wurde einkill -HUP nnnnn
Wobei nnnnn die PID meines libvirtd-Prozesses ist. Startete die VM. Es funktionierte. +1! Vielen Dank! ... Aber vergessen Sie nicht, libvirtd entweder mit einem HUP-Signal oder einem Neustart zu treten!Topologieeinstellungen werden in virt-manager seit Ubuntu 15.04 vollständig unterstützt.
Von virt-manager> CPUs> Topologie:
Das Folgende wird aus den obigen Einstellungen in virt-manager erstellt. Sie müssen diese nicht mit virsh edit eingeben.
Die Topologie wird nach einem Update nicht mehr von Windows erkannt und die virtuellen CPUs werden wieder auf 2 Sockel begrenzt.
Um dies zu beheben, verwenden Sie "virsh edit", um die kvm-Funktion auszublenden und Hyperv-Funktionen hinzuzufügen. Nach einem vollständigen Herunterfahren und Neustart erkennt die Windows-VM wieder mehrere CPUs.
Warum verwendet meine Windows 7-VM, die unter Linux KVM ausgeführt wird, nicht alle virtuellen Prozessoren?
quelle
In RHEL / CentOS 5.5 (kvm> = 83-164.el5) unterstützt die kvm-Binärdatei auch die Option "-smp N, cores = N" (das Paket enthält Backport-Patches). Die libvirt-Version unterstützt jedoch nicht das <topology> -Element in der Domain-XML. Eine Problemumgehung besteht darin, ein Wrapper-Skript für / usr / libexec / kvm zu erstellen, das die entsprechende Option hinzufügt und dieses Skript im <emulator> -Element anstelle des Standardpfads angibt.
quelle
Es ist erwähnenswert, dass Ubuntu 10.4 (Lucid) die Version 0.7.5 von libvirt hat, während die Unterstützung für die Topologie in Version 0.7.6 zu libvirt hinzugefügt wurde. Ubuntu 10.10 (Maverick) hat 0.8.3 libvirt und sollte daher in der Lage sein, die Topologie-Spezifikation im XML ohne Wrapper direkt zu unterstützen.
quelle