Quanto espaço SWAP em um sistema de 2-4 GB?


53

Como devo decidir qual tamanho fazer minha troca em uma nova máquina Linux (Debian) com 2-4 GB de RAM? Eu realmente preciso de espaço de troca?


3
2-4 GB não são mais memória alta 5 anos depois.
fifi finance

@KasperSouren Não, não é. Era uma quantia justa na época.
C. Ross

Respostas:


54

Existem várias maneiras de descobrir o quanto de troca é usado em uma máquina. As sugestões comuns usam fórmulas baseadas em RAM, como 2 x RAM, 1,5 x RAM, 1 x RAM, 0,75 x RAM e 0,5 x RAM. Muitas vezes, as fórmulas variam de acordo com a quantidade de RAM (portanto, uma caixa com 1 GB de RAM pode usar 2 x permuta de RAM (2 GB), enquanto uma caixa com 16 GB de RAM pode usar 0,5 x permuta de RAM (8 GB).

Outra coisa a considerar é para que a caixa será usada. Se você tiver um grande número de processos em execução simultânea em execução na caixa, mas um número significativo deles permanecerá ocioso por períodos de tempo, a adição de troca extra faz sentido. Se você estiver executando um pequeno número de processos críticos, a adição de troca extra faz sentido (isso pode parecer contra-intuitivo, mas vou explicar em um minuto). Se você estiver executando uma caixa como área de trabalho, a adição de troca extra faz sentido.

Quanto a se você deve incluir swap, sim, você deve. Você sempre deve incluir espaço de troca, a menos que realmente saiba o que está fazendo e tenha realmente uma boa razão para isso.

Veja, da maneira como o kernel do Linux funciona, o swap não é usado apenas quando você esgotar toda a memória física. O kernel do Linux pega aplicativos que não estão ativos (em suspensão) e, após um período de tempo, move o aplicativo para trocar da memória real. O resultado é que, quando você precisar desse aplicativo, haverá um atraso momentâneo (geralmente apenas um ou dois segundos) enquanto a memória do aplicativo é lida novamente da troca para a RAM. E isso geralmente é uma coisa boa.

Isso permite colocar os aplicativos inativos em "suspensão", dando aos aplicativos ativos acesso a RAM adicional. Além disso, o Linux usará qualquer RAM disponível (não alocada) em uma máquina como cache de disco, tornando a maioria das atividades (lentas) do disco mais rápidas e mais responsivas. A troca de processos inativos oferece mais cache de disco e torna sua máquina mais rápida em geral.

Por fim, convenhamos, o espaço em disco é barato. Muito barato. Não há realmente nenhuma boa razão para não roubar um pedaço (relativamente) pequeno de espaço para troca. Se eu estivesse executando com 2 GB - 4 GB de RAM em uma máquina, provavelmente configuraria meu espaço de troca para ser pelo menos igual à RAM. Se tivesse menos de 2 GB de RAM, ainda assim eu usaria pelo menos 2 GB de troca.

ATUALIZAÇÃO: Como um excelente comentário mencionado (e eu esqueci de incluir), se você estiver executando um laptop ou uma área de trabalho que queira colocar no modo 'hibernar' (Suspender para disco), sempre desejará pelo menos trocar como você tem memória. O espaço de troca será usado para armazenar o conteúdo da RAM no computador enquanto ele 'dorme'.


22
Ótima resposta, mas você esqueceu apenas uma coisa. Se for um desktop ou laptop, verifique se a troca é pelo menos tão grande quanto a RAM que você possui para poder hibernar o computador. Isso economiza a RAM para trocar.
Sander Marechal

4
Ótimo post. Sander me venceu com a única coisa que eu acrescentaria. Apesar de um item adicional, se você tiver várias unidades, colocar sua troca em uma unidade que não possua o restante de seus sistemas de arquivos ativos pode melhorar o desempenho, pois não terá tantos conflitos.
23909 GreenKiwi

como descobri no verão passado, é necessário ter um espaço de troca substancial se você estiver executando o Java
warren

Se o usuário tiver uma quantidade de RAM muito maior que a quantidade que ele realmente usará (16 GB / 32 GB) em um computador desktop com 100% de tempo de atividade (sem hibernação), você ainda sugere que os processos sejam solicitados ao SWAP? Parece-me que haveria benefícios em deixar tudo na RAM, a menos que você estivesse próximo da capacidade.
usar o seguinte código

11
@earthmeLon - eu sugeriria ainda ter um pouco de troca. Atualmente, como os discos são grandes e baratos, a perda de alguns GB de espaço em disco para troca é insignificante. Ter algum espaço de troca oferece uma apólice de seguro, caso algo consuma mais RAM do que você espera.
22612 Christopher Cashell


12

Resposta tardia, e acho que isso foi abordado na resposta selecionada, mas há algumas informações boas e facilmente digeríveis na resposta fornecida por @ssapkota aqui (copie / cole abaixo).

Aqui está uma recomendação muito boa da RedHat: Espaço recomendado para troca do sistema

Um trecho do mesmo link:

Nos últimos anos, a quantidade recomendada de espaço de troca aumentou linearmente com a quantidade de RAM no sistema. Porém, como a quantidade de memória nos sistemas modernos aumentou para centenas de gigabytes, agora é reconhecido que a quantidade de espaço de troca necessária para um sistema é uma função da carga de trabalho de memória em execução nesse sistema. No entanto, como o espaço de troca geralmente é designado no momento da instalação e pode ser difícil determinar antecipadamente a carga de trabalho da memória de um sistema , recomendamos determinar a troca do sistema usando a tabela a seguir.

Tabela atual (em dezembro de 2012):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

Tabela original:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 

8

Depende bastante do que você está fazendo com isso. Com a carga de trabalho apropriada, você não precisa de nenhum espaço de troca, tenha 16 MB ou 16384 MB de RAM; na verdade, a maioria dos dispositivos Linux embarcados é executada sem nenhum (o que eles trocariam?)

Considerando os preços da RAM, você provavelmente não usará swap para computação ativa. Então, o que resta?

  1. Nas áreas de trabalho, o espaço de troca é usado para a suspensão em disco. Esse espaço de troca precisa ter cerca de 1 × RAM, dependendo de quão bem o conteúdo da memória é compactado.
  2. Permitir que tarefas inativas sejam removidas da RAM para liberar mais espaço para o cache do disco
  3. O mesmo, mas para permitir que processos ativos o usem em vez de heap / stack

(2) e (3) dependem fortemente da carga de trabalho. Nos meus desktops, posso usar facilmente 4 GB + em (2), deixando vims, xterms etc. em execução em outros desktops.

Na maioria dos servidores que eu corro, quase nunca há algo trocado e 1–2 GB de swap (independentemente da quantidade de RAM) parece estar correto.


O espaço de troca também é usado se você executar qualquer coisa que utilize a JVM: não faça chintz e esqueça de alocar espaço de troca se estiver executando o Java!
Warren

@warren: Eu tenho instâncias do Tomcat, cada uma com mais de 3GiB, mas sem troca (e uma usando páginas enormes e, portanto, não pode ser trocada). Não tenho certeza do que você está falando.
Derobert

há um bug semi-obscuro na JVM relacionado às configurações de memória mínima e máxima que encontrei no verão passado ( antipaucity.com/?p=984 ). TL; DR - toda vez que a JVM solicita mais memória do sistema operacional, ela se escreve para trocar, obtém seu novo pedaço de memória e depois se lê de volta na RAM para que sua memória seja contínua
warren

@warren: OK, estou executando o OpenJDK em 64 bits, com Xmx e Xms iguais. Mas não tenho certeza de como o Java se forçaria a trocar, o único fechamento do syscall seria madvise, mas isso não falhará ... esse bug fala sobre a falta de memória durante a coleta de lixo. A adição de swap evita isso, é claro, mas a adição de RAM. Talvez seja devido a 32 bits com o PAE?
Derobert

isso acontece com o 64-bit JVM, também: se você tem Xmse Xmxnão definida para os mesmos valores, ele pode morder-lhe mal: causou grandes problemas para nós por duas semanas + até que nós finalmente rastrearam
Warren

4

Bem, isso depende de quais serviços e aplicativos você planeja executar. Você pode assistir ao uso da memória com free -m e ajustar sua partição de swap de acordo com o tempo.

Aqui está uma discussão interessante sobre o assunto. Pessoalmente (e depois de ler essa discussão), eu ainda deixaria cerca de 1 GB para troca.


2

Não posso falar diretamente com o Debian, mas sei que quando você ultrapassa os 2 GB de RAM, a equação 2xRAM original muda, geralmente até 1xRAM. Acho que quando você atinge 16 GB de RAM, a sugestão diminui novamente para 0,75xRAM.

Obviamente, achei isso verdade para o Solaris e, na verdade, é a métrica usada para instalações Oracle, portanto, o YMMV, dependendo dos aplicativos em que você estará executando lá.


2

Eu sempre faço tanto swap (pelo menos) quanto RAM. Apenas no caso de eu querer hibernar a máquina algum dia. Pode trabalhar com menos, mas também não.

Hoje em dia, o espaço no disco rígido é barato, portanto, não hesite em ceder espaço para troca.


2

O espaço de troca pode servir como "preenchimento" quando você fica sem memória imediatamente.

Quando um processo consome toda a RAM disponível e, em seguida, parte da máquina é executada muito lentamente, mas geralmente você pode se recuperar. Também será mais fácil ver qual processo está causando o problema.


2
Esta é uma faca de dois gumes: no meu PC doméstico, removi o swap quando estava usando o Firefox 2.x, porque estava consumindo lentamente toda a memória e, quando a máquina foi trocada, tornou-se completamente inutilizável; sem swap, o processo de firefox estava simplesmente fechada pelo kernel :)
wazoox

