Eine Reihe von”Request for Comments”-Patches, die heute auf der Linux-Kernel-Mailingliste veröffentlicht wurden, implementieren Unterstützung für CPU-Scheduler-Richtlinien, die als (e)BPF-Programme implementiert werden sollen.
Der Linux-Kernel hat eine kontinuierliche Einführung von (e)BPF in verschiedenen Bereichen des Kernels erlebt. Eine der eBPF-Ergänzungen, die sich direkt am Horizont abzeichnen, ist die eBPF-Unterstützung für das HID-Subsystem, um schneller mit skurriler Hardware umzugehen und hoffentlich zu weniger redundanter Treiberabwanderung zu führen.
Tejun Heo gab heute die Arbeit des eBPF-Schedulers als Teil der Arbeit von ihm und mehreren anderen Kernel-Entwicklern bekannt. Die Überzeugung ist, dass die eBPF-Unterstützung für den Linux-Kernel-Scheduler das Experimentieren und Erkunden neuer Planungsrichtlinien erleichtern, anwendungsspezifische Planer und andere anpassbare Optionen durch das Laden benutzerdefinierter BPF-Programme ermöglichen und eine unterbrechungsfreie Möglichkeit für Änderungen bieten könnte Scheduling-Richtlinien in Produktionsumgebungen ausarbeiten.
Ingenieure von Google und Meta (Facebook) stehen hinter dieser Initiative. Als Fazit für die heutige RFC-Patch-Serie:
„Sowohl Meta als auch Google haben in den letzten Jahren ziemlich viel mit Schedulern experimentiert. Google hat verschiedene Workloads mithilfe von User Space Scheduling bewertet und durch Handel Leistungsgewinne erzielt Off-Allgemeinheit für anwendungsspezifische Anforderungen. Bei Meta haben wir sched_ext noch nicht für Produktions-Workloads bereitgestellt, obwohl unsere vorläufigen Experimente darauf hindeuten, dass sched_ext erhebliche Leistungsgewinne bringen würde, wenn es in großem Maßstab bereitgestellt wird. Bei erfolgreichem Upstreaming erwarten wir, dass wir es umfassend nutzen können, um es auszuführen verschiedene Experimente und die Entwicklung angepasster Planer für eine Reihe kritischer Workloads.
Abschließend glauben sowohl Meta als auch Google, dass sched_ext die Art und Weise, wie die breitere Community den Raum für Scheduling-Probleme untersucht, erheblich weiterentwickeln wird, wodurch eine kontinuierliche Verbesserung des In-Kernel-Schedulers ermöglicht wird Außerdem werden gezielte Richtlinien für benutzerdefinierte Anwendungen aktiviert. Wir können einfacher und schneller experimentieren Erkunden Sie unbekannte Gebiete und stellen Sie bei Bedarf Notfallplanungsänderungen bereit. Das Gleiche gilt für alle, die am Planer arbeiten möchten, einschließlich Hochschulen und spezialisierter Industrien. sched_ext wird den Stand der Technik vorantreiben, wenn es um Scheduling und Performance in Linux geht.”
Als Teil der heutigen Patches gibt es neben der Arbeit an der eBPF-Scheduler-Infrastruktur einen Beispiel-Scheduler dafür zeigt die meisten Scheduling-Entscheidungen, die in den User-Space verschoben werden. Ein weiterer Demonstrations-Scheduler ist ein hybrider Ansatz, bei dem Load-Balancing-Entscheidungen im User-Space getroffen werden und dieser Code in der Programmiersprache Rust geschrieben ist.
Weitere Details zu diesem sehr interessanten Vorschlag über die RFC-Patch-Reihe.