Existe um tamanho máximo no qual um arquivo de permuta possa funcionar?


8

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?



2
IMO, se você estiver usando troca você realmente precisa de mais memória RAM, e não um arquivo de swap maior
Panther

1
se você estiver usando HDDs, deverá usar o zram e diminuir a prioridade dos swaps do HDD. E tal partição swap grande não ajuda, porque pelo tipo você usa como 4GB trocar o seu sistema havia sido lento para um rastreamento
phuclv


Tanto quanto me lembro, um arquivo de permuta consumirá uma certa quantidade de RAM física (acho que menos de 1% do tamanho do arquivo de permuta). Portanto, ter um arquivo de troca excessivamente grande pode prejudicar o desempenho devido ao consumo de memória. Mas para um arquivo de troca de tamanho razoável, isso não será um problema.
Kasperd # 28/18

Respostas:


7

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 mkswappode 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.


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 killer do OOM comece a matar processos para recuperar a memória.

Se você quer um melhor desempenho:

  • diminuir swappinessse você não usar mais de 4 GB com frequência
  • adicionar RAM
  • mudar para um SSD e colocar o arquivo de troca nele

Se você muitas vezes chega ao ponto de precisar trocar os blocos de memória, um SSD devido à sua arquitetura e ciclos de gravação limitados não é o caminho a seguir, pois pode usar facilmente os ciclos de gravação do SSD rapidamente. Se você ocasionalmente precisar apenas de SSDs de memória de troca, tudo bem.
Videonauth

11
@Videonauth: "Use com facilidade os ciclos de gravação do SSD muito rapidamente": qualquer tipo de SSD moderno meio decente pode sustentar a gravação da capacidade total do SSD dia após dia, durante anos . Seu conselho pode ter sido correto em 2010, mas está desatualizado. Mesmo um Samsung SSD 840 de 256 GiB de nível consumidor pode sustentar a gravação de 100 GiB por dia por mais de 2 anos.
AlexP

Se você tem muita RAM, diminuir a troca faz ainda menos diferença do que se você tivesse RAM limitada. Na verdade, a instalação de muita RAM faz com que outros ajustes sejam redundantes, se for o suficiente para evitar troca. Mantenha uma partição de troca para estabilidade "apenas por precaução", 99,9% do tempo em que não será usada e você manterá um ótimo desempenho.
thomasrutter

1
Além disso, a coisa sobre os ciclos limitados de gravação de SSD não é verdadeira há mais de uma década, é hora de esse FUD precisar ser chamado. Lamentamos, mas este comentário é tão redundante, uma vez que AlexP já abordou isso, mas merece ser sublinhado. Os SSDs são ótimos para aplicativos com gravação pesada.
thomasrutter

1
O nivelamento de desgaste nos SSDs tornou-se algo em torno de 2008 ( artigo de 2008 | artigo da Anandtech 2009 ). "Os laptops com preços normais ao consumidor chegaram com SSDs em 2008", não, os SSDs eram muito caros e realmente não eram padrão.
thomasrutter

3

De acordo com a resposta de Gilles

... Costumava haver um limite de tamanho de troca de 2 GB (na maioria das plataformas de 32 bits), mas esse não é o caso há anos. A limitação foi removida em algum momento da série 2.2 do kernel.

Além disso, ele cita a página de manual para mkswap:

O tamanho útil máximo de uma área de troca depende da arquitetura e da versão do kernel.

Na biblioteca linux / swap.hMAX_SWAPFILESentrada, 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:

Deve-se observar que os seis bits do "tipo" devem permitir a existência de até 64 áreas de troca em uma arquitetura de 32 bits, em vez da restrição MAX_SWAPFILES de 32

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 .


2

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

O parâmetro swappiness controla a tendência do kernel de mover processos para fora da memória física e para o disco de troca. Como os discos são muito mais lentos que a RAM, isso pode levar a tempos de resposta mais lentos para o sistema e aplicativos, se os processos forem muito agressivamente removidos da memória.

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.


4
Agora existem arquivos de troca, e eles são o padrão (em vez de partições) ao instalar o 18.04 do zero.
Chai T. Rex

1
Presumo que o comportamento da troca permaneça praticamente o mesmo, independentemente de ser suportado por uma partição ou arquivo. Você também pode ter vários arquivos de troca e / ou partições ao mesmo tempo. De qualquer forma, eu não acho que mais troca teria um efeito negativo enquanto ainda resta RAM suficiente.
Byte Commander

Eu diria o mesmo, mas até que eu vou colocar minhas mãos sobre ele, esta é apenas uma suposição selvagem
dadexix86

Existem partições de troca e arquivos de troca. As partições de swap podem ser usadas por duas ou mais instalações Linux no mesmo PC (inicialização dupla ou inicialização tripla). A partição de troca é melhor no caso de disco completo em que o arquivo de troca pode ser criado fragmentado. ... Os arquivos de swap irá funcionar tão bom quanto as partições de troca se eles são criados em discos não-completos à fragmentação evitar - Devon van Schoor j
Devon van Schoor

2

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 swappinesso 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.


5
essa recomendação está desatualizada. Sistemas modernos com 32 ou 64GB RAM não vai precisar de 64 ou 128 GB de swap
phuclv

3
@ LưuVĩnhPhúc Eu não usaria mais de 2 GB de swap hoje em dia ...
el.pescado

2GB parece muito baixo ... máquinas ou jogos virtuais podem realmente preencher mais de 2GB de swap rapidamente. Eu acho que de 4 a 8GB de swap funciona bem com qualquer quantidade de memória RAM. Se você precisar de mais de 8 GB, provavelmente deverá adicionar mais RAM.
Germain

0

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:

sudo -s
nano /etc/sysctl.conf

Adicionado ao arquivo:

#vm.swappiness = 50

Salve 

sudo sysctl -p

para atualizar (ou poderia ter acabado de reiniciar)


Adicionar a linha #vm.swappiness = 50a /etc/sysctl.confnão tem efeito, o líder #faz com que essa linha seja um comentário, remova-a. Você pode verificar a troca com cat /proc/sys/vm/swappiness.
Mck765 # 28/18

Mas o método que descrevi funcionou. Quando eu input [cat / proc / sys / vm / swappiness] eu recebo 50 como a saída
Devon van Schoor
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.