Ir al contenido

bpftune - Ajuste automático de kernel con eBPF

bpftune - Ajuste automático de kernel con eBPF

bpftune (por Oracle) es un daemon ligero que automáticamente ajusta parámetros del kernel de Linux usando eBPF. En lugar de requerir que un administrador adivine valores de sysctl, observa el comportamiento real del sistema a través de sondeos de eBPF — presión de búfer TCP, saturación de tabla de conexión, recuperación de memoria — y continuamente ajusta los parámetros relevantes conforme cambia la carga. Su principio rector es ser invisible: sobrecarga casi nula, sin configuración requerida, y deliberadamente retrocede de cualquier parámetro que un administrador haya configurado manualmente.

El ajuste automático cambia comportamiento del kernel en un sistema en vivo. Pruébalo en hosts no críticos y observa los registros antes de despliegue amplio.

Requisitos

  • Kernel de Linux con soporte BPF y BTF (5.15+ recomendado)
  • Privilegios de root (carga programas de eBPF, escribe sysctls)

Instalación

PlataformaComando
Oracle Linux / Fedorasudo dnf install bpftune
Desde código fuentegit clone https://github.com/oracle/bpftune && make && sudo make install
Serviciosudo systemctl enable --now bpftune
Verificarbpftune -h

Ejecución

ComandoDescripción
sudo bpftuneEjecuta en el primer plano
sudo bpftune -dEjecuta como daemon
sudo systemctl start bpftuneInicia vía systemd
sudo bpftune -sMuestra resumen de ajustadores y estado actual
journalctl -u bpftune -fObserva decisiones de ajuste en vivo

Opciones clave

BanderaEfecto
-dModo daemon
-sSalida de resumen/estado
-SSuprime (ejecución seca) — registra lo que cambiaría
-LModo de aprendizaje / comportamiento heredado
-rRevierte cambios al salir
-l LEVELVerbosidad del registro
# Ve lo que ajustaría sin cambiar nada
sudo bpftune -S -l debug

Qué ajusta

AjustadorAjusta
Búfer TCPtcp_rmem / tcp_wmem bajo presión de rendimiento
Congestión TCPSelección de algoritmo de control de congestión
Límites de conexiónsomaxconn, tamaños de acumulación cuando las colas se desbordan
Tabla de vecinoTamaños de tabla ARP/ND cuando se descartan entradas
Tabla de rutaTamaño de caché de ruta
Netns / sysctlEquivalentes por namespace cuando aplica

Cómo funciona el bucle de retroalimentación

PasoDetalle
ObservarLos sondeos de eBPF cuentan caídas, desbordamientos, eventos de presión
DecidirSi un umbral se golpea repetidamente, el parámetro es un cuello de botella
AjustarSube el límite incrementalmente (nunca sin límite)
Re-observarConfirma que el síntoma se limpió
RetrocederSi un administrador estableció el valor manualmente, déjalo en paz

Este ciclo “observar, empujar, verificar” es por qué puede ejecutarse continuamente sin oscilar.

Verificación de su efecto

# ¿Qué ha cambiado bpftune?
sudo bpftune -s

# Confirma un sysctl que reportó ajustar
sysctl net.ipv4.tcp_rmem net.core.somaxconn

# Correlaciona con el síntoma que estaba fijando
ss -s                      # estadísticas de socket/cola
netstat -s | grep -i drop  # caídas que desencadenaron ajuste

Cuándo usarlo

EscenarioAjuste
Cargas de trabajo variables/desconocidasFuerte — se adapta conforme cambia la carga
Instancias de nube de tamaños diferentesFuerte — sin ajuste por instancia
Carga de trabajo altamente ajustada, fijaDébil — tus valores manuales probablemente sean mejores
Control de cambio estrictoUsa ejecución seca -S primero, o salta

bpftune vs ajuste manual/perfil

AspectobpftuneTuneDsysctl manual
ModeloContinuo, impulsado por retroalimentaciónPerfiles estáticosValores de una sola vez
Se adapta a la cargaNoNo
Configuración requeridaNingunaElige un perfilExperiencia completa
Respeta configuración manualSí (retrocede)SobrescribeN/A

Complementa TuneD (perfiles estáticos amplios) y herramientas directas como cpupower; bpftune apunta específicamente a límites de red/kernel.

Recursos