bpftune (by Oracle) é um daemon leve que automaticamente ajusta parâmetros de kernel Linux usando eBPF. Em vez de exigir um admin adivinhar valores de sysctl, ele observa comportamento real do sistema através de sondas eBPF — pressão de buffer TCP, saturação de tabela de conexão, reclamação de memória — e ajusta os parâmetros relevantes continuamente conforme carga muda. Seu princípio guia é ser invisível: overhead quase zero, nenhuma configuração necessária, e deliberadamente retrocede qualquer parâmetro que um administrador tenha definido manualmente.
Ajuste automático muda comportamento de kernel em um sistema ao vivo. Teste-o em hosts não-críticos e observar os logs antes de lançamento amplo.
Requisitos
- Kernel Linux com suporte BPF e BTF (5.15+ recomendado)
- Privilégios raiz (carrega programas eBPF, escreve sysctls)
Instalação
| Plataforma | Comando |
|---|
| Oracle Linux / Fedora | sudo dnf install bpftune |
| Do código-fonte | git clone https://github.com/oracle/bpftune && make && sudo make install |
| Serviço | sudo systemctl enable --now bpftune |
| Verificar | bpftune -h |
Executando
| Comando | Descrição |
|---|
sudo bpftune | Executar em foreground |
sudo bpftune -d | Executar como daemon |
sudo systemctl start bpftune | Iniciar via systemd |
sudo bpftune -s | Mostrar resumo de ajustadores e estado atual |
journalctl -u bpftune -f | Observar decisões de ajuste ao vivo |
Opções Principais
| Flag | Efeito |
|---|
-d | Modo daemon |
-s | Saída de resumo/status |
-S | Suprimir (dry-run) — registrar o que ajustaria |
-L | Modo de aprendizado / comportamento legado |
-r | Reverter mudanças ao sair |
-l LEVEL | Nível de verbosidade de log |
# Ver o que ajustaria sem mudar nada
sudo bpftune -S -l debug
O Que Ajusta
| Ajustador | Ajusta |
|---|
| Buffer TCP | tcp_rmem / tcp_wmem sob pressão de throughput |
| Congestionamento TCP | Seleção de algoritmo de controle de congestionamento |
| Limites de conexão | somaxconn, tamanhos de backlog quando filas transbordam |
| Tabela de vizinhos | Tamanhos de tabela ARP/ND quando entradas são dropadas |
| Tabela de rota | Dimensionamento de cache de rota |
| Netns / sysctl | Equivalentes por namespace onde aplicável |
Como o Ciclo de Feedback Funciona
| Passo | Detalhe |
|---|
| Observar | Sondas eBPF contam drops, transboramentos, eventos de pressão |
| Decidir | Se um threshold é repetidamente atingido, o parâmetro é um gargalo |
| Ajustar | Elevar o limite incrementalmente (nunca ilimitado) |
| Re-observar | Confirmar que o sintoma limpou |
| Retroceder | Se um admin definiu o valor manualmente, deixar sozinho |
Este ciclo “observar, empurrar, verificar” é por que consegue executar continuamente sem oscilar.
Verificando Seu Efeito
# O que bpftune mudou?
sudo bpftune -s
# Confirmar um sysctl que reportou ajustando
sysctl net.ipv4.tcp_rmem net.core.somaxconn
# Correlacionar com o sintoma que estava fixando
ss -s # stats de socket/fila
netstat -s | grep -i drop # drops que dispararam ajuste
Quando Usar
| Cenário | Fit |
|---|
| Cargas de trabalho variáveis/desconhecidas | Forte — adapta conforme carga muda |
| Instâncias de nuvem de tamanhos diferentes | Forte — sem ajuste por instância |
| Carga de trabalho altamente ajustada, fixa | Fraco — seus valores manuais provavelmente são melhores |
| Controle de mudança rigoroso | Usar dry-run -S, ou pular |
bpftune vs Ajuste Manual/Perfil
| Aspecto | bpftune | TuneD | Sysctl manual |
|---|
| Modelo | Contínuo, feedback-driven | Perfis estáticos | Valores únicos |
| Adapta-se a carga | Sim | Não | Não |
| Config necessária | Nenhuma | Escolher um perfil | Expertise completo |
| Respeita configurações manuais | Sim (retrocede) | Sobrescreve | N/A |
Complementa TuneD (perfis estáticos amplos) e ferramentas diretas como cpupower; bpftune alvo limites de rede/kernel especificamente.
Recursos