Qual o tamanho da partição swap?

10

por alguns anos, eu li que é uma boa idéia criar uma partição de swap com o espaço duplo da minha RAM. ainda se aplica hoje? ou isso não é mais necessário?

Eu tenho um servidor com 8 GiB de RAM e preciso criar uma partição de swap e queria saber se 16 GiB eram demais.

cd1
fonte

Respostas:

11

Em sistemas grandes, 8 GB de RAM física, geralmente alocamos 2 GB de swap. Estes são servidores de banco de dados carregados executando o Oracle ou PostgreSQL. Durante anos, nunca vi troca atingida, mesmo sob carga pesada. A carga pesada é de aproximadamente 100 a 150 usuários, fazendo cerca de 10.000 leituras de SQL e talvez 2.500 gravações por minuto.

Também ajustamos o nível de permuta para desencorajar a troca e desativamos processos desnecessários que sabemos que não precisamos ser executados. (Compilações personalizadas do Linux)

Como Eddie, diz acima, 1x RAM física é uma boa regra para qualquer coisa com menos de 4 GB. Faço compilações personalizadas do Linux para uma empresa grande da Fortune-500 e essas são as coisas que normalmente fazemos e não tivemos nenhum problema nos últimos cinco anos que eu os consultava.

Em sistemas maiores: Linux de 64 bits com 32 GB e 64 GB de RAM, esses são nossos servidores de banco de dados Oracle e, normalmente, mantemos 2 GB de troca por coisas como Eddie aponta acima - os processos inativos serão movidos para troca, dependendo das configurações de troca.

Quilo
fonte
5

Uma pergunta aparentemente atemporal. As pessoas boas do SlashDot discutiram isso há um tempo atrás. Confira o que eles tinham a dizer:

  • O espaço em disco não é um problema com os HDDs modernos, 16 GB ainda é uma quantidade trivial para os drives de TB modernos.
  • No entanto, um espaço de troca significativo pode ser um problema no caso de um gerenciamento de memória ruim:

Se eu assistir a um filme de 4 GB por um período de 2 horas, muitos gerenciadores de memória decidirão que tentar armazenar todos esses dados em cache pode ser uma coisa boa. No meio do filme, ele pensará que todos os outros programas em execução não foram utilizados por uma hora e podem ser trocados com segurança em favor do armazenamento em cache desse arquivo de 4 GB. O resultado final é que metade dos seus programas é trocada depois de assistir a um filme, resultando em um sistema lento que está destruindo todo o arquivo de troca.

  • No final, a decisão certa deve vir dos requisitos de memória, não das fórmulas de estimativa:

Se você tiver [RAM suficiente para executar os programas que deseja usar diariamente], não há razão para usar o swap.

KPWINC
fonte
3

Veja a resposta Quanto espaço SWAP em um sistema de memória alta? para obter algumas orientações, embora sua pergunta seja mais geral. As opiniões variam muito sobre isso, mas geralmente as pessoas com 1 GiB de RAM ou mais parecem rodar sem troca totalmente ou com 1xmemória como troca.

Mesmo se você não planeja usar tanta RAM que forçará a troca, há algum valor em ter pelo menos 1xmemória como troca: permite que o sistema operacional troque algumas coisas que não se espera que sejam usadas imediatamente, para que possa usar essa memória para buffers de disco ou E / S, por exemplo.

Eddie
fonte
3

Se você espera que seu sistema seja capaz de hibernar e reinicie com êxito :-), provavelmente é melhor alocar mais espaço para a partição de swap do que a quantidade de RAM física

dmityugov
fonte
3

Meu provedor de VPS nem sequer fornece espaço de troca para os servidores, e o meu está funcionando bem sem ele.

A maioria dos servidores que vejo diariamente no trabalho também são sem troca.

Editar

No entanto - se você estiver executando uma JVM, fazer certeza que você tem pelo menos tanto espaço de troca como você vai sempre definida -Xmxpor causa de um conhecido problema com a JVM.

