Estamos usando o Ubuntu 12.04 com os seguintes parâmetros:
- Dell R910
- Kernel 3.2.0-25-generic # 40-Ubuntu SMP x86_64 x86_64 x86_64 GNU / Linux
- kvm 1: 84 + dfsg-0ubuntu16 + 1.0 + noroms + 0ubuntu13
- qemu-kvm 1.0 + noroms-0ubuntu13
- qemu-common 1.0 + noroms-0ubuntu13
- qemu-kvm 1.0 + noroms-0ubuntu13
- 4 x CPU Intel (R) Xeon (E) E7- 4870 a 2,40GHz (cada um com 10 núcleos físicos, HT e Intel VT ativados)
- Os convidados do Windows atualmente não têm VirtIO, mas isso mudará em breve
Estamos executando vários convidados do Windows nesta máquina, um deles é o Windows 2003 32 bits, outro o Windows 2008 (64 bits). No momento, estamos lutando com problemas de desempenho e brincando com os modelos de CPU.
Normalmente usamos "qemu-system-x86_64 para nosso convidado de 32 bits do Windows, por exemplo:
/usr/bin/qemu-system-x86_64 -S -M pc-1.0 -cpu qemu32 -enable-kvm -m 4096 -smp 4,sockets=4,cores=1,threads=1 [...]
O desempenho deste hóspede acabou sendo um pouco baixo. Ainda não executamos nenhum benchmark, mas digamos que copiar grande quantidade de dados (arquivos) dentro da VM de um diretório para outro vá muito mais rápido quando trocamos o modelo de CPU de "-cpu qemu32" para "-cpu Nehalem " Os arquivos que demoravam cerca de 2: 40h para copiar agora são copiados em 40 minutos. É claro que este não é um teste de alta qualidade e há muito espaço para uma tentativa mais profissional. Mas este é um indicador claro de que a escolha do modelo de CPU correto pode afetar fortemente o desempenho do hóspede.
Agora fiquei curioso e corri:
qemu-x86_64 -cpu ?
x86 [n270]
x86 [athlon]
x86 [pentium3]
x86 [pentium2]
x86 [pentium]
x86 [486]
x86 [coreduo]
x86 [kvm32]
x86 [qemu32]
x86 [kvm64]
x86 [core2duo]
x86 [phenom]
x86 [qemu64]
E:
kvm -cpu ?model
x86 Opteron_G3 AMD Opteron 23xx (Gen 3 Class Opteron)
x86 Opteron_G2 AMD Opteron 22xx (Gen 2 Class Opteron)
x86 Opteron_G1 AMD Opteron 240 (Gen 1 Class Opteron)
x86 Nehalem Intel Core i7 9xx (Nehalem Class Core i7)
x86 Penryn Intel Core 2 Duo P9xxx (Penryn Class Core 2)
x86 Conroe Intel Celeron_4x0 (Conroe/Merom Class Core 2)
x86 [n270] Intel(R) Atom(TM) CPU N270 @ 1.60GHz
x86 [athlon] QEMU Virtual CPU version 1.0
x86 [pentium3]
x86 [pentium2]
x86 [pentium]
x86 [486]
x86 [coreduo] Genuine Intel(R) CPU T2600 @ 2.16GHz
x86 [kvm32] Common 32-bit KVM processor
x86 [qemu32] QEMU Virtual CPU version 1.0
x86 [kvm64] Common KVM processor
x86 [core2duo] Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
x86 [phenom] AMD Phenom(tm) 9550 Quad-Core Processor
x86 [qemu64] QEMU Virtual CPU version 1.0
Com todas essas versões diferentes, é um pouco difícil de adivinhar. "Nehalem" parece ser o mais bem sucedido nessa lista. Agora me pergunto, como saber qual modelo de CPU é o melhor para o meu convidado? Navegando na Internet, encontrei os seguintes recursos:
- http://rwmj.wordpress.com/2010/10/08/32-or-64-bit-virtual-cpu-in-kvm/
- http://www.linux-kvm.org/page/Tuning_KVM
Quando leio esses sites corretamente, eles alegam que o "-cpu host" pode trazer o melhor desempenho. Ainda não tenho nenhuma preocupação com a migração, pois os dois hosts KVM estão equipados igualmente (exatamente o mesmo hardware).
Então, o que os administradores experientes do KVM recomendam? Existe uma regra de ouro ou mesmo uma matriz, como "este modelo é o melhor para esse sistema operacional convidado"?
Peço desculpas se eu pudesse descobrir essas informações por conta própria - fiz várias pesquisas no Google e naveguei em muitos sites. Não consegui encontrar algo que responda à minha pergunta.