Quanto de swap devo levar de 1GB para 1TB de RAM no 14.04 ou superior?

8

Vou instalar o 64 bit 14.04 em uma nova máquina com algo como 1 a talvez 128 GB de RAM e ainda mais RAM depois. Quanto espaço devo alocar para a partição swap?

E especialmente: POR QUÊ essas recomendações para esses números?

(Nenhuma das respostas existentes aqui e aqui explicam qualquer um dos porquê e são um pouco datado, se olharmos para 1GB ou RAM e para cima)

    
por Tim 08.03.2015 / 02:48

3 respostas

18

Primeiro, alguns antecedentes:

A regra prática em uso nos últimos 25 anos tem sido um mínimo de 1xRAM e máximo de 2xRAM , de modo que é o que você verá nas cotações o tempo todo.

Esse mínimo foi recuado na idade da pedra quando eu era adolescente e os dinossauros ainda vagavam pela Terra e porque a RAM era muito cara e você absolutamente precisava desse espaço de troca para poder para realizar qualquer coisa.

O máximo foi definido naquele momento por causa de retornos decrescentes: é muito lento para ter que trocar tanta memória quanto o acesso ao HD é um fator de 1000 mais lento que RAM: bom em uma emergência, mas não muito bom para o uso diário ! Na época, quando você ficou sem espaço de troca, chegou a hora de adicionar mais RAM! (o que ainda é verdade hoje).

Que tal hoje?

  1. Se você não usar a hibernação e sua memória ultrapassar 1 GB, a nova regra geral será round(sqrt(RAM)) , em que RAM é obviamente o tamanho da sua RAM em GB.

  2. Se você usar a hibernação, é melhor poder trocar toda a quantidade de RAM + já trocou a RAM para o disco, e a fórmula se torna: RAM+round(sqrt(RAM))

  3. A regra de retornos decrescentes ainda é válida para o máximo, mas a menos que você teste seu uso real, levando 2xRAM é apenas um desperdício de espaço em disco , então eu não uso o máximo (mais).

Todos juntos fornecem a seguinte tabela: (últimas 3 colunas que indicam o espaço de troca)

    RAM   No hibernation    With Hibernation    Maximum
    1GB              1GB                 2GB        2GB
    2GB              1GB                 3GB        4GB
    3GB              2GB                 5GB        6GB
    4GB              2GB                 6GB        8GB
    5GB              2GB                 7GB       10GB
    6GB              2GB                 8GB       12GB
    8GB              3GB                11GB       16GB
   12GB              3GB                15GB       24GB
   16GB              4GB                20GB       32GB
   24GB              5GB                29GB       48GB
   32GB              6GB                38GB       64GB
   64GB              8GB                72GB      128GB
  128GB             11GB               139GB      256GB
  256GB             16GB               272GB      512GB
  512GB             23GB               535GB        1TB
    1TB             32GB              1056GB        2TB

O texto acima é apenas uma regra geral; não é a lei da gravidade!
Você pode quebrar esta regra (ao contrário da lei da gravidade) se o seu caso de uso específico for diferente!

Dica do profissional: Sempre aloque o SWAP no início de um HD, pois os chefes precisam mover menos no interior do disco.
Sim : Em SSDs, não importa mais onde você localiza a área de troca pois eles usam tunelamento quântico em vez de mover cabeças e os SSDs modernos usam todas as células de memória (até mesmo o espaço não alocado) para evitar o quantum degradação.

Como testar se seu uso de swap é diferente da regra "genérica":

Basta executar:

