web-dev-qa-db-fra.com

QEMU / KVM: impossible de transmettre plusieurs cœurs / processeurs aux invités

il semble que je ne puisse pas transmettre plusieurs cœurs/processeurs à KVM invités. Quoi que je fasse, les invités ne signalent qu’un seul processeur/noyau.

Matériel hôte: Xeon E5620 sur une carte mère Supermicro Logiciel hôte: Ubuntu 11.04 (Natty) 64 bits

J'ai compilé mon propre noyau 2.6.37 (plus récent) pour Natty (car j'ai eu certains problèmes avec le transfert PCI si j'utilisais le noyau standard). Je n'ai pas modifié les autres parties de la distribution; notamment, j'utilise le paquet qemu-kvm original qui était inclus.

Puisque virt-manager et les outils associés échouaient avec des messages d'erreur incompréhensibles lors de la première action élémentaire, je démarre les machines virtuelles à la main au lieu d'utiliser des gestionnaires/wrappers. J'utilise des commandes comme celle-ci:

/usr/bin/qemu-system-x86_64 -M pc -cpu Host -smp cores=2,threads=1,sockets=1 -drive file=/dev/sda6,if=virtio,cache=none,index=0 -drive file=/dev/sdb,if=virtio,cache=none,index=1 -cdrom /dev/cdrom -pidfile ./qemu-garak.pid -boot c -k de -m 4096 -smp 1 -device pci-assign,Host=01:05.0 -daemonize -usb -usbdevice "tablet" -name garak -net nic,vlan=0,model=virtio,macaddr=02:01:01:01:01:01 -net tap,vlan=0,ifname=virtnet1,script=/etc/qemu-ifup,downscript=/etc/qemu-ifup -vnc :1

J'ai aussi essayé -cpu Host et -smp cores = 1, threads = 1, sockets = 2 (entre autres).

J'exécute plusieurs invités Windows (Server 2003 R2 (32 bits), Server 2008 R2 (64 bits), Windows XP Pro (32 bits), Windows 7 Pro (64 bits)) et Linux (Ubuntu 11.10 (64 bits), Debian squeeze (32 bits)), mais tous ne signalent qu’un seul processeur/cœur, quels que soient les paramètres -smp; De plus, la configuration fonctionne de manière fiable.

Maintenant, j'ai vraiment besoin de plus de puissance de calcul de la part de l'un des invités, alors je me demande ce que je ne fais pas. Bien sûr, j'ai lu des articles sur la modification de la couche HAL dans Windows et j'ai essayé plusieurs solutions (Uniprocessor HAL ou Multiprocessor HAL), mais sans succès. Après avoir passé toute une journée à essayer de résoudre le problème, je ne sais plus ce que je pourrais faire de plus.

Est-ce que quelqu'un a une idée de ce qui ne va pas? Existe-t-il une option de compilation du noyau (2.6.37) qui pourrait être responsable de l’impossibilité de transmettre plusieurs cœurs aux invités? La version de qemu-kvm doit-elle être adaptée à la version du noyau (aucun message d'avertissement ne s'affiche lorsque je démarre les invités, comme indiqué ci-dessus)?

Merci beaucoup,

Binarus

Mise à jour # 1:

Comme prévu, un invité linux n'indique pas plus d'un processeur/noyau:

root@baldur:~# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 2400.400
cache size      : 4096 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up nopl pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm
bogomips        : 4800.80
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

root@baldur:~#

Cette sortie a été produite sur un invité avec a été démarrée avec -cpu Host et -smp 2.

5
Binarus

Eh bien, honte à moi:

Au milieu de la ligne de commande ci-dessus, il existe déjà une option "-smp 1". Je ne m'en souvenais pas et je ne l'avais pas vu lors de mes tests. Lorsque vous le retirez, cela fonctionne comme prévu.

8
Binarus