- 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
Hacker-News-Kommentare
bpftunewurde als Tool konzipiert, das keine Konfiguration erfordertCachyOSverwendet werdenCachyOS Hello->Apps/Tweakserreichbar