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

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2c0b58458a245f3073953ed9650706e2134e851108f520d12813d84532f3e164
size 1703339
oid sha256:fb5e7e402ed03b81ec883292d54ea5e427016533c774714e3d2650dd5fee0423
size 1732585

View File

@@ -1,6 +1,6 @@
%
% Thomas Kuschel 2023
\newcommand{\version}{V6.7}
% Thomas Kuschel 2023-2025
\newcommand{\version}{V6.12}
% preconditions:
% install on ARCH linux:
% pacman -S texlive-plaingeneric
@@ -32,27 +32,27 @@
% Math mode with value and units framework, e.g. for 15.11.18.1
\usepackage{siunitx}
\newcommand{\siunitxversionfrom}{2023-07-31}% range-independent-prefix support added since that day
\IfPackageAtLeastTF{siunitx}{\siunitxversionfrom}
{% new version
%\newcommand{\siunitxversionfrom}{2023-07-31}% range-independent-prefix support added since that day
%\IfPackageAtLeastTF{siunitx}{\siunitxversionfrom}
%{% new version
\sisetup{
locale=DE,
exponent-to-prefix=true,
range-independent-prefix=true,
per-mode=symbol
}
\newcommand{\siunitxold}{}
}
{% old version
\sisetup{
locale=DE,
exponent-to-prefix=true,
per-mode=symbol
}
\newcommand{\siunitxold}{%
\\Please update your \LaTeX module \textit{siunitx}: The module is older then \siunitxversionfrom
}%
}%
%\newcommand{\siunitxold}{}
%}
%{% old version
%\sisetup{
% locale=DE,
% exponent-to-prefix=true,
% per-mode=symbol
%}
%\newcommand{\siunitxold}{%
%\\Please update your \LaTeX module \textit{siunitx}: The module is older then \siunitxversionfrom
%}%
%}%
\newcommand{\english}[1]{\textit{\scriptsize\selectlanguage{english}#1}\\[0.2em]}
@@ -130,20 +130,23 @@
\section*{Linux Configuration \version}
\subsection{Einführung}
Dieses Dokument dient zur Beschreibung von diversen Einstellungen
bei der Konfiguration mittels \texttt{ make menuconfig } unter Linux.\\
bei der Konfiguration z.\,B. mittels \texttt{ make menuconfig } unter Linux.\\
Es wird nicht näher darauf eingegangen, wie der Kernel kompiliert wird
oder welche Voreinstellungen, Programme etc. zum Kompilieren benötigt
werden.\\
Abweichungen zur bestehenden Arch-Linux-Konfiguration werden immer \colorbox{yellow!80}{gelb} markiert.\\
Original Texte, sofern geliefert (englischer Sprache) werden \textit{kursiv} und
etwas kleiner geschrieben.
Zu Beginn der jeweiligen Konfigurationszeile wird der Standardwert
(Default) angezeigt. Mein Vorschlag folgt danach.\\
Z.\,B. bei CONFIG\_WERROR~[=n]~\textbf{[Y]}\\
Z.\,B. bei CONFIG\_WERROR~\colorbox{yellow!80}{[=n]~\textbf{[Y]}}\\
Hier ist der Standarwert ein Nein [n], meine persönliche Einstellung ein Ja [Y].\\[0.5em]
\textit{\copyright KW4NZ, Thomas Kuschel\\Wenn Sie Tippfehler finden oder Korrekturen wünschen,
\textit{\copyright KW4NZ, Thomas Kuschel\\Wenn Sie Korrekturen wünschen,
dann schicken Sie dies mit Erläuterungen und dem Hinweis auf die obenstehende
Version \version ~an:
\href{mailto:oe1tkt@gmail.com}{oe1tkt@gmail.com}\\
\pdftexbanner}
\siunitxold
%\siunitxold
\subsection{Konfiguration für ein verteiltes Kompilieren auf mehreren Rechnern}
Sie sollten schon einiges an Erfahrung mit dem Kompilieren unter Linux mitbringen.

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$}{->}}