Tanto quanto eu sei, o limite teórico para um arquivo de troca é incrivelmente grande, dependendo de um sistema de 32 bits ou 64 bits ser usado.
Criei um arquivo de permuta de 16 GB em um sistema de 4 GB de RAM de 64 bits com especificações de baixa média, porque tenho espaço mais do que suficiente no meu HDD interno de 1 TB ...
Mas o grande arquivo de troca realmente faz diferença na velocidade / desempenho?
Respostas:
Você pode ter até 32 áreas de troca (arquivos ou partições) com até ~ 4 bilhões (2 ^ 32) páginas cada, onde uma "página" é de 4kB em um sistema tradicional (por exemplo, x86 ou x86_64), mas pode ser maior em outros arquiteturas ou se você configurou páginas grandes especialmente.
Isso fornece um máximo teórico de 16 TB por área de swap e até 32 áreas de swap. Pode haver outras limitações que se aplicam antes de você alcançar isso, mas essa é uma área de troca tão grande que
mkswap
pode ser criada para você.Quanto você deseja, qualquer área de troca além do máximo que você realmente utiliza não contribui em nada para o desempenho ou a estabilidade do sistema. O truque é estimar a quantidade máxima de utilização que ocorrerá em uma situação normal ou até anormal, e use-a como tamanho do arquivo de troca e não mais.
No momento da escrita, é pouco provável que seja utilizado um espaço de troca maior que cerca de 4 GB a mais do que o tamanho da sua memória física, a menos que seu sistema esteja muito anormal. Em um sistema típico, como um sistema de desktop usado por uma pessoa de cada vez, você provavelmente pode até parar no máximo de 6 GB a 8 GB, mesmo que sua memória física seja maior.
fonte
Não faz diferença em termos de velocidade ou desempenho. Ele permite que você use até 20 GB de memória virtual antes que o killer do OOM comece a matar processos para recuperar a memória.
Se você quer um melhor desempenho:
swappiness
se você não usar mais de 4 GB com frequênciafonte
De acordo com a resposta de Gilles
Além disso, ele cita a página de manual para
mkswap
:Na biblioteca linux / swap.h há
MAX_SWAPFILES
entrada, portanto há um limite no número de arquivos de troca no nível do kernel, no entanto, aparentemente essa também não é uma área definitiva. De acordo com o documento vinculado:O que eu entendo que tenha no máximo 64 arquivos de troca nas arquiteturas de 32 bits. No entanto, eu não notei no documento mencionar o que aconteceria na arquitetura de 64 bits. Também é importante notar que, nesse caso , os esforços do OP para criar arquivos de troca falharam na 30ª entrada.
Quanto às partições de swap, parece não haver limite para isso no kernel, além das constantes mencionadas anteriormente, mas o número de partições ainda seria limitado pelo layout do BIOS e do disco subjacente .
fonte
Esta resposta pode não ser apropriada para o Ubuntu 18.04 (obrigado a @Chai T. Rex por apontar isso nos comentários).
De qualquer forma, para as versões anteriores, aqui está (ainda não há uma proposta de atualização LTS> LTS, portanto isso ainda pode ser relevante):
Não é um arquivo, é uma partição, e sim por causa da troca
Então, basicamente, se sua partição de troca for muito maior que a RAM que você possui, o sistema tenderá a trocar mais, causando uma lentidão geral.
fonte
Não há muita diferença na velocidade ou no desempenho ao aumentar a partição de swap para ser arbitrariamente grande.
Existem vários fatores relacionados à troca que podem afetar o desempenho, como
swappiness
o tipo de disco rígido (SDD ou HDD).A troca é bastante lenta e o aumento da troca reduz o desempenho. No entanto, isso só afeta se não houver RAM suficiente. Mas é melhor do que não ter nenhuma troca. Minha recomendação é aumentar o tamanho da partição de swap duas vezes maior que a sua RAM.
fonte
Chego ao fato de que um arquivo de troca ou partição de troca praticamente não tem limite. Além disso, meu arquivo de troca de 16 GB é bastante grande, mas o tamanho não afeta a velocidade.
No entanto, o que eu entendo é que o que afeta a velocidade é o sistema realmente usar esse espaço de troca em oposição ao hardware físico.
Minha solução é fazer um alto valor de troca, para que a troca não seja excessivamente usada em oposição ao hardware mais rápido. então eu fiz:
Adicionado ao arquivo:
Salve
para atualizar (ou poderia ter acabado de reiniciar)
fonte
#vm.swappiness = 50
a/etc/sysctl.conf
não tem efeito, o líder#
faz com que essa linha seja um comentário, remova-a. Você pode verificar a troca comcat /proc/sys/vm/swappiness
.