Existe um tamanho máximo no qual um arquivo de swap pode funcionar?

7

Até onde eu sei, o limite teórico para um arquivo de troca é insanamente grande, dependendo se um sistema de 32 bits ou 64 bits é usado.

Eu fiz um arquivo de troca de 16GB em um sistema de 64GB de RAM e 64bits com especificações de baixa média, porque eu tenho espaço mais que suficiente no meu disco rígido interno de 1TB ...

Mas o grande arquivo de troca realmente faz diferença na velocidade / desempenho?

    
por Devon van Schoor 28.05.2018 / 00:43

6 respostas

6

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 invasor do OOM inicie a eliminação de processos para recuperar a memória.

Se você deseja um melhor desempenho:

  • diminuir swappiness se você não usar mais de 4 GB com frequência
  • adiciona RAM
  • mude para um SSD e coloque o arquivo de troca nele
por Chai T. Rex 28.05.2018 / 00:49
5

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" é 4kB em um sistema tradicional (por exemplo, x86 ou x86_64), mas pode ser maior em outras arquiteturas ou se você configurou páginas grandes especialmente.

Isso dá 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ê atingir isso, mas essa é uma área de swap tão grande que o mkswap pode criar para você.

Quanto ao quanto você quer, qualquer área de swap além do máximo que você realmente utiliza não contribui com 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é mesmo anormal, e usar isso como o tamanho do arquivo de swap e não mais.

No momento da gravação, é muito improvável que o espaço de troca seja maior do que cerca de 4 GB do que o tamanho da memória física, a menos que seu sistema seja muito anormal. Em um sistema típico, como um sistema de área de trabalho usado por uma pessoa por vez, é possível que você pare até, no máximo, de 6 a 8 GB, mesmo que sua memória física seja maior.

    
por thomasrutter 28.05.2018 / 03:04
2

Esta resposta pode não ser apropriada para o Ubuntu 18.04 (graças a @Chai T. Rex por apontar isso nos comentários).

De qualquer forma, para versões anteriores, aqui está (ainda não há uma proposta de atualização de LTS > LTS, então isso ainda pode ser relevante):

Não é um arquivo, é uma partição, e sim, devido a permutabilidade

The swappiness parameter controls the tendency of the kernel to move processes out of physical memory and onto the swap disk. Because disks are much slower than RAM, this can lead to slower response times for system and applications if processes are too aggressively moved out of memory.

Então, basicamente, se sua partição swap for muito maior que a RAM que você possui, o sistema tenderá a trocar mais, causando uma lentidão geral.

    
por dadexix86 28.05.2018 / 00:46
2

De acordo com a resposta de Gilles

...There used to be a 2GB swap size limit (on most 32-bit platforms), but this has not been the case for years. The limitation was removed at some point in the 2.2 kernel series.

Além disso, ele cita man page para mkswap :

The maximum useful size of a swap area depends on the architecture and the kernel version.

Na biblioteca linux / swap.h , há MAX_SWAPFILES entry, então existe um limite no número de arquivos de troca no nível do kernel, no entanto que aparentemente não é uma área definitiva. De acordo com o documento vinculado:

It should be noted that the six bits for “type” should allow up to 64 swap areas to exist in a 32 bit architecture instead of the MAX_SWAPFILES restriction of 32

O que eu entendo tem o máximo de até 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 vale a pena notar que em este caso , os esforços do OP para criar arquivos de troca falharam na 30ª entrada.

Quanto às partições swap, parece não haver limite para isso no kernel, além de constats mencionados anteriormente, mas o número de partições ainda seria limitado por o BIOS e o layout de disco subjacentes .

    
por Sergiy Kolodyazhnyy 28.05.2018 / 01:18
2

Não há muita diferença em velocidade ou desempenho ao aumentar a partição de troca para ser arbitrariamente grande.

Existem vários fatores relacionados ao swap que podem afetar o desempenho, como swappiness e tipo de unidade de disco rígido (SDD ou HDD).

O swap é razoavelmente lento e o aumento do swappiness 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 é fazer com que o tamanho da partição swap seja duas vezes maior que a sua memória RAM.

    
por user834668 28.05.2018 / 01:01
0

Eu chego ao fato de que um arquivo de swap ou partição swap praticamente não tem limite. Além disso, meu arquivo de swap de 16GB é 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 fazendo uso desse espaço de troca em oposição ao hardware físico.

Minha solução para isso é fazer um alto valor de swappiness para que a troca não seja excessivamente usada em oposição ao hardware mais rápido. então eu fiz:

sudo -s
nano /etc/sysctl.conf

Adicionado ao arquivo:

#vm.swappiness = 50

salvar

sudo sysctl -p

para atualizar (ou pode ter apenas reiniciado)

    
por Devon van Schoor 28.05.2018 / 02:36