for szFile in /proc/*/status ; do 
  awk '/VmSwap|Name/{printf  "\t" }END{ print "" }' $szFile 
done | sort --key 2 --numeric --reverse | more

que lhe dará uma lista de todos os programas em execução que estão trocados (com o que usa mais espaço de troca por cima)

Se você estiver usando mais de 0K: redimensione para mais do que o mínimo, caso contrário, não se incomode ...

Se você estiver em um servidor, pare de ler agora: está tudo pronto!

No entanto, se você estiver em um sistema de desktop / laptop, você quer que sua GUI seja o mais responsiva possível e só troque quando realmente precisar. O Ubuntu foi otimizado para trocar mais cedo, então a edição dessa enorme imagem em bruto de 250 Mega-pixels em gimp precisa ser rápida, então definir swappiness para 10 evitará que a área de trabalho seja trocada muito cedo, embora ainda não a tenha alternado tarde demais:

sudo nano /etc/sysctl.conf

e adicione:

# change "swappiness" from default 60 to 10 
# (theoretically only swap when RAM usage reaches around 80 or 90 percent)
vm.swappiness = 10

até o final do arquivo, salve o arquivo ( Ctrl + X Y + Insira no nano ) e execute um:

sysctl --system

ou use a abordagem e reinicialização do Windows $ ... : -)

    
por Fabby 09.03.2015 / 00:50
3

Necessidade de troca

A troca é útil por três motivos:

  1. Removendo a desordem da RAM. Do artigo no kernel.org:

      

    "Um número significativo de páginas referenciadas por um processo no início de   a sua vida só pode ser usada para inicialização e depois nunca usada   novamente. É melhor trocar essas páginas e criar mais discos   buffers do que deixá-los residentes e não utilizados "

    Em outras palavras, os dados armazenados na RAM só podem ser úteis quando um processo foi iniciado (como o processo de inicialização), e então simplesmente residem lá na RAM, espaço confuso que pode ser usado para propósitos melhores.

  2. Expande a quantidade de memória que os processos podem usar. Isso é bem entendido. Você não quer que o sistema fique sem memória e falhe devido à falta dele. Por esse motivo específico, o swap deve existir, servindo como um recurso de proteção.

  3. Hibernação: quando um computador hiberna, o conteúdo da RAM vai para o disco.

Quantidade de swap

Sabendo o propósito da troca e dependendo da quantidade de RAM da sua máquina, você pode escolher um tamanho de troca que se encaixe ao seu propósito. Não há diretrizes específicas, apenas regras mínimas que você pode usar para adaptar seu tamanho de swap ao seu sistema .

Por exemplo, linux.com recomenda:

  

Uma regra geral é a seguinte: 1) para um sistema desktop, use um swap   espaço de memória do sistema duplo, pois permitirá que você execute um grande   número de aplicações (muitas das quais podem ficar inativas e facilmente   trocado), disponibilizando mais RAM para as aplicações ativas; 2)   para um servidor, ter uma quantidade menor de swap disponível (digamos   memória física) para que você tenha alguma flexibilidade para trocar quando   necessário, mas monitore a quantidade de espaço de troca usada e atualize sua RAM   se necessário; 3) para computadores desktop antigos (com apenas 128MB), use   tanto espaço de troca quanto você pode poupar, até 1GB.

Por experiência pessoal, aqui está o que eu faria:

Considerando uma máquina com 1 - 2 GB que não precisa hibernar e para uso casual, você pode ter 1GB a 2GB de espaço de troca. Meu PC com 14.04 Ubuntu tem 1GB de RAM e 2GB de swap. O valor de swap nunca ultrapassa a borda de 800MB, e eu uso meu PC apenas para navegar na web e scripts.

Com um PC com mais de 2 GB e sem necessidade de hibernação, você pode manter a troca de 512 MB para 1 GB. Eu tenho um laptop com o 15.04 que eu nunca hibernate e que tem um arquivo swap ( não uma partição ) de 512 MB. A própria memória RAM é de 6 GB, mas não ultrapassa 2-3 GB nunca. Mais uma vez: uso casual.

Cosmoscalibur e Fabby já abordaram swap no caso de você precisar hibernar, então eu não vou entrar nisso muito extensivamente. Minha humilde opinião é esta:

Se você planeja hibernar, o conteúdo da RAM precisará ser trocado, por isso você precisa pelo menos do mesmo tamanho que a sua RAM.

    
por Sergiy Kolodyazhnyy 10.08.2015 / 01:23
0

Para a partição de troca de computador moderna pode ser alocada em qualquer lugar. Uma boa regra para a partição swap é usar o dobro da memória RAM. No seu caso, use uma partição swap de 16GB.

    
por cosmoscalibur 08.03.2015 / 02:51