- Home »
- BPFTUNE, sistema de optimización automático para Linux
Hace poco Oracle dio a conocer mediante una publicación su nuevo sistema «bpftune» el cual esta diseñado para optimizar automáticamente la configuración del kernel de Linux en función de las tareas realizadas, la actividad del sistema y los patrones de carga.
El kernel de Linux contiene más de 1500 parámetros ajustables, ¡y configurar estos parámetros correctamente puede mejorar significativamente el rendimiento y la utilización del sistema! Durante años, hemos tratado de proporcionar las sugerencias correctas para estos parámetros ajustables, a través de notas de versión de software y valores predeterminados mejorados, pero muchas cargas del sistema se beneficiarán del ajuste dinámico de estos valores.
¡Presentamos bpftune, un configurador automático que monitorea sus cargas de trabajo y establece los valores correctos de los parámetros del kernel! bpftune es un proyecto de código abierto disponible en los repositorios de Oracle Linux
Sobre Bpftune
Bpftune monitorea continuamente el estado del sistema, ajusta de manera adaptativa los parámetros del kernel que afectan el rendimiento y evalúa el comportamiento cambiante para obtener resultados óptimos. Gracias a BPF, no solo se tienen en cuenta las estadísticas de todo el sistema, sino también los detalles del comportamiento de los componentes individuales, lo que, por ejemplo, permite ajustar la configuración a nivel de enchufes y dispositivos individuales.
La implementación de optimizaciones individuales se traslada a complementos que se cargan durante el inicio del proceso en forma de bibliotecas. Cada complemento que implementa una optimización particular contiene un controlador BPF que se ejecuta en el núcleo y un componente que se ejecuta en el espacio del usuario.
Los principales beneficios que proporciona son:
- Supervisión y ajuste continuos del comportamiento del sistema mediante el uso de características de observabilidad BPF (Berkeley Packet Filter).
- Ajustar el comportamiento del sistema en un nivel de grano fino, hecho posible porque podemos observar más detalles del estado del sistema usando BPF.
Todos los complementos utilizan un búfer de anillo BPF global común para pasar eventos del kernel al espacio del usuario. Los complementos se pueden seleccionar según las necesidades del administrador y también se pueden desactivar automáticamente si el administrador cambia manualmente la configuración del kernel asociada con ellos.
Durante el proceso de ajuste automático, bpftune intenta lograr el equilibrio óptimo entre el suministro y el consumo de recursos, teniendo en cuenta el impacto indirecto de los cambios. Por ejemplo, para aumentar el rendimiento, debe aumentar el tamaño del búfer de red, pero aumentarlo conduce a un mayor consumo de memoria y mayores retrasos en la transferencia de datos, por lo que estos parámetros deben tenerse en cuenta al aumentar el tamaño del búfer.
bpftune también está disponible en los repositorios ol9_developer y ol8_developer para Oracle Linux y se puede instalar a través de:
$ sudo yum install --enablerepo=ol9_developer bpftune
Para OL8:
$ sudo yum install --enablerepo=ol8_developer,ol8_UEKR7 bpftune
Para habilitar bpftune como servicio
$ sudo service bpftune start
... y habilitarlo de forma predeterminada
$ sudo systemctl enable bpftune
bpftune registra en syslog por lo que /var/log/messages contendrá detalles de cualquier ajuste realizado.
bpftune también se puede ejecutar en primer plano como un programa; Para redirigir la salida a Stdout/Stderr, ejecute
$ sudo bpftune -s
Al salir, bpftune resumirá cualquier ajuste realizado.
Simplemente iniciar bpftune y observar los cambios realizados a través de /var/log/messages puede ser instructivo. Por ejemplo, en una máquina virtual estándar con valores predeterminados de sysctl, ejecuté
$ service bpftune start
... y realizó actividades normales de desarrollo, como clonar árboles git aguas arriba, construir núcleos, etc. En el registro vemos algunos de los ajustes que bpftune realizó para acomodar estas actividades
$ sudo grep bpftune /var/log/messages
...
Apr 19 16:14:59 bpftest bpftune[2778]: bpftune works fully
Apr 19 16:14:59 bpftest bpftune[2778]: bpftune supports per-netns policy (via netns cookie)
Apr 19 16:18:40 bpftest bpftune[2778]: Scenario 'specify bbr congestion control' occurred for tunable 'TCP congestion control' in global ns. Because loss rate has exceeded 1 percent for a connection, use bbr congestion control algorithm instead of default
Apr 19 16:18:40 bpftest bpftune[2778]: due to loss events for 145.40.68.75, specify 'bbr' congestion control algorithm
Apr 19 16:26:53 bpftest bpftune[2778]: Scenario 'need to increase TCP buffer size(s)' occurred for tunable 'net.ipv4.tcp_rmem' in global ns. Need to increase buffer size(s) to maximize throughput
Apr 19 16:26:53 bpftest bpftune[2778]: Due to need to increase max buffer size to maximize throughput change net.ipv4.tcp_rmem(min default max) from (4096 131072 6291456) -> (4096 131072 7864320)
Apr 19 16:26:53 bpftest bpftune[2778]: Scenario 'need to increase TCP buffer size(s)' occurred for tunable 'net.ipv4.tcp_rmem' in global ns. Need to increase buffer size(s) to maximize throughput
Apr 19 16:26:53 bpftest bpftune[2778]: Due to need to increase max buffer size to maximize throughput change net.ipv4.tcp_rmem(min default max) from (4096 131072 7864320) -> (4096 131072 9830400)
Apr 19 16:29:04 bpftest bpftune[2778]: Scenario 'specify bbr congestion control' occurred for tunable 'TCP congestion control' in global ns. Because loss rate has exceeded 1 percent for a connection, use bbr congestion control algorithm instead of default
Apr 19 16:29:04 bpftest bpftune[2778]: due to loss events for 140.91.12.81, specify 'bbr' congestion control algorithm
Publicar un comentario