Tuning do Sistema Linux via /proc e /sys

Introdução

O desempenho e o comportamento de um sistema Linux podem ser ajustados dinamicamente utilizando duas interfaces especiais do kernel: os pseudo-sistemas de arquivos /proc e /sys. Essas interfaces permitem não apenas a visualização de informações em tempo real, mas também a modificação de parâmetros do kernel sem a necessidade de reinicialização. Neste artigo, exploraremos como fazer ajustes de performance, segurança e comportamento do sistema através dessas interfaces.


1. Entendendo o /proc

O diretório /proc é um pseudo-sistema de arquivos que fornece uma visão em tempo real sobre o estado do kernel e dos processos. Ele não ocupa espaço real em disco e é montado na memória.

Exemplos comuns:

  • /proc/cpuinfo – Informações sobre a CPU
  • /proc/meminfo – Uso da memória
  • /proc/[PID]/ – Detalhes sobre processos ativos
  • /proc/sys/ – Parâmetros ajustáveis do kernel (sysctl)

2. Usando /proc/sys para tuning com sysctl

A maior parte dos ajustes de comportamento do sistema é feita em /proc/sys/. Esses parâmetros podem ser lidos ou modificados diretamente ou com o comando sysctl.

Exemplo 1: Aumentar o número de arquivos abertos

# Visualizar
cat /proc/sys/fs/file-max

# Alterar temporariamente
echo 2097152 > /proc/sys/fs/file-max

# Ou usando sysctl
sysctl -w fs.file-max=2097152

# Tornar permanente (em /etc/sysctl.conf ou /etc/sysctl.d/)
echo "fs.file-max = 2097152" >> /etc/sysctl.conf

Exemplo 2: Ativar proteção contra IP spoofing

sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1

3. Explorando o /sys

O /sys é outro pseudo-sistema de arquivos usado para interagir com dispositivos e subsistemas do kernel. Ele é gerenciado pelo udev e está organizado hierarquicamente.

Exemplo: Ajustar governança de CPU

# Ver governadores disponíveis
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

# Ver governador atual
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

# Alterar o governador (exemplo: performance)
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Exemplo: Desabilitar auto-suspend USB

# Encontrar o dispositivo (exemplo: 1-1)
echo on > /sys/bus/usb/devices/1-1/power/control

4. Cuidados ao fazer tuning

  • Persistência: alterações feitas diretamente em /proc ou /sys são temporárias e se perdem após reboot. Para torná-las permanentes, use /etc/sysctl.conf, /etc/sysctl.d/*.conf ou regras udev para /sys.
  • Segurança: alguns ajustes podem comprometer a segurança do sistema. Exemplo: desativar o ASLR (kernel.randomize_va_space) reduz a proteção contra ataques de buffer overflow.
  • Testes: sempre teste os efeitos das mudanças em ambiente de homologação antes de aplicar em produção.

5. Dicas úteis e comandos complementares

  • Listar todos os parâmetros disponíveis:
sysctl -a
  • Validar arquivos sysctl:
sysctl -p /etc/sysctl.conf
  • Monitorar alterações em tempo real:
watch -n1 cat /proc/loadavg

Conclusão

O /proc e o /sys são poderosas ferramentas de administração que permitem afinar o comportamento do Linux de forma detalhada e dinâmica. Dominar essas interfaces é essencial para administradores que desejam extrair o máximo de desempenho e controle de seus sistemas. No entanto, cada mudança deve ser feita com responsabilidade, sempre considerando os impactos no sistema como um todo.