20 points par xguru 2024-11-19 | 2 commentaires | Partager sur WhatsApp
  • Outil léger conçu pour permettre un réglage automatique permanent des performances système en exploitant les capacités d’observation de BPF (eBPF)

Problèmes à résoudre

  • Trop d’options de réglage : le noyau Linux contient plus de 1 600 paramètres sysctl ajustables. Trouver les bons réglages pour des environnements variés est complexe et difficile
  • Réduction de l’intervention des administrateurs : dans les systèmes cloud modernes, une gestion automatisée est nécessaire plutôt qu’un réglage manuel. La plupart des systèmes reçoivent très peu d’intervention administrateur après leur configuration initiale
  • Limites des réglages statiques : comme l’environnement système évolue en permanence, régler avec des valeurs fixes peut être inefficace

Principes de conception clés

  • Surcharge minimale : éviter le suivi d’événements à haute fréquence et n’utiliser les fonctions d’observation qu’en cas de nécessité
  • Clarté de l’explication des politiques : consigner dans le syslog « ce qui » a été modifié et « pourquoi »
  • Priorité à l’administrateur : si un administrateur définit une valeur, la fonction de réglage automatique est désactivée
  • Principe sans configuration : réglage automatique sans configuration séparée. Évite autant que possible les magic numbers
  • Ajustement dynamique : si l’utilisation mémoire de TCP augmente, réduire la taille des buffers pour rééquilibrer le système

Concepts principaux

  • Tuner : chaque tuner traite les événements issus des programmes BPF et gère les paramètres de réglage associés
  • Stratégie : un tuner peut avoir plusieurs stratégies, chacune avec une fonction d’évaluation pour sélectionner la plus efficace
  • Événement : inclut l’ID du tuner, le scénario, les informations d’espace de noms réseau, etc., et le tuner s’appuie sur ces informations pour effectuer l’action appropriée

Architecture

  • bpftune fonctionne comme un daemon, charge et gère plusieurs tuners plugins au format .so.
  • Chaque tuner possède un ID unique et traite les événements dans BPF comme dans l’espace utilisateur.
  • Le composant BPF inclut bpftune.bpf.h et utilise des variables partagées ainsi que des définitions de maps.

Liste des tuners pris en charge

  • TCP connection tuner : réglage automatique de l’algorithme de contrôle de congestion
  • neighbour table tuner : extension automatique de la taille de la table des voisins
  • route table tuner : extension automatique de la taille de la table de routage
  • sysctl tuner : désactivation du tuner si une valeur sysctl ajustée entre en conflit avec une configuration manuelle
  • TCP buffer tuner : ajustement automatique de la taille des buffers TCP
  • net buffer tuner : ajustement automatique des réglages liés au réseau cœur
  • netns tuner : détection de l’ajout et de la suppression d’espaces de noms réseau

2 commentaires

 
xguru 2024-11-19

Avis Hacker News

  • Certains craignent qu’il devienne plus difficile de diagnostiquer et de résoudre les problèmes système
  • Le concept de « boucle de rétroaction » est important pour expliquer la possibilité de survenue de problèmes
    • Cela ne vient pas du noyau Linux, de BPF ou du programme lui-même, mais de la manière dont il fonctionne
    • Il se peut qu’il n’y ait aucun risque, qu’il existe des mécanismes de contrôle, et que même si un problème survient, le système converge vers un état stable
  • La théorie du contrôle semble quelque peu sous-utilisée en génie logiciel
  • J’aimerais entendre l’avis de personnes qui utilisent cet outil
    • Je me demande s’il est efficace et si le temps de configuration en vaut la peine
  • bpftune a été conçu comme un outil ne nécessitant aucune configuration
    • Il est appréciable de bénéficier d’une assistance automatisée sans avoir à apprendre de nombreux réglages
  • Il peut être utilisé directement dans CachyOS
    • Après l’installation, il est accessible via CachyOS Hello -> Apps/Tweaks
  • Je me demande quelle est son efficacité dans des environnements multi-tenant comme un cluster k8s partagé
    • Chaque application a des objectifs différents et se déplace entre les nœuds au fil du temps
    • Il est toutefois probable qu’il existe des similarités entre la plupart des applications
  • Je me demande si l’ajustement de la taille des buffers TCP en vaut la peine
  • Certains se demandent que, s’il était facile d’ajuster les paramètres à des valeurs optimales, le noyau n’aurait-il pas dû les définir ainsi dès le départ
  • Il est remarquable de voir l’évolution depuis le simple filtrage de paquets vers le tracing et le monitoring
    • C’est un excellent outil que la plupart des gens devraient connaître
    • Certains l’utilisent depuis plusieurs années