Linux 6.6.2 documentation

This commit is contained in:
2023-11-27 19:13:26 +01:00
parent ebc0eb86dd
commit 855f7a8493
3 changed files with 137 additions and 11 deletions

View File

@@ -74,7 +74,7 @@ prepare() {
echo "Setting config..." echo "Setting config..."
cp ../config .config cp ../config .config
make olddefconfig make olddefconfig
# make menuconfig make menuconfig
diff -u ../config .config || : diff -u ../config .config || :
make -s kernelrelease > version make -s kernelrelease > version

View File

@@ -1,16 +1,23 @@
% %
% Thomas Kuschel 2023 % Thomas Kuschel 2023
\newcommand{\version}{V6.5} \newcommand{\version}{V6.6}
\documentclass[10pt,a4paper]{article} \documentclass[10pt,a4paper]{article}
%\documentclass[12pt,a4paper]{report} %\documentclass[12pt,a4paper]{report}
\usepackage[a4paper,margin=25mm]{geometry} \usepackage[a4paper,margin=25mm]{geometry}
\usepackage[ngerman]{babel} %Verwendung von \glqq \qrgg{} \usepackage[ngerman]{babel} %Verwendung von \glqq \qrgg{}
\usepackage{hyperref} \usepackage{hyperref}
\setcounter{secnumdepth}{4}%numbering down to paragraphs \setcounter{secnumdepth}{5}%numbering down to paragraphs, subparagraphs
%% \usepackage{ulem} %strike through with /sout{} %% \usepackage{ulem} %strike through with /sout{}
% you have to install texlive-plaingeneric first : % you have to install texlive-plaingeneric first :
\usepackage{ulem} \usepackage{ulem}
% The following is to use subparagraph without intending:
\makeatletter
\renewcommand\subparagraph{%
\@startsection {subparagraph}{5}{\z@ }{3.25ex \@plus 1ex
\@minus .2ex}{-1em}{\normalfont \normalsize \bfseries }}%
\makeatother
\begin{document} \begin{document}
\section*{Linux Configuration \version} \section*{Linux Configuration \version}
@@ -228,18 +235,16 @@ zu diagnostizierenden Interrupt-Problemen.
\subsection{Timers subsystem \texorpdfstring{$\rightarrow$}{->}} \subsection{Timers subsystem \texorpdfstring{$\rightarrow$}{->}}
\subsubsection{Timer tick handling \texorpdfstring{$\rightarrow$}{->}} \subsubsection{Timer tick handling \texorpdfstring{$\rightarrow$}{->}}
Sie müssen aus den folgenden drei Möglichkeiten eine wählen: Sie müssen aus den folgenden drei Möglichkeiten eine wählen:
\paragraph{Periodic timer ticks (constant rate, no dynticks)} \paragraph{Periodic timer ticks (constant rate, no dynticks)} $~$ \\
CONFIG\_HZ\_PERIODIC [=n] \textbf{[N]}\\ CONFIG\_HZ\_PERIODIC [=n] \textbf{[N]}\\
Diese Option sorgt dafür, dass der Tick periodisch mit einer konstanten Rate läuft, Diese Option sorgt dafür, dass der Tick periodisch mit einer konstanten Rate läuft,
auch wenn die CPU ihn nicht braucht. auch wenn die CPU ihn nicht braucht.
\paragraph{Idle dynticks system (tickless idle)} \paragraph{Idle dynticks system (tickless idle)} $~$ \\
% \\
CONFIG\_NO\_HZ\_IDLE [=n] \textbf{[N]}\\ CONFIG\_NO\_HZ\_IDLE [=n] \textbf{[N]}\\
Diese Option ermöglicht ein tickloses idle-System (Leerlaufsystem): Diese Option ermöglicht ein tickloses idle-System (Leerlaufsystem):
Timer-Interrupts werden nur bei Bedarf ausgelöst, wenn das System im Timer-Interrupts werden nur bei Bedarf ausgelöst, wenn das System im
Leerlauf ist. Dies ist v.a. zum Energiesparen interessant. Leerlauf ist. Dies ist v.a. zum Energiesparen interessant.
\paragraph{Full dynticks system (tickless)} \paragraph{Full dynticks system (tickless)} $~$ \\
% \\
CONFIG\_NO\_HZ\_FULL [=y] \textbf{[Y]}\\ CONFIG\_NO\_HZ\_FULL [=y] \textbf{[Y]}\\
Diese Option ermöglicht ein tickloses idle-System (Leerlaufsystem): Diese Option ermöglicht ein tickloses idle-System (Leerlaufsystem):
Timer-Interrupts werden nur bei Bedarf ausgelöst, wenn das System im Timer-Interrupts werden nur bei Bedarf ausgelöst, wenn das System im
@@ -310,7 +315,7 @@ Beachten Sie, dass ein Administrator diese Funktion durch Ändern aktivieren sol
\indent\texttt{/proc/sys/net/core/bpf\_jit\_enable} \\ \indent\texttt{/proc/sys/net/core/bpf\_jit\_enable} \\
\indent\texttt{/proc/sys/net/core/bpf\_jit\_harden (optional)} \\ \indent\texttt{/proc/sys/net/core/bpf\_jit\_harden (optional)} \\
\indent\texttt{/proc/sys/net/core/bpf\_jit\_kallsyms (optional)} \indent\texttt{/proc/sys/net/core/bpf\_jit\_kallsyms (optional)}
\paragraph{Permanently enable BPF JIT and remove BPF interpreter\\} \paragraph{Permanently enable BPF JIT and remove BPF interpreter} $~$ \\
CONFIG\_BPF\_JIT\_ALWAYS\_ON [=y] \textbf{[Y]}\\ CONFIG\_BPF\_JIT\_ALWAYS\_ON [=y] \textbf{[Y]}\\
Aktiviert BPF JIT und entfernt den BPF-Interpreter um spekulative Ausführungen Aktiviert BPF JIT und entfernt den BPF-Interpreter um spekulative Ausführungen
von BPF-Anweisungen durch den Interpreter zu verhindern.\\ von BPF-Anweisungen durch den Interpreter zu verhindern.\\
@@ -334,7 +339,8 @@ Dadurch wird ein Kernelmodul mit mehreren eingebetteten BPF-Programmen erstellt,
die als für den Menschen lesbare Dateien in den BPF-FS-Einhängepunkt die als für den Menschen lesbare Dateien in den BPF-FS-Einhängepunkt
eingefügt werden, was bei der Fehlersuche und der Untersuchung von BPF-Programmen eingefügt werden, was bei der Fehlersuche und der Untersuchung von BPF-Programmen
und -Maps nützlich ist. und -Maps nützlich ist.
\paragraph{bpf\_preload kernel module} \paragraph{bpf\_preload kernel module\\} $~$ \\
\textit{Dies ist nur sichtbar wenn der übergeordnete Punkt aktiviert ist.}\\
CONFIG\_BPF\_PRELOAD\_UMD [=m] \textbf{[]}\\ CONFIG\_BPF\_PRELOAD\_UMD [=m] \textbf{[]}\\
Dadurch wird ein Kernelmodul mit mehreren eingebetteten BPF-Programmen Dadurch wird ein Kernelmodul mit mehreren eingebetteten BPF-Programmen
erstellt, die als für den Menschen lesbare Dateien in den BPF-FS-Einhängepunkt eingefügt werden, was bei der Fehlersuche und der Untersuchung von BPF-Programmen und -Maps nützlich ist. erstellt, die als für den Menschen lesbare Dateien in den BPF-FS-Einhängepunkt eingefügt werden, was bei der Fehlersuche und der Untersuchung von BPF-Programmen und -Maps nützlich ist.
@@ -397,7 +403,7 @@ koordinierten Auswahl von Aufgaben zwischen SMT-Geschwistern.
Wenn diese Option aktiviert ist - siehe prctl Wenn diese Option aktiviert ist - siehe prctl
(PR\_SCHED\_CORE) (PR\_SCHED\_CORE)
- stellt die Aufgabenauswahl sicher, dass alle SMT-Geschwister - stellt die Aufgabenauswahl sicher, dass alle SMT-Geschwister
eine Aufgabe aus der gleichen \"Kerngruppe\" ausführen und eine Aufgabe aus der gleichen \glqq Kerngruppe\grqq{} ausführen und
den Leerlauf erzwingen, wenn keine passende Aufgabe gefunden den Leerlauf erzwingen, wenn keine passende Aufgabe gefunden
wird. wird.
Diese Funktion wird unter anderem verwendet: Diese Funktion wird unter anderem verwendet:
@@ -410,4 +416,124 @@ bei Linux-Distributionen wahrscheinlich der Fall ist,
sollte es keine messbaren Auswirkungen auf die Leistung sollte es keine messbaren Auswirkungen auf die Leistung
haben. haben.
\subsection{CPU/Task time and stats accounting \texorpdfstring{$\rightarrow$}{->}}
\subsubsection{Cputime accounting (Full dynticks CPU time accounting) \texorpdfstring{$\rightarrow$}{->}}
\paragraph{Full dynticks CPU time accounting} $~$\\
CONFIG\_VIRT\_CPU\_ACCOUNTING\_GEN [=y] \textbf{[Y]}\\
Wählen Sie diese Option, um die Berechnung der Task- und CPU-Zeit auf
Full-Dynticks-Systemen zu aktivieren.
Diese Berechnung wird durch die Überwachung aller Kernel-Benutzer-Grenzen mithilfe des
Kontextverfolgungs-Subsystems implementiert.\\
Die Berechnung erfolgt daher auf Kosten eines erheblichen Overheads.\\
Im Moment ist dies nur sinnvoll, wenn Sie an der Entwicklung des vollständigen
Dynticks-Subsystems arbeiten.
\subsubsection{Fine granularity task level IRQ time accounting}
CONFIG\_IRQ\_TIME\_ACCOUNTING [=y] \textbf{[Y]}\\
Wählen Sie diese Option aus, um eine fein granulare Berechnung der
Task-Irq-Zeit zu aktivieren.
Dies geschieht durch das Lesen eines Zeitstempels bei jedem Übergang
zwischen dem softirq- und dem hardirq-Zustand, so dass es zu geringen
Leistungseinbußen kommen kann.\\
Im Zweifelsfall sagen Sie hier N für Nein.
\subsubsection{BSD Process Accounting}
CONFIG\_BSD\_PROCESS\_ACCT [=y] \textbf{[Y]}\\
Wenn Sie hier Y (für Ja) angeben, kann ein Programm auf Benutzerebene den Kernel
(über einen speziellen Systemaufruf) anweisen, Prozessabrechnungsinformationen
in eine Datei zu schreiben: Jedes Mal, wenn ein Prozess beendet wird, werden
Informationen über diesen Prozess vom Kernel an die Datei angehängt.
Die Informationen beinhalten Dinge wie die Erstellungszeit, den besitzenden
Benutzer, den Befehlsnamen, den Speicherverbrauch, das kontrollierende Terminal
usw. (die vollständige Liste kann in der acct-Struktur in
\textless{}file:include/linux/acct.h\textgreater{} gefunden werden).
Es obliegt dem Programm auf Benutzerebene, nützliche Dinge mit diesen
Informationen zu tun. Dies ist im Allgemeinen eine gute Idee, also sagen
Sie Y für Ja.
\paragraph{BSD Process Accounting version 3 file format} $~$\\
CONFIG\_BSD\_PROCESS\_ACCT\_V3 [=y] \textbf{[Y]}\\
Wenn Sie hier Y (für Ja) angeben, werden die Prozessabrechnungsinformationen
in ein neues Dateiformat geschrieben, das auch die Prozess-IDs der einzelnen
Prozesse und ihrer Eltern protokolliert. Beachten Sie, dass dieses
Dateiformat nicht mit den früheren v0/v1/v2-Dateiformaten kompatibel ist,
so dass Sie aktualisierte Werkzeuge für die Verarbeitung benötigen.
Eine vorläufige Version dieser Werkzeuge ist unter
\textless{}http://www.gnu.org/software/acct/\textgreater{} verfügbar.
\subsubsection{Export task/process statistics through netlink}
CONFIG\_TASKSTATS [=y] \textbf{[Y]}\\
Export ausgewählter Statistiken für Aufgaben/Prozesse über die generische
Netlink-Schnittstelle. Im Gegensatz zur BSD-Prozessabrechnung sind die
Statistiken während der Lebensdauer von Aufgaben/Prozessen als Antwort auf
Befehle verfügbar. Wie BSD-Accounting werden sie beim Beenden von Tasks in
den Benutzerbereich gesendet.\\
Sagen Sie N, wenn Sie unsicher sind.
\paragraph{Enable per-task delay accounting} $~$\\
CONFIG\_TASK\_DELAY\_ACCT [=y] \textbf{[Y]}\\
Sammeln Sie Informationen über die Zeit, die eine Task für das Warten auf
Systemressourcen wie CPU, synchrone Block-E/A-Abwicklung und Auslagerung
von Seiten aufwendet. Solche Statistiken können bei der Festlegung der
Prioritäten eines Tasks im Verhältnis zu anderen Tasks für CPU-, IO-,
RSS-Limits usw. helfen.\\
Sagen Sie N, wenn Sie unsicher sind.
\paragraph{Enable extended accounting over taskstats}$~$\\
CONFIG\_TASK\_XACCT [=y] \textbf{[Y]}\\
Sammeln von erweiterten Task-Accounting-Daten und Senden der Daten an
das Userland zur Verarbeitung über die Taskstats-Schnittstelle.\\
Sagen Sie N, wenn Sie unsicher sind.
\subparagraph{Enable per-task storage I/O accounting}$~$\\
CONFIG\_TASK\_IO\_ACCOUNTING [=y] \textbf{[Y]}\\
Sammeln von Informationen über die Anzahl
der Bytes an Speicher-E/A, die dieser Task verursacht hat.\\
Sagen Sie N, wenn Sie unsicher sind.
\subsubsection{Pressure stall information tracking}
CONFIG\_PSI [=y] \textbf{[Y]}\\
Sammeln Sie Metriken, die anzeigen, wie überlastet die CPU-, Speicher-
und IO-Kapazität im System sind.\\
Wenn Sie hier Y angeben, erstellt der Kernel /proc/pressure/ mit die
Druckstatistikdateien cpu, memory und io. Diese zeigen den Anteil der
Walltime an, in dem einige oder alle Tasks im System aufgrund der
Beanspruchung der jeweiligen Ressource verzögert sind.
In Kerneln mit cgroup-Unterstützung verfügen cgroups (nur cgroup2) über
cpu.pressure-, memory.pressure- und io.pressure-Dateien, die nur die
Druckstaus für die gruppierten Aufgaben zusammenfassen.\\
Weitere Einzelheiten finden Sie unter Documentation/accounting/psi.rst.\\
Sagen Sie N, wenn Sie unsicher sind.
\paragraph{Require boot parameter to enable pressure stall information tracking} $~$\\
CONFIG\_PSI\_DEFAULT\_DISABLED [=n] \textbf{[N]}\\
Wenn diese Option gesetzt ist, ist die Verfolgung von Druckstauinformationen
standardmäßig deaktiviert, kann aber durch die Übergabe von psi=1 auf der
Kernel-Befehlszeile beim Booten aktiviert werden.\\
Diese Funktion fügt dem Task-Wakeup- und Sleep-Pfad des Schedulers etwas Code hinzu.
Der Overhead ist zu gering, um gängige planungsintensive Arbeitslasten in der Praxis
zu beeinträchtigen (z. B. Webserver, Memcache), aber es zeigt sich in künstlichen
Scheduler-Stresstests, wie z. B. Hackbench.
Wenn Sie paranoid sind und nicht sicher, wofür der Kernel verwendet wird,
sagen Sie Y für Ja.\\
Sagen Sie N, wenn Sie unsicher sind.
\subsection{CPU isolation}
CONFIG\_CPU\_ISOLATION [=y] \textbf{[Y]}\\
Stellen Sie sicher, dass CPUs, auf denen kritische Aufgaben laufen,
nicht durch irgendwelche "Störquellen" wie ungebundene Workqueues, Timers,
kthreads usw. gestört werden.\\
Ungebundene Aufgaben werden auf Housekeeping-CPUs verlagert.
Dies wird durch den Boot-Parameter "isolcpus=" gesteuert.\\
Sagen Sie Y für ja, wenn Sie unsicher sind.
\subsection{RCU Subsystem \texorpdfstring{$\rightarrow$}{->}}
\end{document} \end{document}