O VirtualBox está usando mais processadores do que os alocados

1

Eu tenho um VirtualBox Windows VM configurado para usar 3 de 4 processadores (veja screenshot), mas quando meu computador congelou (veja descrição abaixo) recentemente, eu usei top e descobri que o processo do VirtualBox estava usando 400% do minha CPU.

Isso não significa que foram necessários todos os 4 dos meus processadores? Como isso é possível? Como posso evitar que o VirtualBox leve toda a minha CPU?

EDITAR

Por "congelar", quero dizer que se tornou quase não responsivo. Eu poderia fazer o cursor se mover com um grande atraso (leia-se: mova o mouse um pouco e espere 45 segundos), mas não notei nenhuma outra interação. Eu pressionei Ctrl + Alt + F1 para chegar a um console, depois executei o topo, mas ambas as operações ocorreram em um atraso significativo. Outras ações do teclado, como Alt + F2 , não produziram nenhum efeito (ou nada antes de deixar de esperar).

    
por JellicleCat 26.03.2015 / 15:27

1 resposta

1

Essa alocação é o número de CPUs do GUEST não o número de CPUs HOST que podem ser usadas. Enquanto eles são frequentemente muito semelhantes, o VirtualBox tenta usar o mínimo de CPU possível, eles não são os mesmos. O Virtualbox, e qualquer outro software de VM, precisará usar uma parte de sua CPU hospedeira para emular os outros dispositivos. (como a placa de vídeo)

O fato de o mouse ter ficado "pegajoso" também indica que o VB está usando vários threads para manter essas emulações em ordem. Se estivesse usando apenas quatro, o kernel ainda estaria dando uma boa participação à sua GUI.

De acordo com isso, sugiro que você esteja usando a ferramenta errada para limitar a quantidade de CPU que o VirtualBox usa. Você não está realmente interessado no convidado usando 3 ou 4 núcleos, você está mais interessado em suas outras tarefas, recebendo uma parte justa do processador.

O recurso de kernel do Linux que eu sugiro que você pesquise é chamado de cgroups que permite classificar processos em grupos e garantir que esses grupos pegam apenas a CPU que você permite. Desta forma, o kernel pode ser configurado para dar ao VirtualBox todos os 400% da CPU, se a sua GUI não precisar, mas dar prioridade absoluta a todo o resto (digamos) dois desses processadores quando tiverem algo a fazer.

    
por 26.03.2015 / 19:41