Gerenciamento de memória swap
Configuração atual
swapon --show
A saída do comando acima, se tiver swap configurado, será parecido com:
NAME TYPE SIZE USED PRIO
/dev/sda5 partition 2,9G 1G -2
Neste caso uma partição foi utilizada para swap.
Outro modo de verificar o swap é:
free -h
Na ausência o valor é informado como zero.
Mem: 996Mi 262Mi 79Mi 40Mi 654Mi 514Mi
Swap: 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.
$ 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.
fallocate -l 2G /swapfile
O acesso deve ser somente do root:
chown root.root /swapfile
chmod 600 /swapfile
ls -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:
mkswap /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.
swapon /swapfile
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -1
Vamos verificar como os comando que já vimos anteriormente:
$ swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -1
$ free -h
total used free shared buff/cache available
Mem: 996Mi 263Mi 74Mi 40Mi 658Mi 513Mi
Swap: 2.0Gi 0B 2.0Gi
Tornando o swap permanente
Primeiramente faremos um backup do arquivo fstab
cp /etc/fstab /etc/fstab.bak
Agora vamos acrescentar uma linha no final do fstab
echo '/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:
cat /proc/sys/vm/swappiness
Para definir o valor 10 use:
sysctl vm.swappiness=10
Para deixar permanente a configuração:
cp /etc/sysctl.conf /etc/sysctl.conf.bak
echo '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:
cat /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.
sysctl vm.vfs_cache_pressure=50
Para deixar permanente a configuração
echo 'vm.vfs_cache_pressure=50' | tee -a /etc/sysctl.conf