manipular garfo bomba em um ambiente virtualizado XenServer / “FreeBSD jails”

2

Estou acostumado a trabalhar com as cadeias do FreeBSD, mas eu queria experimentar o XenServer 5.5 / Vmware ESXI 5, na esperança de realmente limitar os recursos por VM, depois de instalar algumas máquinas virtuais, tentei executar em uma pequena VM (512RAM, 1 VCPU), (servidor tem 8GB de RAM 2 processadores) o seguinte código:

$ cat > fork.c    
#include <stdio.h> 
int main() { while(1) fork(); }
$ gcc fork.c -o bomb
$ ./bomb

Em um servidor FreeBSD sem virtualização (sem Xenserver / Vmware) esse código mata a máquina e uma reinicialização precisa ser feita, mas fiquei surpreso que no XenServer o comportamento é "quase" similar, causando alguns problemas. dano.

O XenServer começou a consumir toda a CPU disponível, e a outra VM do FreeBSD começou a ter um desempenho ruim.

Por outro lado, usando a última versão do Vmware Exi, a bomba só afetou a máquina virtual que disparou a bomba, a CPU para o servidor completo não começou a consumir todos os recursos, apenas cerca de 40% dela, em um ponto que me permite criar uma segunda VM e executar uma segunda bomba nela, sem perceber o desempenho no restante da VM. Tendo 2 bombas funcionando ao mesmo tempo, o uso total de CPU foi de 90%.

No meu caso, eu apenas uso o FreeBSD, mas ainda não descobri que evitar uma bomba que pode matar o servidor host, usando o XenServer não ajudou muito. Vmware parece promissor, mas está fora de questão por causa do custo.

Então, alguma idéia de como ajustar o Xenserver ou o Freebsd para lidar com as barras de garfo?

    
por nbari 16.09.2011 / 01:22

2 respostas

0

Limitar a VCPU ajudou, mas agora estou enfrentando outro problema:

como forçar a parada / exclusão de um VirtualMachine sob XenServer (possível bug)

Não consigo deletar / parar / reiniciar instâncias que contenham um Kernel personalizado do FreeBSD (opções xen), alguma coisa sobre como o XenServer quando inicializa esses kernels perde o controle da instância.

atualização

Isso resolveu o problema: rctl - exibe e atualiza limites de recursos banco de dados

    
por 17.09.2011 / 13:17
3

Você pode efetivamente impedir que garfos atinjam uma máquina física com limites de usuário. No FreeBSD, uma maneira de configurar isso é em /etc/login.conf , com o parâmetro maxproc .

Para mais informações, consulte a documentação aqui .

Editar: Se isso não for suficiente, você deve conseguir manter pelo menos o XenServer rodando com a limitação do tempo de CPU que qualquer VM pode obter. Veja as seções sobre VCPU params no documento Xen CLI aqui .

    
por 16.09.2011 / 03:36