Aller au contenu

bpftune - Guide de tuning automatique du kernel avec eBPF

bpftune - Guide de tuning automatique du kernel avec eBPF

bpftune (par Oracle) est un daemon léger qui règle automatiquement les paramètres du kernel Linux en utilisant eBPF. Plutôt que d’exiger qu’un admin devine les valeurs sysctl, il observe le comportement réel du système via des probes eBPF — pression du buffer TCP, saturation de table de connexion, reclaim mémoire — et ajuste continuellement les paramètres pertinents au fur et à mesure que la charge change. Son principe directeur est d’être invisible : overhead quasi-zéro, aucune configuration requise, et il se retire délibérément de tout paramètre qu’un administrateur a défini manuellement.

Le tuning automatique change le comportement du kernel sur un système vivant. L’essayer sur les hôtes non-critiques et regarder les logs avant un déploiement large.

Prérequis

  • Kernel Linux avec support BPF et BTF (5.15+ recommandé)
  • Privilèges root (charge les programmes eBPF, écrit les sysctls)

Installation

PlatformCommande
Oracle Linux / Fedorasudo dnf install bpftune
Depuis la sourcegit clone https://github.com/oracle/bpftune && make && sudo make install
Servicesudo systemctl enable --now bpftune
Vérifierbpftune -h

Exécuter

CommandeDescription
sudo bpftuneExécuter au premier plan
sudo bpftune -dExécuter en tant que daemon
sudo systemctl start bpftuneDémarrer via systemd
sudo bpftune -sMontrer le résumé des tuners et l’état actuel
journalctl -u bpftune -fRegarder les décisions de tuning live

Options clés

FlagEffet
-dMode daemon
-sSortie résumé/status
-SSupprimer (dry-run) — log ce qu’il changerait
-LMode learning / comportement legacy
-rRollback les changements à la sortie
-l LEVELVerbosité du log
# Voir ce qu'il règlerait sans rien changer
sudo bpftune -S -l debug

Ce qu’il règle

TunerAjuste
TCP buffertcp_rmem / tcp_wmem sous pression de throughput
TCP congestionSélection d’algorithme de congestion
Limites de connexionsomaxconn, tailles de backlog quand les files overflow
Neighbour tableTailles de table ARP/ND quand les entrées sont dropped
Route tableRoute cache sizing
Netns / sysctlÉquivalents per-namespace où applicable

Comment fonctionne la boucle de retour

ÉtapeDétail
ObserverLes probes eBPF comptent les drops, overflows, événements de pression
DéciderSi un seuil est régulièrement touché, le paramètre est un goulot
AjusterÉlever la limite graduellement (jamais sans limite)
Re-observerConfirmer que le symptôme a disparu
Back offSi un admin a défini la valeur manuellement, la laisser seule

Cette boucle “observe, nudge, verify” est pourquoi elle peut tourner continuellement sans osciller.

Vérifier son effet

# Qu'a bpftune changé ?
sudo bpftune -s

# Confirmer un sysctl qu'elle a signalé comme ajusté
sysctl net.ipv4.tcp_rmem net.core.somaxconn

# Corréler avec le symptôme qu'elle fixait
ss -s                      # stats de socket/file d'attente
netstat -s | grep -i drop  # drops qui ont déclenché le tuning

Quand l’utiliser

ScénarioFit
Workloads variables/inconnusFort — s’adapte au fur et à mesure que la charge change
Instances cloud de tailles différentesFort — aucun tuning per-instance
Workload hautement tuné, fixeFaible — vos valeurs manuelles sont probablement meilleures
Contrôle de changement strictUtiliser -S dry-run en premier, ou ignorer

bpftune vs tuning manuel/profil

AspectbpftuneTuneDsysctl manuel
ModèleContinu, feedback-drivenProfils statiquesValeurs one-time
S’adapte à la chargeOuiNonNon
Config requiseAucuneChoisir un profilExpertise complète
Respecte les paramètres manuelsOui (se retire)ÉcraseN/A

Complète TuneD (profils statiques larges) et des outils directs comme cpupower ; bpftune cible spécifiquement les limites réseau/kernel.

Ressources