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
| Plataforma | Comando |
|---|
| Oracle Linux / Fedora | sudo dnf install bpftune |
| Desde código fuente | git clone https://github.com/oracle/bpftune && make && sudo make install |
| Servicio | sudo systemctl enable --now bpftune |
| Verificar | bpftune -h |
Ejecución
| Comando | Descripción |
|---|
sudo bpftune | Ejecuta en el primer plano |
sudo bpftune -d | Ejecuta como daemon |
sudo systemctl start bpftune | Inicia vía systemd |
sudo bpftune -s | Muestra resumen de ajustadores y estado actual |
journalctl -u bpftune -f | Observa decisiones de ajuste en vivo |
Opciones clave
| Bandera | Efecto |
|---|
-d | Modo daemon |
-s | Salida de resumen/estado |
-S | Suprime (ejecución seca) — registra lo que cambiaría |
-L | Modo de aprendizaje / comportamiento heredado |
-r | Revierte cambios al salir |
-l LEVEL | Verbosidad del registro |
# Ve lo que ajustaría sin cambiar nada
sudo bpftune -S -l debug
Qué ajusta
| Ajustador | Ajusta |
|---|
| Búfer TCP | tcp_rmem / tcp_wmem bajo presión de rendimiento |
| Congestión TCP | Selección de algoritmo de control de congestión |
| Límites de conexión | somaxconn, tamaños de acumulación cuando las colas se desbordan |
| Tabla de vecino | Tamaños de tabla ARP/ND cuando se descartan entradas |
| Tabla de ruta | Tamaño de caché de ruta |
| Netns / sysctl | Equivalentes por namespace cuando aplica |
Cómo funciona el bucle de retroalimentación
| Paso | Detalle |
|---|
| Observar | Los sondeos de eBPF cuentan caídas, desbordamientos, eventos de presión |
| Decidir | Si un umbral se golpea repetidamente, el parámetro es un cuello de botella |
| Ajustar | Sube el límite incrementalmente (nunca sin límite) |
| Re-observar | Confirma que el síntoma se limpió |
| Retroceder | Si 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
| Escenario | Ajuste |
|---|
| Cargas de trabajo variables/desconocidas | Fuerte — se adapta conforme cambia la carga |
| Instancias de nube de tamaños diferentes | Fuerte — sin ajuste por instancia |
| Carga de trabajo altamente ajustada, fija | Débil — tus valores manuales probablemente sean mejores |
| Control de cambio estricto | Usa ejecución seca -S primero, o salta |
bpftune vs ajuste manual/perfil
| Aspecto | bpftune | TuneD | sysctl manual |
|---|
| Modelo | Continuo, impulsado por retroalimentación | Perfiles estáticos | Valores de una sola vez |
| Se adapta a la carga | Sí | No | No |
| Configuración requerida | Ninguna | Elige un perfil | Experiencia completa |
| Respeta configuración manual | Sí (retrocede) | Sobrescribe | N/A |
Complementa TuneD (perfiles estáticos amplios) y herramientas directas como cpupower; bpftune apunta específicamente a límites de red/kernel.
Recursos