Alocando espaço de troca com KVM

Alocando espaço de troca com KVM

Considere o seguinte cenário: um host com 2 GiB executa alguns convidados usando KVM. Cada convidado geralmente não precisa de muita memória; eles recebem 256 MiB cada e executam serviços que geralmente mexem com os polegares. No entanto, ocasionalmente os convidados precisam de mais memória. No momento, cada convidado tem pouca RAM, mas seu próprio espaço de troca. Percebi que uma pequena parte do swap é usada. Nunca tive problemas com essa configuração, mas só por curiosidade:

Qual é a estratégia ideal de alocação de swap?

  1. Atribua a cada convidado seu próprio espaço de troca em seus respectivos discos e atribua aos convidados apenas pouca memória do host. (Isso é o que estou fazendo agora.)
  2. Atribua ao host uma quantidade maior de espaço de troca e nenhum aos convidados, e atribua mais memória aos convidados.

O balão de memória ajudaria a melhorar o desempenho da memória?

Responder1

"Ocasionalmente, os hóspedes precisam de mais memória" parece uma boa aplicação decomprometimento excessivo da memória. A idéia é atribuir a cada convidado uma grande quantidade de memória (mais do que você pode realmente distribuir), porque eles geralmente não a usam. Então você faz as contas para garantir que tenha espaço de troca suficiente para que os convidados possam realmente trocar para o disco no pior cenário, onde todos eles realmentefazeruse toda essa memória.

O espaço de troca vai para ohospedarmáquina, e ela precisa obedecer

espaço de troca de host = soma de toda a memória do convidado + espaço de troca de host recomendado

para que seja seguro.

Portanto, se você tiver 10 convidados e 2 GiB de RAM, poderá experimentar algo como

  • 512 MiB de RAM por convidado (512 * 10 = 5120 MiB no total)
  • Troca de 2 GiB no host

Significa que seu espaço de troca de host deve ser de pelo menos 512 * 10 + 2048 = 7168 MiB para lidar com isso com segurança, supondo que você possa dedicar 2 GiB de troca ao host (para aquela pouca memória de host, isso é recomendado).

Sempre teste esses tipos de configurações primeiro para ter certeza de que sua máquina pode lidar com elas. Compará-los é ainda melhor e permitirá que você experimente diferentes carregamentos e escolha aquele que funciona melhor.

Responder2

@ndt tem um bom procedimento. Meu cenário é diferente, então adoto um método diferente.

Meu servidor tem muitos convidados, todos eles executam um único aplicativo, geralmente servidor web/mail/arquivos. Os dados contidos nele são muito importantes, portanto, backups e instantâneos são feitos com frequência. Portanto, quanto menor e mais simples for a imagem do disco, melhor. Então, na verdade, não crio uma partição swap, mas um arquivo swap. Como não tenho convidados com alta necessidade de processamento ou mesmo de memória, eles possuem um pequeno armazenamento em disco e pouca memória. O arquivo de troca fica dentro do rootfs.

Esta configuração economiza muito espaço e simplifica a manutenção. Como eu disse, é diferente de outras situações.

Responder3

A resposta aceita está errada:

Você também deve habilitar o espaço de troca na VM, para que esteja ciente de que a RAM está sendo trocada e evite usá-la para cache de disco e buffers de E/S.

Se você ativar a troca apenas no host, a VM acreditará que tem RAM real disponível e a utilizará, enquanto ela será trocada no host, criando gargalos e congelamentos desnecessários. Este é o maior erro que você pode cometer.

Você também deve usar uma unidade virtual diferente como disco de troca, já que não deseja fazer snapshot/backup dela junto com suas outras unidades de dados.

Como o espaço de troca pode ser volátil, você também pode usar cache=unsafe ou usar zram/zswap para melhor desempenho.

Lembre-se também de que a troca é boa, pois libera RAM inativa que pode ser reutilizada posteriormente para cache de disco e buffers de E/S.

informação relacionada