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.
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.
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.