KVM e mapeamento de CPU virtual para físico

7

Sou relativamente atrasado para a festa virtualistion, então você terá que me perdoar se isso parecer uma pergunta óbvia.

Se eu tiver um servidor com 12 núcleos disponíveis, cada convidado do KVM terá acesso a todos os 12 núcleos? Eu entendo que o KVM faz uso do escalonador do Linux, mas é aí que meu entendimento de "o que acontece a seguir" termina.

Meu motivo para perguntar é que as 10 ou mais tarefas distintas que pretendemos executar nos convidados do KVM (para fins de isolamento para facilitar as atualizações) não utilizarão um único núcleo 100% do tempo, então, nessa base, Parece um desperdício ter que alocar 1 CPU virtual para cada convidado - ficaremos sem núcleos desde o início com um servidor "completo" ocioso para mostrar isso.

Em outras palavras, assumindo minha descrição acima, 1 CPU virtual realmente equivale a 12 núcleos físicos em termos de poder de processamento? Ou não é assim que funciona?

Muito obrigado

Steve

    
por Steve 20.09.2011 / 09:56

3 respostas

4

Uma CPU virtual equivale a 1 núcleo físico, mas quando sua VM tenta processar algo, ela pode ser executada em qualquer um dos núcleos que estiverem disponíveis no momento. O agendador lida com isso e a VM não está ciente disso. Você pode atribuir várias vCPUs a uma VM, o que permite que ela seja executada simultaneamente em vários núcleos.

Núcleos são compartilhados entre todas as VMs, conforme necessário, para que você possa ter um sistema de 4 núcleos e 10 VMs em execução com 2 vCPUs atribuídas a cada um. As VMs compartilham todos os núcleos em seu sistema com bastante eficiência, conforme determinado pelo agendador. Esse é um dos principais benefícios da virtualização - aproveitar ao máximo os recursos sub-inscritos para alimentar várias instâncias do sistema operacional.

Se suas VMs estão tão ocupadas que precisam lidar com o tempo de CPU, o resultado é que as VMs podem ter que esperar pelo tempo de CPU. Novamente, isso é transparente para a VM e tratado pelo agendador.

Não estou familiarizado com o KVM, mas todos os itens acima são um comportamento genérico para a maioria dos sistemas de virtualização.

    
por 20.09.2011 / 10:04
2

uma CPU virtual é um encadeamento no processo qemu-kvm. O qemu-kvm é naturalmente multithreaded. A menos que você fixe processos a CPUs específicas, o planejador do sistema alocará o tempo de CPU dos encadeamentos dos núcleos disponíveis, ou seja, qualquer vCPU pode acabar recebendo ciclos de CPU de qualquer núcleo físico, a menos que seja especificamente fixado em núcleo (s) específico / p>     

por 21.09.2011 / 11:51
0

Recomendarei verificar em qual vCPU você atribui a VM que eles oferecem o melhor desempenho para você. Também está em conformidade com sua carga de trabalho, ou seja, CPU ligada ou I / O, em seguida, há muita ferramenta de benchmarking livre disponível para verificar o seu desempenho, como Apache bechmark para IO bound operation e John the Ripper para CPU ligado operação. Uma vez que você esteja em conformidade com qual atribuição de vCPU sua VM oferece melhor desempenho, poderá distribuir ou configurar outra VM. Por causa do impacto negativo no desempenho, não tomamos conta da vCPU.

Por exemplo, se você tiver um host com 4 núcleos e desejar executar uma VM e atribuir uma vCPU a ela, seu desempenho será o menor, pois eles usarão apenas um núcleo dos 4 núcleos e o restante 3 núcleos não será utilizado ao mesmo tempo. Porque o Monitor de Máquina Virtual (VMM) ou o hipervisor não está ciente do carregamento interno da VM. Você obterá o throughput máximo se atribuir 4 vcpu, nesse caso, todo o núcleo do host será usado ao mesmo tempo se sua carga de trabalho for multiencadeada. Novamente, se você aumentar mais um núcleo, ou seja, a alocação excessiva de vCPU mais que 4 disponíveis, poderá obter degradação de desempenho. É bom que você tenha mais VM virtual e você se preocupe se uma das VMs for migrar para outro servidor ou desligamento, e ainda assim todo o núcleo será utilizado, caso contrário, será ruim se não configurar a sobreposição.

    
por 10.12.2016 / 00:37