QEMU / KVM: Não é possível passar vários núcleos / CPUs para convidados

5

parece que não consigo passar vários núcleos / CPUs para convidados KVM. Não importa o que eu faça, os convidados relatam apenas um processador / núcleo.

Hardware do host: Xeon E5620 em uma placa-mãe da Supermicro Software host: Ubuntu 11.04 (Natty) 64 bits

Eu compilei meu próprio (mais recente) kernel 2.6.37 para Natty (já que eu tinha certos problemas com a passagem PCI se eu usasse o kernel padrão). Não alterei as outras partes da distribuição; notavelmente, estou usando o pacote qemu-kvm original que foi incluído.

Como o virt-manager e as ferramentas relacionadas estavam falhando com mensagens de erro ininteligíveis ao tentar a primeira ação básica, estou iniciando as máquinas virtuais à mão em vez de usar quaisquer wrappers / gerenciadores. Estou usando comandos como este:

/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

Eu também tentei -cpu host e -smp núcleos = 1, threads = 1, sockets = 2 (entre outras coisas).

Estou executando vários convidados do Windows (Server 2003 R2 (32 bits), Server 2008 R2 (64 bits), Windows XP Pro (32 bits), Windows 7 Pro (64 bits)) e convidados Linux (Ubuntu 11.10 (64 Bit), Debian squeeze (32 bits)), mas todos eles relatam apenas um processador / núcleo, independentemente das configurações -smp; Além disso, a configuração funciona de forma confiável.

Agora, eu realmente preciso de mais poder de CPU em um dos convidados, então estou me perguntando o que estou fazendo de errado. Claro, eu li sobre como alterar o HAL dentro do Windows e tentei várias coisas (Uniprocessor HAL versus Multiprocessador HAL), mas sem sucesso. Depois de ter passado um dia inteiro tentando resolver o problema, agora não sei mais o que fazer.

Alguém tem ideia do que está errado? Existe alguma opção de compilação do kernel (2.6.37) que pode ser responsável por não conseguir passar vários núcleos para os convidados? A versão qemu-kvm precisa caber na versão do kernel (não há mensagens de aviso quando inicio os convidados como mostrado acima)?

Muito obrigado,

Binarus

Atualização # 1:

Como esperado, um convidado do Linux também não mostra mais de uma CPU / núcleo:

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:~#

Esta saída foi produzida em um guest com foi iniciada com -cpu host e -smp 2.

    
por Binarus 29.01.2012 / 10:32

1 resposta

7

Bem, então, me envergonhe:

No meio da linha de comando acima, já existe uma opção "-smp 1". Eu não me lembrava disso e não o vi durante meus testes. Ao removê-lo, funciona como esperado.

    
por Binarus 07.02.2012 / 19:24

Tags