Em resumo, quando a JVM precisa de mais memória do que está usando atualmente (mas ainda não atingiu a sua Xmx), ela:

  • troca-se para o disco
  • aloca nova memória
  • lê-se novamente na RAM

Isso significa que, se você trocar for menor que o seu Xmx, poderá falhar.

Para citar o relatório de erro

A melhor coisa a fazer é aumentar o tamanho da troca nas máquinas que encontrarem esse erro.

Eu tento jogar com segurança ao trabalhar com JVMs e definir swap como memória física igual.

Warren
fonte
2

Dada a velocidade das modernas unidades de disco rígido, grandes trocas são apenas um convite para debater. Talvez os SSDs invertam essa tendência, mas com talvez a velocidade máxima de transferência de 300 MB / s para um disco, a troca de 2 a 4 GB demorará um bom tempo.

Antigamente (por exemplo: Linux 1.2, i386, SunOS 4.x), talvez você tivesse de 5 a 15 MB de processos de daemon em execução e de 4 a 32 MB de RAM e, portanto, daemons que estavam bloqueados esperando por I / O poderia ser trocado sem nenhum impacto real no desempenho ... E seria melhor, já que os programas do usuário podem ter apenas 2-3 MB de RAM disponível. A troca fazia muito sentido.

Agora, no meu ambiente, a maioria dos servidores possui cargas de trabalho pesadas de memória única e a RAM pode ser estimada com bastante precisão ... A troca existe para emergências, processos de fuga e assim por diante.

A exceção é para laptops e estações de trabalho que podem dormir. Muitos sistemas operacionais usarão a área de troca para salvar a imagem de suspensão e, nesses casos, a troca deverá ser maior que a memória física. No Linux com suspend2 / tuxonice, você deve ter 2xRAM no tamanho de troca para suportar a suspensão em disco.

Alexandre Carmel-Veilleux
fonte
Antigamente, o System V 3.2 e versões anteriores usavam exatamente o tamanho da troca de RAM. Menos foi quebrado e mais foi desperdiçado, já que não era um sistema de memória virtual tão sofisticado quanto o BSD.
kmarsh
2

Hoje em dia, se você estiver executando um servidor de 32 GB ou 64 GB, a troca de 4 GB pelo padrão é uma quantia segura. Qualquer coisa maior que isso é um exagero com a quantidade de RAM física disponível.

Edward_178118
fonte
1

Idealmente, você não utilizará a troca, e a coisa com 2x RAM é realmente algo que sobrou dos últimos anos.

Se você está preocupado com isso, eu faria algo como:

Max Memory Requirement - Physical Ram = Swap

Eu acho que 16 GB parece muito grande, pessoalmente.

WerkkreW
fonte
1

Antigamente, você queria o máximo que conseguia: o consumo de memória nos modernos * nix kernels é coisa do passado. O velho ditado era "2x a sua memória". Entre 2 GB ou a quantidade de espaço que a máquina tem em memória RAM hoje em dia, você chegará perto de onde você precisa estar.

XTZ
fonte
1

A troca também é usada para armazenar despejos após o pânico do kernel. Se você estiver interessado em analisar esses dumps e não tiver especificado outro destino de dump, sua troca deve ser pelo menos tão grande quanto sua RAM.

Benoit
fonte
0

Não existe um algoritmo único que informa quanto de troca você precisa. Na prática, você precisa colocar seu sistema na maior carga que planeja oferecer suporte e descobrir a quantidade de recursos que ele realmente usa. Defina seu arquivo de troca de acordo.

Para RAM física, você deve colocar seu sistema sob a carga real de "cruzeiro" que espera manipular e comprar de acordo. Para sistemas de baixa latência, você não deve trocar totalmente dentro de sua carga de cruzeiro (isso não é o mesmo que não ter troca alocada ou mesmo em uso). , mas em geral você deve ter o mínimo de troca possível.

Obviamente, você pode trocar o desempenho por um preço mais baixo.

Christopher
fonte