20 Punkte von xguru 2024-11-19 | 2 Kommentare | Auf WhatsApp teilen
  • Ein leichtgewichtiges Werkzeug, das so entwickelt wurde, dass es die Systemleistung mithilfe der Beobachtungsfunktionen von BPF (eBPF) kontinuierlich automatisch optimieren kann

Zu lösende Probleme

  • Zu viele Tuning-Optionen: Im Linux-Kernel gibt es mehr als 1600 über sysctl anpassbare Parameter. Geeignete Einstellungen für unterschiedliche Umgebungen zu finden, ist komplex und schwierig
  • Weniger Administrator-Eingriffe: In modernen Cloud-Systemen ist automatisierte Verwaltung wichtiger als manuelles Tuning. Die meisten Systeme werden nach der Ersteinrichtung kaum noch von Administratoren angepasst
  • Grenzen statischer Einstellungen: Da sich die Systemumgebung fortlaufend verändert, kann Tuning mit festen Werten ineffizient sein

Zentrale Designprinzipien

  • Minimaler Overhead: Vermeidet das Verfolgen hochfrequenter Ereignisse und nutzt Beobachtungsfunktionen nur dann, wenn es wirklich nötig ist
  • Klare Beschreibung der Richtlinien: Protokolliert in syslog, was und warum geändert wurde
  • Administrator hat Vorrang: Wenn ein Administrator einen Wert setzt, wird die automatische Tuning-Funktion deaktiviert
  • Prinzip ohne Konfiguration: Automatisches Tuning ohne zusätzliche Einstellungen. Vermeidet Magic Numbers so weit wie möglich
  • Dynamische Anpassung: Wenn der TCP-Speicherverbrauch steigt, wird die Puffergröße reduziert, um das System im Gleichgewicht zu halten

Wichtige Konzepte

  • Tuner: Jeder Tuner verarbeitet Ereignisse aus einem BPF-Programm und verwaltet die zugehörigen anpassbaren Parameter
  • Strategie: Ein Tuner kann mehrere Strategien haben; über eine Auswertungsfunktion wird die wirksamste Strategie ausgewählt
  • Ereignis: Enthält unter anderem Tuner-ID, Szenario und Informationen zum Netzwerk-Namespace; auf dieser Basis führt der Tuner geeignete Maßnahmen aus

Architektur

  • bpftune läuft als Daemon und lädt sowie verwaltet mehrere Plugin-Tuner im .so-Format
  • Jeder Tuner besitzt eine eindeutige ID und verarbeitet Ereignisse sowohl in BPF als auch im User Space
  • Die BPF-Komponente bindet bpftune.bpf.h ein und verwendet gemeinsam genutzte Variablen sowie Map-Definitionen

Liste unterstützter Tuner

  • TCP connection tuner: Automatisches Tuning des Congestion-Control-Algorithmus
  • neighbour table tuner: Automatische Erweiterung der Nachbartabellengröße
  • route table tuner: Automatische Erweiterung der Routing-Tabellengröße
  • sysctl tuner: Deaktiviert den Tuner, wenn abgestimmte sysctl-Werte mit manuellen Einstellungen kollidieren
  • TCP buffer tuner: Automatische Anpassung der TCP-Puffergröße
  • net buffer tuner: Automatische Anpassung des kernnahen Netzwerk-Tunings
  • netns tuner: Erkennt das Hinzufügen und Entfernen von Netzwerk-Namespaces

2 Kommentare

 
xguru 2024-11-19

Hacker-News-Kommentare

  • Es gibt Bedenken, dass die Diagnose und Behebung von Systemproblemen schwieriger werden könnte
  • Das Konzept der „Feedback-Schleife“ ist wichtig, um zu erklären, warum Probleme auftreten können
    • Es liegt nicht am Linux-Kernel, an BPF oder am Programm selbst, sondern an der Art, wie es arbeitet
    • Es könnte ungefährlich sein, es könnte Kontrollmechanismen geben, und selbst wenn Probleme auftreten, könnte sich das System in einen stabilen Zustand einpendeln
  • Regelungstechnik wird im Software Engineering etwas zu wenig angewendet
  • Ich würde gern die Meinung von Leuten hören, die dieses Tool verwenden
    • Ich frage mich, ob es effektiv ist und ob die Einrichtungszeit den Aufwand wert ist
  • bpftune wurde als Tool konzipiert, das keine Konfiguration erfordert
    • Es ist willkommen, automatisierte Unterstützung zu haben, ohne viele Einstellungen lernen zu müssen
  • Es kann direkt in CachyOS verwendet werden
    • Nach der Installation ist es über CachyOS Hello -> Apps/Tweaks erreichbar
  • Ich frage mich, wie gut es in Multi-Tenant-Umgebungen wie gemeinsam genutzten k8s-Clustern funktioniert
    • Jede Anwendung hat andere Ziele und wandert im Laufe der Zeit zwischen Nodes
    • Allerdings gibt es wahrscheinlich viele Gemeinsamkeiten zwischen den meisten Anwendungen
  • Ich frage mich, ob die Anpassung der TCP-Puffergröße lohnenswert ist
  • Wenn es so einfach wäre, Parameter auf optimale Werte einzustellen, hätte der Kernel das dann nicht von Anfang an so machen sollen?
  • Es ist großartig, dass sich das von einfachem Paketfiltering zu Tracing und Monitoring weiterentwickelt hat
    • Es ist ein großartiges Tool, das die meisten Menschen kennen sollten
    • Ich nutze es seit einigen Jahren