Quão seguro é aumentar o tmpfs para mais do que a memória física?

9

Meu servidor tem 2 GB de RAM e SSD de 120 GB, além de alguns arrays RAID para armazenamento. OS é Debian 8 (Linux 3.16).

Eu tenho um aplicativo intenso do MySQL que possui tmpdir = /run/mysqld , que é um tmpfs configurado pelo Debian através de /etc/default/tmpfs :

# Size limits.  Please see tmpfs(5) for details on how to configure
# tmpfs size limits.
TMPFS_SIZE=40%VM

Isso costumava ser 20%VM , que é cerca de 384M. Eu corri contra vários no space left on device , então eu aumentei para 40%VM , mas mesmo com cerca de 763M ainda é muito pequeno.

Agora eu devo adicionar mais RAM, mas por curiosidade, gostaria de saber os limites aqui.

  • /dev/sdd1 está montado em / tem cerca de 50 GB gratuitos e é bastante rápido (Samsung 850 EVO SSD)
  • /dev/sdd5 é minha partição swap, é 3.7G (o ID do tipo fdisk é 82)
  • TMPFS_SIZE está definido como 40%VM , significando que /run é 763M

Agora eu sei que o tmpfs pode trocar, o que é bom para mim. Eu quero que o MySQL escreva na RAM sempre que possível, mas se precisar de mais memória, eu posso permitir que o sistema o troque no SSD.

Então, com a minha configuração, posso enviar /run para:

  • 300M grande? Sim. Esse foi o padrão.
  • 1,5 GB grande Sim, tentei, o MySQL usava até 1.3GB e o sistema funcionava como um encanto. Mas isso ainda é menos da metade da memória física + partição de swap.
  • 2,5 GB grande Isso é mais do que a memória física, mas menos da metade da memória física + minha partição de troca.
  • 4GB grande? Isso se encaixaria perfeitamente em meio físico + troca
  • Mais? como 10GB? pode usar espaço livre em / para trocar mais?

Eu estou supondo que a regra para a segurança é ter TMPFS_SIZE não maior que swap + metade da memória física. Posso ir além disso sem aumentar a partição swap?

Além disso, é possível colocar 200%VM em /etc/default/tmpfs ? Eu li o manual para esse arquivo sem saber se posso colocar > 100 % sobre isso.

Por último, devo fazê-lo em /etc/fstab e não tocar em /etc/default/tmpfs ?

(até saber que eu só fiz isso com mount -o remount , eu ainda não reiniciei o servidor)

Edit: para a última pergunta, eu sei que pode / pode ser modificada por /etc/fstab (veja a citação abaixo da man page), no entanto eu queria saber a melhor prática, porque eu nunca toquei em nada em /etc/default até agora.

More complex mount options may be used by the creation of a suitable entry in /etc/fstab.

    
por Benoit Duffez 18.10.2015 / 21:28

1 resposta

4

Eu imaginei que poderia testar, então eu corri:

sudo mount -o remount,size=2800M /run

Trabalhou como um encanto:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G   45M  2.7G   2% /run

Então eu preenchai um pouco:

fallocate -l 1G /run/test.img
fallocate -l 1G /run/test2.img
fallocate -l 500M /run/test3.img

Resultado:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G  2.6G  208M  93% /run

O sistema ainda está ativo e em execução. A disponibilidade de troca caiu, o que prova que foi usado:

  • 17:10: crie 2,5 GB de arquivos em /run
  • 17:20: remova o arquivo 500M

O total de swap é reduzido pela quantidade de /run .

Eu testaria 10 GB em uma VM, porque eu não sei se o kernel irá recusar a remontagem ou apenas ter um comportamento inesperado.

Ainda estou procurando uma resposta real, mas a maneira pragmática mostrou que funciona.

    
por 23.10.2015 / 17:28