Respostas:
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'.
A Red Hat recomenda a seguinte fórmula para servidores com muita RAM:
if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB
Se o seu sistema tiver 1 GB de RAM, sua troca será de 2 GB, para 16 GB, 18 GB.
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
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?
(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.
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?
Xms
e Xmx
nã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
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.
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á.
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.
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 servidor LAMP, a regra 1/2 estará em vigor.
A milhagem varia de acordo com o aplicativo e o uso da GUI.
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.
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.
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.