V6.12, ADD Extensible Scheduling Class

This commit is contained in:
2025-01-15 01:11:26 +01:00
parent 40064df958
commit 2960c40edc
8 changed files with 739 additions and 30 deletions

View File

@@ -330,7 +330,6 @@ Ermöglicht die Instrumentierung der Sicherheitshaken mit BPF-Programmen zur Imp
MAC- und Prüfungsrichtlinien. Wenn Sie unsicher sind, wie Sie diese Frage beantworten
sollten, antworten Sie mit N.
\subsection{Preemption Model (Preemptible Kernel (Low-Latency Desktop)) \texorpdfstring{$\rightarrow$}{->}}
Eingestellt auf : Low-Latency, d.\,h. nur kleine Verzögerungen beim Modell des Multitaskings.
Es gibt drei Einstellungen:
\subsubsection{No Forced Preemption (Server)}
@@ -342,14 +341,14 @@ keine Garantie dafür und es kann zu zufälligen, längeren Verzögerungszeiten
Für einen Serverbetrieb wird diese Einstellung empfohlen, damit der maximale Durchsatz an Rechenleistung
entsteht.
\subsubsection{Voluntary Kernel Preemption (Desktop)}
CONFIG\_PREEMPT\_VOLUNTARY [=n] \textbf{[N]}\\
CONFIG\_PREEMPT\_VOLUNTARY \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\
Diese Einstellung reduziert die Latenz des Kernels durch zusätzliche \glqq explizite Unterbrechungspunkte\glqq{}
im Kernel.
Diese neuen Unterbrechungspunkte wurden ausgewählt, um die maximale Latenz beim neuerlichen Zuordnen
des Schedulers zu reduzieren und dadurch schnelle Reaktionszeiten der Applikationen zu gewährleisten. --
Auf Kosten eines geringeren Durchsatzes wird dies erreicht.
\subsubsection{Preemptible Kernel (Low-Latency Desktop)}
CONFIG\_PREEMPT [=y] \textbf{[Y]}\\
CONFIG\_PREEMPT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Bei dieser Einstellung wird die Latenz des Kernels weiter erniedrigt indem der gesamte Code des Kernels
(keine kritischen, geschützten Bereiche) unterbrechbar gemacht wird. Dadurch wird ein reibungsloses
Arbeiten mit Applikationen aus Nutzersicht erreicht, sogar unter Volllast.
@@ -396,7 +395,50 @@ SCHED\_CORE ist standardmäßig deaktiviert. Wenn es aktiviert und unbenutzt ist
bei Linux-Distributionen wahrscheinlich der Fall ist,
sollte es keine messbaren Auswirkungen auf die Leistung
haben.
% 1.21 Extensible Scheduling Class (since 6.11)
\subsection{Extensible Scheduling Class {\tiny since 6.12}}
CONFIG\_SCHED\_CLASS\_EXT [=y] \textbf{[Y]}\\
Diese Option aktiviert eine neue Scheduler-Klasse sched\_ext (SCX), die es ermöglicht,
dass Scheduling-Richtlinien
als BPF-Programme implementiert werden können, um Folgendes zu erreichen:
\begin{itemize}
\item [-] Einfaches Experimentieren und Erforschen:
Ermöglicht die schnelle Iteration neuer Zeitplanungsrichtlinien.
\item [-] Anpassungsfähigkeit: Erstellung von anwendungsspezifischen Schedulern,
die Richtlinien implementieren, die für allgemeine Scheduler nicht anwendbar sind.
\item [-] Schnelle Scheduler-Implementierungen: Unterbrechungsfreie Auslagerung von Planungsrichtlinien
in Produktionsumgebungen.
\end{itemize}
sched\_ext nutzt die BPF-Funktion struct\_ops,
um eine Struktur zu definieren,
die Funktionsaufrufe und
Flags an BPF-Programme exportiert, die Zeitplanungsrichtlinien implementieren möchten.\\
Die struct\_ops-Struktur, die von
sched\_ext exportierte Struktur heißt struct sched\_ext\_ops und ist konzeptionell ähnlich wie
struct sched\_class.
Für weitere Informationen:\\
Dokumentation/scheduler/sched-ext.rst\\
\href{https://github.com/sched-ext/scx}{https://github.com/sched-ext/scx}\\[1em]
\begin{small}
\textit{
This option enables a new scheduler class sched\_ext (SCX), which
allows scheduling policies to be implemented as BPF programs to
achieve the following:
\begin{itemize}
\item[-] Ease of experimentation and exploration: Enabling rapid
iteration of new scheduling policies.
\item[-] Customization: Building application-specific schedulers which
implement policies that are not applicable to general-purpose schedulers.
\item[-] Rapid scheduler deployments: Non-disruptive swap outs of
scheduling policies in production environments.
\end{itemize}
sched\_ext leverages BPF struct\_ops feature to define a structure
which exports function callbacks and flags to BPF programs that
wish to implement scheduling policies. The struct\_ops structure
exported by sched\_ext is struct sched\_ext\_ops, and is conceptually
similar to struct sched\_class.}
\end{small}
\subsection{CPU/Task time and stats accounting \texorpdfstring{$\rightarrow$}{->}}
\subsubsection{Cputime accounting (Full dynticks CPU time accounting) \texorpdfstring{$\rightarrow$}{->}}