O que é o sysctl?
O sysctl permite ler e alterar parâmetros do kernel em tempo de execução. Esses parâmetros ficam expostos no sistema de arquivos virtual /proc/sys/.
sysctl -a: listar todos os parâmetros
sysctl -a 2>/dev/null | wc -l
1487
São centenas de parâmetros. Para filtrar:
sysctl -a 2>/dev/null | grep swappiness
vm.swappiness = 60
Lendo um parâmetro específico
sysctl vm.swappiness
vm.swappiness = 60
O mesmo valor pode ser lido diretamente do /proc/sys/:
cat /proc/sys/vm/swappiness
60
Dica: A relação entre o nome do sysctl e o caminho em /proc/sys/ é direta: troque pontos por barras.
vm.swappiness vira /proc/sys/vm/swappiness.sysctl -w: alterar em tempo real
Mudanças com -w são imediatas mas temporárias -- perdidas no próximo reboot:
# Reduzir uso de swap (padrão: 60, recomendado para servidores: 10)
sudo sysctl -w vm.swappiness=10
vm.swappiness = 10
# Habilitar IP forwarding (necessário para roteadores/containers)
sudo sysctl -w net.ipv4.ip_forward=1
Alternativamente, escreva direto no /proc/sys/:
echo 10 | sudo tee /proc/sys/vm/swappiness
/etc/sysctl.conf: mudanças persistentes
Para que os parâmetros sobrevivam ao reboot, adicione-os em /etc/sysctl.conf ou crie arquivos em /etc/sysctl.d/:
sudo tee /etc/sysctl.d/99-tuning.conf <<EOF
# Reduzir swappiness para servidores com bastante RAM
vm.swappiness = 10
# Habilitar IP forwarding
net.ipv4.ip_forward = 1
# Desabilitar ICMP redirects (segurança)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# Aumentar limite de conexões
net.core.somaxconn = 4096
EOF
Aplique as mudanças sem reiniciar:
sudo sysctl -p /etc/sysctl.d/99-tuning.conf
vm.swappiness = 10
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.core.somaxconn = 4096
Dica: Prefira criar arquivos em
/etc/sysctl.d/ em vez de editar /etc/sysctl.conf diretamente. Isso facilita a organização e evita conflitos em atualizações.Parâmetros úteis
| Parâmetro | Padrão | Uso |
|---|---|---|
vm.swappiness | 60 | Agressividade do uso de swap (0-100). Valores baixos priorizam RAM. |
net.ipv4.ip_forward | 0 | Permite encaminhamento de pacotes. Essencial para roteadores e containers. |
vm.overcommit_memory | 0 | Controla overcommit de memória. 0=heurístico, 1=sempre, 2=nunca. |
net.core.somaxconn | 4096 | Tamanho da fila de conexões pendentes. Aumente para servidores web. |
kernel.panic | 0 | Segundos para reiniciar após kernel panic. 0=nunca reinicia. |
fs.file-max | varia | Número máximo de file descriptors no sistema. |
Verificando o estado atual
# Ver todos os parâmetros de rede IPv4
sysctl net.ipv4 2>/dev/null | head -10
# Ver parâmetros de memória virtual
sysctl vm 2>/dev/null | head -10
# Verificar se IP forwarding está ativo
sysctl net.ipv4.ip_forward net.ipv6.conf.all.forwarding
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 0
/proc/sys/: explorando a árvore
A estrutura de /proc/sys/ reflete as categorias do sysctl:
ls /proc/sys/
abi crypto debug dev fs kernel net user vm
Cada diretório corresponde a um namespace: vm.*, net.*, kernel.*, etc.