20 puntos por xguru 2024-11-19 | 2 comentarios | Compartir por WhatsApp
  • Herramienta liviana diseñada para ajustar automáticamente y de forma continua el rendimiento del sistema aprovechando las capacidades de observación de BPF (eBPF)

Problemas que busca resolver

  • Demasiadas opciones de ajuste: el kernel de Linux tiene más de 1600 parámetros sysctl ajustables. Encontrar una configuración adecuada para distintos entornos es complejo y difícil
  • Menor intervención del administrador: en los sistemas modernos en la nube se necesita una gestión automatizada más que ajustes manuales. La mayoría de los sistemas casi no requieren intervención del administrador después de la configuración inicial
  • Límites de la configuración estática: como el entorno del sistema cambia constantemente, ajustar con valores fijos puede ser ineficiente

Principios clave de diseño

  • Sobrecarga mínima: evita rastrear eventos de alta frecuencia y usa observabilidad solo cuando es realmente necesario
  • Claridad en la explicación de políticas: registra en syslog “qué” cambió y “por qué” cambió
  • Prioridad para el administrador: si el administrador configura un valor, se desactiva la función de ajuste automático
  • Principio de cero configuración: ajusta automáticamente sin configuración adicional. Evita los números mágicos en la medida de lo posible
  • Ajuste dinámico: si aumenta el uso de memoria TCP, reduce el tamaño de los búferes para mantener el equilibrio del sistema

Conceptos principales

  • Ajustador (tuner): cada ajustador procesa los eventos generados por programas BPF y administra los elementos ajustables relacionados
  • Estrategia (strategy): un ajustador puede tener varias estrategias, y cada una selecciona la más efectiva mediante una función de evaluación
  • Evento (event): incluye ID del ajustador, escenario e información del espacio de nombres de red, y el ajustador realiza la acción adecuada con base en esos datos

Arquitectura

  • bpftune funciona como un daemon y carga y administra varios ajustadores plugin en formato .so.
  • Cada ajustador tiene un ID único y procesa eventos en BPF y en espacio de usuario.
  • El componente BPF incluye bpftune.bpf.h y usa variables compartidas y definiciones de mapas.

Lista de ajustadores compatibles

  • TCP connection tuner: ajuste automático del algoritmo de control de congestión
  • neighbour table tuner: expansión automática del tamaño de la tabla de vecinos
  • route table tuner: expansión automática del tamaño de la tabla de rutas
  • sysctl tuner: desactiva el ajustador si los valores sysctl ajustados entran en conflicto con una configuración manual
  • TCP buffer tuner: ajuste automático del tamaño de los búferes TCP
  • net buffer tuner: ajuste automático de parámetros clave de red del sistema
  • netns tuner: detección de adición y eliminación de espacios de nombres de red

2 comentarios

 
xguru 2024-11-19

Comentarios de Hacker News

  • Existe la preocupación de que diagnosticar y resolver problemas del sistema pueda volverse más difícil
  • El concepto de "bucle de retroalimentación" es importante para explicar la posibilidad de que ocurran problemas
    • No se debe al kernel de Linux, a BPF ni al programa en sí, sino a la forma en que funciona
    • Puede que no haya riesgos, puede que existan mecanismos de control y, aunque surjan problemas, podría converger a un estado estable
  • La teoría de control está algo subutilizada en la ingeniería de software
  • Me gustaría escuchar la opinión de quienes usan esta herramienta
    • Quiero saber si es efectiva y si el tiempo de configuración vale la pena
  • bpftune fue diseñado como una herramienta que no requiere configuración
    • Se agradece el soporte automatizado porque no hace falta aprender muchas opciones de configuración
  • Se puede usar de inmediato en CachyOS
    • Después de instalarlo, se puede acceder desde CachyOS Hello -> Apps/Tweaks
  • Me pregunto qué tan efectivo será en entornos multi-tenant como clústeres compartidos de k8s
    • Cada aplicación tiene objetivos distintos y se mueve entre nodos con el tiempo
    • Aun así, probablemente haya similitudes entre la mayoría de las aplicaciones
  • Me pregunto si vale la pena ajustar el tamaño del búfer de TCP
  • Existe la duda de si, si fuera tan fácil ajustar los parámetros a valores óptimos, el kernel no debería haberlo hecho así desde el principio
  • Es genial que haya evolucionado del simple filtrado de paquetes al tracing y monitoreo
    • Es una gran herramienta que la mayoría de la gente debería conocer
    • La he usado durante años