1

Ao longo dos anos, segui a regra de que, para máquinas Windows, você tem tanto swap quanto RAM ... No Novell, ajustávamos o swap mais alto se tivéssemos mais impressoras ... No Linux, a regra e a prática para mim são 1 GB Troque por cada 2 GB de RAM que você possui. E você o coloca na frente do disco para que ele seja acessado mais rapidamente.

  • Se for um gateway de email / spam, uso o dobro da troca para a RAM
  • Se é um servidor * eu não uso swap
  • se for um servidor LAMP, a regra 1/2 estará em vigor.

  • A milhagem varia de acordo com o aplicativo e o uso da GUI.


Na verdade, eu acho que a troca no meio do disco seria acessada mais rapidamente.
Eddie

0

Eu crio 1GB de swap e compro mais RAM no segundo que está sendo usado. Você realmente não precisa trocar em computadores modernos, a RAM é tão barata.


0

Para que você está usando o sistema? Pessoalmente, não uso nenhum swap. Se alguma coisa usar um token de 512 MB ou algo assim, as coisas poderão ser colocadas em disco se residentes, mas inativas por longos períodos.


0

Eu apenas uso uma pequena troca de token (geralmente 256 MB, mas eu já fiz 64 MB) porque a configuração de um sistema com troca zero precisa de uma configuração especial.

O espaço em disco é barato, mas slooooooooow. Assim que o sistema começa a trocar, o desempenho é zero. E a RAM não é mais tão cara.

Confie em mim, compre um processador um pouco mais lento e compre mais RAM. 2,8 GHz em vez de 3,0 GHz economizará dinheiro suficiente para comprar mais 2 GB de RAM, pelo menos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.