As VMs do Linux em VMware / ESX devem ter uma partição de swap?

16

Em uma configuração do VMware ESX, qual é a diferença dessas opções?:

  • uma VM Linux com 1 GB de RAM e 1 GB de partição de swap e a VM usa 1,5 GB de RAM
  • uma VM Linux com 1 GB de RAM e nenhuma partição de troca e a VM usa 1,5 GB de RAM

Quero dizer, em ambos os casos, o swap está sendo usado;

  • na primeira troca é feita para a partição swap do linux
  • no segundo caso, o VMware trocará 512 MB pelo conjunto de armazenamento do VMware.

Então, há algum ponto em dar uma partição de swap para o Linux VM?

    
por Sandra 18.01.2012 / 17:01

6 respostas

13

Ignorando o fato de que as pessoas estão lidando com razões específicas do sistema operacional, tenho dois motivos pelos quais é uma má idéia não executar com uma partição / arquivo de troca.

  1. Se você tiver 1,5 GB de RAM alocada a uma VM sem espaço / partição de espaço e quiser usar 1,5 GB + 1 MB, ela relatará um erro de falta de memória. Com o espaço de troca, ele poderá trocar dados da memória ativa para o disco.
  2. O sistema operacional convidado faz um trabalho muito melhor de gerenciamento de memória do que o host. É por isso que a tecnologia como o ballooning de memória existe porque o Host pode fazer suposições sobre o que a memória não é necessária agora, mas o convidado sabe em um nível muito mais inteligente (isso impede que a memória do sistema operacional seja destruída).
por 18.01.2012 / 19:53
8

Sim. É o jeito Unix.

Unix (mesmo Linux) espera que possa trocar.
Coisas ruins acontecem quando o sistema não pode trocar (porque foi configurado incorretamente sem uma partição swap ou porque o espaço swap está cheio). No Linux, uma dessas coisas ruins é o Out of Memory Killer, que vai mergulhar uma faca na parte de trás do programa que ele acredita estar usando mais memória RAM (os servidores de banco de dados são o alvo favorito).

    
por 18.01.2012 / 17:27
4

Para que você tem /proc/sys/vm/overcommit_memory definido? Da documentação do kernel:

0       -       Heuristic overcommit handling. Obvious overcommits of
                address space are refused. Used for a typical system. It
                ensures a seriously wild allocation fails while allowing
                overcommit to reduce swap usage.  root is allowed to
                allocate slightly more memory in this mode. This is the
                default.

1       -       Always overcommit. Appropriate for some scientific
                applications.

2       -       Don't overcommit. The total address space commit
                for the system is not permitted to exceed swap + a
                configurable percentage (default is 50) of physical RAM.
                Depending on the percentage you use, in most situations
                this means a process will not be killed while accessing
                pages but will receive errors on memory allocation as
                appropriate.

Assim, se você estiver usando 1, não há diferença. Se você estiver usando 2 e nenhum arquivo de troca do Linux, nenhum processo será capaz de alocar 512M de memória (virtual). O resultado não está claro para 0.

Editar: De link é assim que 0 funciona:

Heuristic overcommit attempts to work out how much memory the system could give you if it reclaimed all the memory it could and no other process used more RAM than it currently is; if you are asking for more than this, your allocation is refused. In specific, the theoretical 'free memory' number is calculated by adding up free swap space, free RAM (less 1/32nd if you are not root), and all space used by the unified buffer cache and kernel data that is labeled as reclaimable (less some reserved pages).

Por isso, também usa swap no cálculo. Em geral, eu seguiria a recomendação do RHEL de:

M = Amount of RAM in GB, and S = Amount of swap in GB, then
If M < 2
    S = M *2
Else
    S = M + 2
    
por 18.01.2012 / 17:21
3

As partições de swap podem ser potencialmente mais rápidas, especialmente em situações em que o disco raiz está quase cheio e você não pode criar um arquivo de swap em uma peça sem fragmentação, sem falar na sobrecarga que pode ser criada pelo sistema de arquivos e, se aplicável coisas como LVM.

Mas o desempenho de ambas as máquinas será ruim se você mantiver 33% dos requisitos de memória no disco.

    
por 18.01.2012 / 17:08
0

Por favor, veja o seguinte link- link

Basicamente, a menos que você precise de hibernação ou usar mais memória do que está alocando para a VM, não há vantagem significativa em uma partição de troca.

Eu não usei uma partição / arquivo de swap em nenhuma das minhas máquinas linux por anos.

    
por 18.01.2012 / 17:10
0

A vantagem óbvia da troca é que, quando a sua máquina falha, você ainda pode criar um despejo de memória. Corrija-me se estiver errado, mas isso não é possível sem swap. Isso não é específico do VMWare, é claro, mas se aplica em qualquer lugar. Eu senti que seria importante ressaltar.

    
por 18.01.2012 / 17:26