Publicado em: 02/Dec/2019
Atualizado em: 03/Dec/2019

Gerenciamento de memória swap

Configuração atual

1swapon --show

A saída do comando acima, se tiver swap configurado, será parecido com:

1NAME      TYPE      SIZE USED PRIO
2/dev/sda5 partition 2,9G   1G   -2

Neste caso uma partição foi utilizada para swap.

Outro modo de verificar o swap é:

1free -h

Na ausência o valor é informado como zero.

1Mem:          996Mi       262Mi        79Mi        40Mi       654Mi       514Mi
2Swap:            0B          0B          0B

Verificar se existe espaço disponível para criação

Antes de criar o swap é necessário garantir que existe espaço em disco.

1$ df -ah

Saída

Filesystem      Size  Used Avail Use% Mounted on
sysfs              0     0     0    - /sys
proc               0     0     0    - /proc
udev            488M     0  488M   0% /dev
devpts             0     0     0    - /dev/pts
tmpfs           100M   13M   88M  13% /run
/dev/vda1        25G   11G   14G  45% /
securityfs         0     0     0    - /sys/kernel/security
tmpfs           499M   12K  499M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           499M     0  499M   0% /sys/fs/cgroup

Criação do arquivo de swap

Como a memória do sistema é de 1GB vamos criar um arquivo de swap com 2GB no raiz.

1fallocate -l 2G /swapfile

O acesso deve ser somente do root:

1chown root.root /swapfile
2chmod 600 /swapfile
3ls -lh /swapfile

Saída

-rw------- 1 root root 2.0G Aug 10 09:45 /swapfile

Com as permissões corretas podemos continuar marcando o espaço como swap:

1mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Ativando o swap

Depois de marcado podemos disponibilizar o swap para o sistema.

1swapon /swapfile
NAME      TYPE SIZE USED PRIO
/swapfile file   2G   0B   -1

Vamos verificar como os comando que já vimos anteriormente:

1$ swapon --show
2NAME      TYPE SIZE USED PRIO
3/swapfile file   2G   0B   -1
4
5$ free -h
6              total        used        free      shared  buff/cache   available
7Mem:          996Mi       263Mi        74Mi        40Mi       658Mi       513Mi
8Swap:         2.0Gi          0B       2.0Gi

Tornando o swap permanente

Primeiramente faremos um backup do arquivo fstab

1cp /etc/fstab /etc/fstab.bak

Agora vamos acrescentar uma linha no final do fstab

1echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab

Ajustes finos

Swappiness

Este parâmetro, que varia de 0 a 100, ajusta a frequência de acesso ao swap

  • próximos a 0: o sistema só acessa o swap se absolutamente necessário (mais rápido)
  • próximos a 100: prioriza colocar os dados no swap para liberar RAM
  • desktop: 60
  • server: 10

Para verificar a configuração atual use:

1cat /proc/sys/vm/swappiness

Para definir o valor 10 use:

1sysctl vm.swappiness=10

Para deixar permanente a configuração:

1cp /etc/sysctl.conf /etc/sysctl.conf.bak
2echo 'vm.swappiness=10' | tee -a /etc/sysctl.conf

Cache pressure

Usado para realizar cache de informações de inode e dentry possibilitando reduzir o custo de acessar esta informações frequentemente.

Para verificar o valor atual use:

1cat /proc/sys/vm/vfs_cache_pressure

Saída

100

Da maneira como está agora o sistema removerá as informações sobre inode muito rapidamente. Vamos adotar uma configuração mais conservativa utilizando o valor 50.

1sysctl vm.vfs_cache_pressure=50

Para deixar permanente a configuração

1echo 'vm.vfs_cache_pressure=50' | tee -a /etc/sysctl.conf

Referências

comments powered by Disqus