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.
Respostas:
É bem simples mesmo. Para clusters homogêneos e configurações de host único, use a
host
opção Para clusters mistos, use a versão mais baixa da CPU disponível; portanto, se um host for Penryn e o outro Nehalem, use Penryn nos dois.Se você estiver usando RHEV ou oVirt, isso já está incorporado. O VMWare chama isso de "EVC" e o posiciona como um grande recurso.
Voltando ao desempenho, você definitivamente precisa do virtio em qualquer lugar que possa colocá-lo. E se você ainda tiver gargalos de desempenho, eles geralmente podem ser abordados caso a caso, dependendo de onde eles ocorrem.
[offtop] Na sua escolha de distribuição, eu já comentei em outro tópico [/ offtop]
fonte
Não perca mais tempo ajustando algo.
Instale os drivers do virtIO e volte. A diferença é tão grande que qualquer aprimoramento que você encontrar agora não terá significado com o virtIO.
Apenas um exemplo em um de nossos servidores:
- sem o virtIO, um W2k3 pode lidar com cerca de 10 usuários do Terminal Server
- com o virtIO, a mesma máquina com o mesmo sistema operacional atualmente gerencia de 120 a 125 usuários com um pouco de lentidão. E adicionamos outra máquina virtual para executar o SQL Server no mesmo computador físico
fonte
O Qemu não funciona da mesma maneira que muitos outros hipervisores. Para iniciantes, ele pode fornecer emulação completa. Isso significa que você pode executar o código x86 em um processador ARM, por exemplo. Quando no modo KVM, enquanto você o usa, ele realmente não faz isso ... o processador é exposto, não importa o que aconteça, mas o que é relatado ao sistema operacional será alterado pelo
-cpu
sinalizador.Se você deseja velocidades mais rápidas, é um ponto de partida para tentar combinar os recursos do processador virtual com o seu processador real da melhor maneira possível. Isso reduzirá os casos em que os opcodes subótimos são chamados para executar tarefas e também reduzirá os opcodes que não são possíveis no seu hardware ser traduzido para outra coisa primeiro. Desde que seu modelo de processador Xeon foi lançado no início de 2011, provavelmente é compatível principalmente com a série Core i7. Por isso, eu diria que a arquitetura Nehalem é sua melhor emulação.
Citando um de seus links ( Tuning KVM ):
Portanto, se você sentir que pode acabar movendo as coisas o suficiente para criar um problema, poderá encontrar todos os conjuntos de instruções suportados que você acha que qualquer processador que você tem agora ou pode ter no futuro suporta e listá-los.
Na maioria das vezes, porém, você deseja se manter
-cpu host
. Especificar uma CPU com menos sinalizadores disponíveis significa que os aplicativos evitarão o uso de recursos que possam torná-los mais rápidos.fonte
Você está confundindo a opção '-cpu host'. Essa opção NÃO habilita apenas todos os recursos da CPU específicos do seu sistema host, habilita TODOS os recursos que sua CPU suporta e tudo o que pode ser emulado, mesmo que sua CPU não os suporte.
-cpu host
é uma boa opção, mas não a mais eficiente, pois pode ativar opções que podem ser emuladas que sua cpu não oferece suporte, o sistema convidado pode ficar um pouco mais lento a qualquer momento que tentar usar um desses recursos que precisam ser emulados .
Fonte: http://wiki.qemu.org/Features/CPUModels
fonte
O CentOS 6.7 fornece um desempenho KVM + Spice adequado no Dell R910. Eu acho que depois que você tentar, você não voltará para mais nada (sério)!
fonte