2496 lines
150 KiB
TeX
2496 lines
150 KiB
TeX
% since Linux 6.14
|
|
\section{General setup \texorpdfstring{$\rightarrow$}{->}}
|
|
|
|
\subsection{Compile also drivers which will not load}
|
|
CONFIG\_COMPILE\_TEST [=n] \textbf{[~]}\\
|
|
\textit{Kompilieren Sie auch Treiber, die nicht geladen werden können}\\
|
|
Einige Treiber können auf einer anderen Plattform kompiliert werden als
|
|
auf der, für die sie gedacht sind. Obwohl sie dort nicht geladen werden
|
|
können (oder selbst wenn sie geladen werden können, können sie aufgrund
|
|
fehlender Hardware-Unterstützung nicht verwendet werden), möchten
|
|
Entwickler, im Gegensatz zu Distributoren, solche Treiber vielleicht
|
|
trotzdem kompilieren und testen.
|
|
\english{Some drivers can be compiled on a different platform than they are intended to be run on.
|
|
Despite they cannot be loaded there (or even when they load they cannot be used due to missing HW support),
|
|
developers still, opposing to distributors, might want to build such drivers to compile-test them.
|
|
If you are a developer and want to build everything available, say Y here.
|
|
If you are a user/distributor, say N here to exclude useless drivers to be distributed.}
|
|
|
|
\subsection{Compile the kernel with warnings as errors}
|
|
CONFIG\_WERROR \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\
|
|
\textit{Den Kernel mit Fehlermeldungen bei Warnungen kompilieren}\\
|
|
Ein Build sollte keine Compiler-Warnungen ausgeben, dies aktiviert die
|
|
Flags \texttt{-Werror} (für C) und \texttt{-Dwarnings} (für Rust) um diese Regel
|
|
standardmäßig zu setzen. Bestimmte Warnungen von anderen Tools z.\,B. der
|
|
Linker könnte mit dieser Option Fehler generieren. Deaktivieren ist
|
|
sinnvoll, wenn Sie einen neuen (oder sehr alten) Compiler bzw. Linker
|
|
mit seltenen, ungewöhnlichen Warnungen haben. Haben Sie auf Ihrer
|
|
Architektur Probleme, dann müssen Sie diese Konfiguration deaktivieren,
|
|
um den Kernel erfolgreich zu bauen. Im Zweifelsfall sagen sie Y für Ja.
|
|
\english{A kernel build should not cause any compiler warnings, and this enables the `-Werror' (for C)
|
|
and `-Dwarnings' (for Rust) flags to enforce that rule by default.
|
|
Certain warnings from other tools such as the linker may be upgraded to errors with this option as well.\\
|
|
However, if you have a new (or very old) compiler or linker with odd and unusual warnings,
|
|
or you have some architecture with problems, you may need to disable this config option
|
|
in order to successfully build the kernel.\\
|
|
If in doubt, say Y.}
|
|
\note{Für den Laptop wird der Kernel ohne Warnungen kompiliert, ansonsten wird ein Fehler generiert.}
|
|
|
|
\subsection{Local version -- append to kernel release}
|
|
CONFIG\_LOCALVERSION [=] \textbf{[~]}\\
|
|
\textit{Lokale Version -- an die Kernelversion anhängen}\\
|
|
Type: string\\
|
|
Hängen Sie eine zusätzliche Zeichenkette an das Ende Ihrer Kernelversion
|
|
an.\\
|
|
Dies wird angezeigt, wenn Sie z.\,B. \texttt{uname} eingeben. Die hier
|
|
angegebene Zeichenfolge wird an den Inhalt von einem Dateinamen mit
|
|
\texttt{localverion*} als Objekt und im Quellbaum, in dieser Reihenfolge
|
|
angezeigt. Die Zeichenkette darf maximal 64 Zeichen lang sein.
|
|
\english{Append an extra string to the end of your kernel version.
|
|
This will show up when you type uname, for example.
|
|
The string you set here will be appended after the contents of any files with a filename matching
|
|
localversion* in your object and source tree, in that order.
|
|
Your total string can be a maximum of 64~characters.}
|
|
|
|
%1.4
|
|
\subsection{Automatically append version information to the version string}
|
|
CONFIG\_LOCALVERSION\_AUTO [=y] \textbf{[Y]}\\
|
|
Dies versucht automatisch festzustellen, ob der aktuelle Baum ein
|
|
Release-Tree ist, indem es nach \textbf{Git}-Tags sucht, die zur aktuellen
|
|
Top-of-Tree"=Revision gehören.\\
|
|
Eine Zeichenkette des Formats \texttt{-gxxxxxxxx} wird der lokalen Version
|
|
hinzugefügt, wenn ein git-basierter Baum gefunden wird. Die so erzeugte
|
|
Zeichenkette wird nach allen passenden \glqq localversion*\grqq -Dateien
|
|
und nach dem in CONFIG\_LOCALVERSION eingestellten Wert angehängt. (Die hier
|
|
tatsächlich verwendete Zeichenkette sind die ersten 12~Zeichen, die durch
|
|
die Ausführung des Befehls erzeugt werden:\\
|
|
\indent\texttt{\$ git rev-parse --verify HEAD}\\
|
|
der innerhalb des Skripts \glqq scripts/setlocalversion\grqq{} ausgeführt wird.)
|
|
\english{This will try to automatically determine if the current tree is a release tree by
|
|
looking for git tags that belong to the current top of tree revision.\\
|
|
A string of the format -gxxxxxxxx will be added to the localversion if a git-based tree is found.
|
|
The string generated by this will be appended after any matching localversion* files,
|
|
and after the value set in CONFIG\_LOCALVERSION.\\
|
|
(The actual string used here is the first 12 characters produced by running the command:\\
|
|
\texttt{\$ git rev-parse --verify HEAD}\\
|
|
which is done within the script ``scripts/setlocalversion''.)}
|
|
|
|
\subsection{Build ID Salt}
|
|
CONFIG\_BUILD\_SALT [=] \textbf{[~]}\\
|
|
Type: string\\
|
|
Dies wird verwendet, um die Binaries und ihre Debug-Infos zu verknüpfen.
|
|
Wenn diese Option gesetzt ist, dann wird dieser Wert in die Berechnung der
|
|
Build-ID einbezogen. Wird von Distributionen verwendet, die sicherstellen
|
|
wollen, dass es eineindeutige IDs zwischen verschiedenen Builds gibt.
|
|
Üblicherweise brauchen wir das nicht.
|
|
\english{The build ID is used to link binaries and their debug info.
|
|
Setting this option will use the value in the calculation of the build id.
|
|
This is mostly useful for distributions which want to ensure the build is unique between builds.
|
|
It's safe to leave the default.}
|
|
|
|
\subsection{Kernel compression mode \texorpdfstring{$\rightarrow$}{->}}
|
|
Der Linux-Kernel ist eine Art selbstextrahierende, ausführbare Datei.
|
|
Es stehen mehrere Kompressionsalgorithmen zur Verfügung, die sich in
|
|
Effizienz, Kompressions- und Dekompressionsgeschwindigkeit unterscheiden.
|
|
Die Komprimierungsgeschwindigkeit ist nur bei der Erstellung eines Kernels
|
|
relevant. Die Dekomprimierungsgeschwindigkeit ist bei jedem Systemstart
|
|
von Bedeutung. (Eine ältere Version dieser Funktionalität (nur bzip2)
|
|
für 2.4 wurde von Christian Ludwig bereitgestellt)
|
|
Hohe Komprimierungsoptionen sind vor allem für Benutzer nützlich, die
|
|
wenig Festplattenplatz zur Verfügung haben (embedded systems), für die
|
|
aber die Ram-Größe weniger wichtig ist.\\
|
|
Überblick: Gzip werden von den älteren Kernelversionen unterstützt,\\
|
|
Arch Linux (seit Linux/x86 5.9.0) Standard: ZSTD (former: XZ seit 4.14.4, predecessor GZIP,XZ)\\
|
|
Debian 11.6: XZ\\
|
|
@TODO Weitere Linux Distributionen
|
|
\english{The linux kernel is a kind of self-extracting executable.
|
|
Several compression algorithms are available, which differ in efficiency, compression and decompression speed.
|
|
Compression speed is only relevant when building a kernel.
|
|
Decompression speed is relevant at each boot.
|
|
If you have any problems with bzip2 or lzma compressed kernels, mail me
|
|
(Alain Knaff) $<$alain\@knaff.lu$>$.
|
|
(An older version of this functionality (bzip2 only), for 2.4, was supplied by Christian Ludwig)\\
|
|
High compression options are mostly useful for users, who are low on disk space (embedded systems),
|
|
but for whom ram size matters less. If in doubt, select `gzip'}
|
|
|
|
\subsubsection{Gzip}
|
|
CONFIG\_KERNEL\_GZIP [=n] \textbf{[~]}\\
|
|
Die alte und bewährte gzip-Kompression. Sie bietet ein gutes
|
|
Gleichgewicht zwischen Kompressionsrate und Dekompressionsgeschwindigkeit.
|
|
\english{The old and tried gzip compression. It provides a good balance between compression ratio and decompression speed.}
|
|
\subsubsection{Bzip2}
|
|
CONFIG\_KERNEL\_BZIP2 [=n] \textbf{[~]}\\
|
|
Die Kompressionsrate und auch die Geschwindigkeit der ist durchschnittlich. Die Geschwindigkeit
|
|
der Dekomprimierung ist die langsamste. Größe des Kernels ist etwa $\qty{10}{\percent}$ kleiner
|
|
im Vergleich zu GZIP. Es benötigt auch einen großen Speicherbereich, bei
|
|
modernen Kerneln benötigt man zumindest 8~MB~RAM oder mehr beim Booten.
|
|
\english{Its compression ratio and speed is intermediate.
|
|
Decompression speed is slowest among the choices.
|
|
The kernel size is about \qty{10}{\percent} smaller with bzip2, in comparison to gzip.
|
|
Bzip2 uses a large amount of memory. For modern kernels you will need at least 8MB RAM or more for booting.}
|
|
|
|
\subsubsection{LZMA}
|
|
CONFIG\_KERNEL\_LZMA [=n] \textbf{[~]}\\
|
|
Dieser Kompressionsalgorithmus hat die höchste Komprimierung. Die Geschwindigkeit der
|
|
Dekomprimierung liegt zwischen GZIP und BZIP2.
|
|
Komprimierung ist die langsamste. Kernelgröße beträgt etwa $\qty{33}{\percent}$
|
|
weniger als mit GZIP.
|
|
\english{This compression algorithm's ratio is best.
|
|
Decompression speed is between gzip and bzip2.
|
|
Compression is slowest.
|
|
The kernel size is about \qty{33}{\percent} smaller with LZMA in comparison to gzip.}
|
|
|
|
\subsubsection{XZ}
|
|
CONFIG\_KERNEL\_XZ [=n] \textbf{[~]}\\
|
|
XZ verwendet den LZMA2-Algorithmus und befehlssatzspezifische
|
|
BCJ-Filter, die das Komprimierungs\-verhältnis des ausführbaren
|
|
Codes verbessern können. Die Größe des Kernels ist mit XZ im
|
|
Vergleich zu GZIP etwa $\qty{30}{\percent}$ kleiner. Auf Architekturen, für die
|
|
es einen BCJ-Filter gibt (i386, x86\_64, ARM, IA-64, PowerPC und
|
|
SPARC), erzeugt XZ einen um einige Prozent kleineren Kernel als
|
|
einfaches LZMA.
|
|
Die Geschwindigkeit ist in etwa die gleiche wie bei LZMA: Die Dekomprimierungsgeschwindigkeit von
|
|
XZ ist besser als die von bzip2, aber schlechter als die von gzip und LZO.
|
|
Die Komprimierung ist langsam.
|
|
\english{XZ uses the LZMA2 algorithm and instruction set specific BCJ filters which can improve
|
|
compression ratio of executable code.
|
|
The size of the kernel is about \qty{30}{\percent} smaller with XZ in comparison to gzip.
|
|
On architectures for which there is a BCJ filter (i386, x86\_64, ARM, ARM64, RISC-V, big endian PowerPC,
|
|
and SPARC), XZ will create a few percent smaller kernel than plain LZMA.\\
|
|
The speed is about the same as with LZMA: The decompression speed of XZ is better than that of
|
|
bzip2 but worse than gzip and LZO. Compression is slow.}
|
|
|
|
%1.6.5
|
|
\subsubsection{LZO}
|
|
CONFIG\_KERNEL\_LZO [=n] \textbf{[~]}\\
|
|
Kompressionsrate ist die schlechteste aller anderen. Kernelgröße ist etwa $\qty{10}{\percent}$
|
|
größer als GZIP.
|
|
Jedoch ist die Geschwindigkeit beim Komprimieren und Dekomprimieren die höchste.
|
|
\english{Its compression ratio is the poorest among the choices.
|
|
The kernel size is about \qty{10}{\percent} bigger than gzip; however its speed
|
|
(both compression and decompression) is the fastest.}
|
|
|
|
\subsubsection{LZ4}
|
|
CONFIG\_KERNEL\_LZ4 [=n] \textbf{[~]}\\
|
|
LZ4 ist eine LZ77-Typ-Komprimierung mit einer festen, byte"=orientierten Enkodierung.\\
|
|
Siehe auch \url{http://code.google.com/p/lz4}.\\
|
|
Komprimierungsverhältnis ist noch schlechter als LZO. $\qty{8}{\percent}$ größere Kernelgröße als bei LZO.
|
|
Dekomprimierung ist jedoch von der Geschwindigkeit her schneller als LZO.
|
|
\english{LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding.
|
|
A preliminary version of LZ4 de/compression tool is available at
|
|
\url{https://code.google.com/p/lz4/}.\\
|
|
Its compression ratio is worse than LZO.
|
|
The size of the kernel is about \qty{8}{\percent} bigger than LZO.
|
|
But the decompression speed is faster than LZO.}
|
|
|
|
\subsubsection{ZSTD}
|
|
CONFIG\_KERNEL\_ZSTD [=y] \textbf{[Y]}\\
|
|
ZSTD ist ein Komprimierungsalgorithmus, der auf eine Zwischenkomprimierung
|
|
mit schneller Dekomprimierungsgeschwindigkeit abzielt. Er
|
|
komprimiert besser als GZIP und dekomprimiert etwa so schnell wie
|
|
LZO, ist aber langsamer als LZ4. Sie benötigen mindestens
|
|
192~KB~RAM oder mehr zum Booten. Das Kommandozeilenprogramm \texttt{zstd}
|
|
ist für die Komprimierung erforderlich.
|
|
\english{ZSTD is a compression algorithm targeting intermediate compression with fast decompression speed.
|
|
It will compress better than GZIP and decompress around the same speed as LZO, but slower than LZ4.
|
|
You will need at least 192~KB~RAM or more for booting.
|
|
The zstd command line tool is required for compression.}
|
|
|
|
\subsection{Default init path}
|
|
CONFIG\_DEFAULT\_INIT [=] \textbf{[~]}\\
|
|
Diese Option legt den Standard"=Init"=Pfad für das System fest,
|
|
wenn in der Kernel-Befehlszeile keine solche \texttt{init=}"=Option übergeben wird.
|
|
Wenn der angeforderte Pfad nicht vorhanden ist, wird trotzdem versucht,
|
|
weitere Orte zu finden (z.\,B. /sbin/init usw.). Wenn dieser Pfad leer ist,
|
|
wird einfach die Fallback-Liste verwendet, wenn \texttt{init=} nicht übergeben wird.
|
|
\english{This option determines the default init for the system if no \texttt{init=option} is passed on the kernel command line.
|
|
If the requested path is not present, we will still then move on to attempting further locations (e.g. /sbin/init, etc).
|
|
If this is empty, we will just use the fallback list when \texttt{init=} is not passed.}
|
|
|
|
%1.8
|
|
\subsection{Default hostname}
|
|
CONFIG\_DEFAULT\_HOSTNAME \colorbox{yellow!80}{[=archlinux]~\textbf{[=orange]}}\\
|
|
Diese Option legt den Standard-Hostnamen des Systems fest,
|
|
noch bevor der Userspace das Kommando sethostname(2) aufruft.
|
|
Der Kernel verwendet hier traditionell ''(none)'', Sie möchten
|
|
vielleicht eine andere Voreinstellung verwenden, um ein minimales
|
|
System mit weniger Konfiguration benutzbar zu machen.
|
|
\english{This option determines the default system hostname before userspace calls sethostname(2).
|
|
The kernel traditionally uses ``(none)'' here, but you may wish to use a different default here to make a minimal system more usable with less configuration.}
|
|
|
|
\subsection{System V IPC}
|
|
CONFIG\_SYSVIPC [=y] \textbf{[Y]}\\
|
|
Die Inter-Prozess-Kommunikation IPC ist eine Zusammenstellung
|
|
aus Bibliotheksfunktionen (libraries) und Systemaufrufen die Prozesse (laufende Programme)
|
|
synchronisiert und Daten untereinander austauschen kann. Generell ist das eine gute Sache,
|
|
einige Programme würden auch nicht funktionieren wenn Sie hier kein Y (ja) setzen.
|
|
Insbesondere, wenn Sie den DOS-Emulator \texttt{dosemu} unter Linux laufen lassen wollen (lesen Sie das DOSEMU-HOWTO, verfügbar unter
|
|
\url{http://www.tldp.org/docs.html\#howto}), müssen Sie hier Y sagen.\\
|
|
Sie können Dokumentation über IPC mit \texttt{info ipc} und auch in Abschnitt 6.4 des Linux Programmer's Guide finden,
|
|
verfügbar unter \url{http://www.tldp.org/guides.html}.
|
|
\english{Inter Process Communication is a suite of library functions and system calls which let processes (running programs) synchronize and exchange information.
|
|
It is generally considered to be a good thing, and some programs won't run unless you say Y here.
|
|
In particular, if you want to run the DOS emulator \texttt{dosemu} under Linux (read the DOSEMU-HOWTO, available from
|
|
\url{http://www.tldp.org/docs.html\#howto}), you'll need to say Y here.\\
|
|
You can find documentation about IPC with ``info ipc'' and also in section 6.4 of the Linux Programmer's Guide,
|
|
available from \url{http://www.tldp.org/guides.html}.}
|
|
|
|
%1.10
|
|
\subsection{POSIX Message Queues}
|
|
CONFIG\_POSIX\_MQUEUE [=y] \textbf{[Y]}\\
|
|
Die POSIX-Variante der Nachrichtenwarteschlangen (message queues) ist ein Teil der IPC.
|
|
In POSIX"=Nachrichtenwarteschlangen hat jede Nachricht eine Priorität, die über die Reihenfolge
|
|
des Empfangs durch einen Prozess entscheidet.
|
|
Wenn Sie Programme kompilieren und ausführen wollen, die z.\,B. für Solaris geschrieben wurden und die POSIX"=Warteschlangen
|
|
(Funktionen \texttt{mq\_$\ast$}) verwenden, sagen Sie hier Y.
|
|
POSIX"=Nachrichtenwarteschlangen sind als Dateisystem mit dem Namen \glqq mqueue\grqq{} sichtbar und können irgendwo
|
|
eingehängt werden, wenn Sie Dateisystemoperationen auf Nachrichtenwarteschlangen durchführen wollen.
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{POSIX variant of message queues is a part of IPC.
|
|
In POSIX message queues every message has a priority which decides about succession of receiving it by a process.
|
|
If you want to compile and run programs written e.g. for Solaris with use of its POSIX message queues (functions mq\_*) say Y here.\\
|
|
POSIX message queues are visible as a filesystem called `mqueue' and can be mounted somewhere if you want to do filesystem operations on message queues.\\
|
|
If unsure, say Y.}
|
|
|
|
\subsection{General notification queue}
|
|
CONFIG\_WATCH\_QUEUE \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Dies ist eine allgemeine Benachrichtigungswarteschlange für den Kernel,
|
|
um Ereignisse an den Userspace weiterzuleiten, indem sie in Pipes gesplittet werden.
|
|
Sie kann in Verbindung mit Watches für Schlüssel-/Schlüsseländerungsbenachrichtigungen (key/keyring) und
|
|
Gerätebenachrichtigungen verwendet werden.\\
|
|
Siehe \texttt{Documentation/core-api/watch\_queue.rst}.
|
|
\english{This is a general notification queue for the kernel to pass events to userspace by splicing them into pipes.
|
|
It can be used in conjunction with watches for key/keyring change notifications and device notifications.\\
|
|
See \texttt{Documentation/core-api/watch\_queue.rst}}
|
|
\note{Bemerkung: Bei Debian Bullseye and Bookworm ist dies nicht gesetzt (N).\\
|
|
Eventuell benützt dies bereits GNOME, wir kommen derzeit vermutlich ohne aus.}
|
|
|
|
|
|
\subsection{Enable process\_vm\_readv/writev\ syscalls}
|
|
CONFIG\_CROSS\_MEMORY\_ATTACH [=y] \textbf{[Y]}\\
|
|
Die Aktivierung dieser Option fügt die Systemaufrufe process\_vm\_readv und
|
|
process\_vm\_writev hinzu, die es einem Prozess mit den richtigen Rechten ermöglichen,
|
|
direkt aus dem Adressraum eines anderen Prozesses zu lesen oder in diesen zu schreiben.
|
|
Weitere Einzelheiten finden Sie in der Manpage.
|
|
\english{Enabling this option adds the system calls process\_vm\_readv and process\_vm\_writev which allow a process with the correct privileges
|
|
to directly read from or write to another process' address space. See the man page for more details.}
|
|
|
|
\subsection{uselib syscall (for libc5 and earlier)}
|
|
CONFIG\_USELIB [=n] \textbf{[N]}\\
|
|
Diese Option schaltet den uselib-Systemaufruf ein, der im dynamic"=Linker von libc5 und früher verwendet wird.
|
|
Das aktuelle glibc verwendet diesen Systemaufruf nicht mehr, deshalb kann man diese Option
|
|
ausschalten wenn sie
|
|
keine Programme mehr verwenden, die auf libc5 (oder früher) compiliert wurden.\\
|
|
\english{This option enables the uselib syscall, a system call used in the dynamic linker from libc5 and earlier.
|
|
glibc does not use this system call.
|
|
If you intend to run programs built on libc5 or earlier, you may need to enable this syscall.
|
|
Current systems running glibc can safely disable this.}
|
|
\note{Bemerkung: Debian Bullseye verwendet dies noch (Y).}
|
|
|
|
%1.14
|
|
\subsection{Auditing support}
|
|
CONFIG\_AUDIT [=y] \textbf{[Y]}\\
|
|
Aktivieren Sie eine Überwachungsinfrastruktur, die mit einem anderen Kernel-Subsystem
|
|
verwendet werden kann, wie z.\,B. SELinux (das dies für die Protokollierung der Ausgabe von avc-Nachrichten benötigt).
|
|
Die Systemaufrufüberprüfung ist auf Architekturen, die sie unterstützen, enthalten.
|
|
\english{Enable auditing infrastructure that can be used with another kernel subsystem, such as SELinux (which requires this for logging of avc messages output).\\
|
|
System call auditing is included on architectures which support it.}
|
|
|
|
%1.15 IRQ subsystem
|
|
\subsection{IRQ subsystem \texorpdfstring{$\rightarrow$}{->}}
|
|
Über diese Schnittstelle kann man Funktionen und Parameter für den
|
|
Kernelbau auswählen.
|
|
Merkmale können entweder eingebaut, modularisiert oder ignoriert werden.
|
|
Parameter müssen als dezimale oder hexadezimale Zahlen oder als Text eingegeben
|
|
werden.
|
|
\english{This interface lets you select features and parameters for the build.
|
|
Features can either be built-in, modularized, or ignored.
|
|
Parameters must be entered in as decimal or hexadecimal numbers or text.}
|
|
|
|
\subsubsection{Expose irq internals in debugfs}
|
|
CONFIG\_GENERIC\_IRQ\_DEBUGFS [=n] \textbf{[N]}\\
|
|
Legt interne Zustandsinformationen über debugfs offen.
|
|
Hauptsächlich für Entwickler und zur Fehlersuche bei schwer
|
|
zu diagnostizierenden Interrupt-Problemen.
|
|
Wenn Sie nicht wissen, was Sie hier tun sollen, sagen Sie N.
|
|
\english{Exposes internal state information through debugfs.
|
|
Mostly for developers and debugging of hard to diagnose interrupt problems.
|
|
If you don't know what to do here, say N.}
|
|
|
|
%1.16 Timers subsystem
|
|
\subsection{Timers subsystem \texorpdfstring{$\rightarrow$}{->}}
|
|
\textit{Teilsystem Zeitgeber}
|
|
|
|
\subsubsection{Timer tick handling \texorpdfstring{$\rightarrow$}{->}}
|
|
Sie müssen aus den folgenden drei Möglichkeiten eine wählen:
|
|
|
|
\paragraph{Periodic timer ticks (constant rate, no dynticks)} $~$ \\
|
|
CONFIG\_HZ\_PERIODIC [=n] \textbf{[N]}\\
|
|
Diese Option sorgt dafür, dass der Tick periodisch mit einer konstanten Rate läuft,
|
|
auch wenn die CPU ihn nicht braucht.
|
|
\english{This option keeps the tick running periodically at a constant rate, even when the CPU doesn't need it.}
|
|
|
|
\paragraph{Idle dynticks system (tickless idle)} $~$ \\
|
|
CONFIG\_NO\_HZ\_IDLE [=n] \textbf{[N]}\\
|
|
Diese Option ermöglicht ein tickloses idle-System (Leerlaufsystem):
|
|
Timer-Interrupts werden nur bei Bedarf ausgelöst, wenn das System im
|
|
Leerlauf ist. Dies ist v.a. zum Energiesparen interessant.
|
|
\english{This option enables a tickless idle system: timer interrupts will only trigger on an as-needed basis when the system is idle.
|
|
This is usually interesting for energy saving.\\
|
|
Most of the time you want to say Y here.}
|
|
|
|
\paragraph{Full dynticks system (tickless)} $~$ \\
|
|
CONFIG\_NO\_HZ\_FULL [=y] \textbf{[Y]}\\
|
|
Adaptiv versuchen, die Ticks abzuschalten, wann immer dies möglich ist, auch wenn die CPU Aufgaben ausführt.
|
|
Normalerweise erfordert dies die Ausführung einer einzelnen Aufgabe auf der CPU.
|
|
Die Chancen für einen ticklosen Betrieb sind am größten, wenn die Aufgabe größtenteils im Userspace läuft und wenig Kernelaktivität aufweist.
|
|
Sie müssen den Boot-Parameter nohz\_full mit dem gewünschten Bereich von dynticks CPUs auffüllen, um ihn zu verwenden.
|
|
Dies wird auf Kosten eines gewissen Overheads bei Benutzer $\leftrightarrow$ Kernel-Übergängen implementiert:
|
|
syscalls, exceptions und interrupts.\\
|
|
Standardmäßig, ohne Übergabe des nohz\_full-Parameters, verhält sich dies genau wie NO\_HZ\_IDLE.
|
|
Wird bei Linux-Distributionen ausgewählt.
|
|
\english{Adaptively try to shutdown the tick whenever possible, even when the CPU is running tasks.
|
|
Typically this requires running a single task on the CPU.
|
|
Chances for running tickless are maximized when the task mostly runs in userspace and has few kernel activity.\\
|
|
You need to fill up the nohz\_full boot parameter with the desired range of dynticks CPUs to use it.
|
|
This is implemented at the expense of some overhead in user $\leftrightarrow$ kernel transitions:
|
|
syscalls, exceptions and interrupts.\\
|
|
By default, without passing the nohz\_full parameter, this behaves just like NO\_HZ\_IDLE.
|
|
If you're a distro say Y.}
|
|
|
|
\subsubsection{Force user context tracking}
|
|
CONFIG\_CONTEXT\_TRACKING\_USER\_FORCE [=n] \textbf{[N]}\\
|
|
Die wichtigste Voraussetzung für das Funktionieren von Full-Dynticks ist die
|
|
Unterstützung des Subsystems zur Verfolgung des Benutzerkontextes.
|
|
Es gibt aber auch noch andere Abhängigkeiten, die erfüllt werden müssen, damit
|
|
die vollständigen Dynticks funktionieren.\\
|
|
Diese Option dient zum Testen, wenn eine Systemarchitektur das Backend für die
|
|
Benutzerkontextverfolgung implementiert, aber noch nicht alle Anforderungen erfüllt,
|
|
um die volle Dynticks-Funktion zu ermöglichen.
|
|
Ohne die vollständigen Dynticks gibt es keine Möglichkeit,
|
|
die Unterstützung für die Benutzerkontextverfolgung und die Teilsysteme,
|
|
die darauf angewiesen sind, zu testen: RCU Userspace extended quiescent state
|
|
und tickless cputime accounting. Diese Option kommt mit dem Fehlen des vollständigen
|
|
dynticks-Subsystems zurecht, indem sie die Benutzerkontextverfolgung auf
|
|
allen CPUs im System erzwingt.
|
|
|
|
Sagen Sie nur dann ja (Y), wenn Sie an der Entwicklung eines Architektur-Backends
|
|
für die Benutzerkontextverfolgung arbeiten.
|
|
Sagen Sie ansonsten N, da diese Option einen Overhead mit sich bringt, den Sie in
|
|
der Praxis nicht haben wollen.
|
|
\english{The major pre-requirement for full dynticks to work is to support the user context tracking subsystem.
|
|
But there are also other dependencies to provide in order to make the full dynticks working.\\
|
|
This option stands for testing when an arch implements the user context tracking backend but doesn't yet fulfill all the requirements to make
|
|
the full dynticks feature working.
|
|
Without the full dynticks, there is no way to test the support for user context tracking and the subsystems that rely on it:
|
|
RCU userspace extended quiescent state and tickless cputime accounting.
|
|
This option copes with the absence of the full dynticks subsystem by forcing the user context tracking on all CPUs in the system.\\
|
|
Say Y only if you're working on the development of an architecture backend for the user context tracking.\\
|
|
Say N otherwise, this option brings an overhead that you don't want in production.}
|
|
|
|
\subsubsection{Old Idle dynticks config}
|
|
CONFIG\_NO\_HZ \colorbox{yellow!80}{[=y] \textbf{[N]}}\\*
|
|
\textit{Alte Leerlauf-Dynticks-Konfiguration}\\
|
|
Dies ist der alte Konfigurationseintrag, der Dynticks im Leerlauf aktiviert.
|
|
\sout{Wir behalten ihn noch eine Weile bei, um die Abwärtskompatiblität mit älteren
|
|
Konfigurations\-dateien zu gewähr\-leisten.}
|
|
\english{This is the old config entry that enables dynticks idle.
|
|
We keep it around for a little while to enforce backward compatibility with older config files.}
|
|
\note{Alte Dynticks-Konfiguration wird nicht mehr unterstützt.}
|
|
|
|
\subsubsection{High Resolution Timer Support}
|
|
CONFIG\_HIGH\_RES\_TIMERS [=y] \textbf{[Y]}\\
|
|
\textit{Unterstützung von Timern mit hoher Auflösung}\\
|
|
Diese Option aktiviert die Unterstützung hochauflösender Timer.
|
|
Wenn ihre Hardware dazu nicht in der Lage ist, erhöht diese
|
|
Option nur die Größe des Kernel"=Images.
|
|
\english{This option enables high resolution timer support.
|
|
If your hardware is not capable then this option only increases the size of the kernel image.}
|
|
|
|
\subsubsection{Clocksource watchdog maximum allowable skew}
|
|
CONFIG\_CLOCKSOURCE\_WATCHDOG\_MAX\_SKEW\_US [=100] \textbf{[100]}\\
|
|
\textit{Maximal zulässige Abweichung der Watchdog-Taktquelle}\\
|
|
Geben Sie den maximal zulässigen Wert für den Watchdog"=Versatz
|
|
in Mikrosekunden an, bevor die Clocksource als instabil gemeldet wird.
|
|
Der Standardwert basiert auf einem Watchdog-Intervall von einer halben
|
|
Sekunde und der maximalen Frequenzdrift von NTP von 500 Teilen pro Million.
|
|
Wenn die Clocksource gut genug für NTP ist, ist sie auch gut genug
|
|
für den Watchdog der Clocksource!\\
|
|
Bereich (Range): 50 -- 1000
|
|
\english{Specify the maximum amount of allowable watchdog skew in microseconds before reporting the clocksource to be unstable.
|
|
The default is based on a half-second clocksource watchdog interval and NTP's maximum frequency drift of 500 parts per million.
|
|
If the clocksource is good enough for NTP, it is good enough for the clocksource watchdog!}
|
|
|
|
%1.17 BPF subsystem
|
|
\subsection{BPF subsystem \texorpdfstring{$\rightarrow$}{->}}
|
|
Berkeley Packet Filter, Firewall-Filtertechnik im Kernel
|
|
|
|
\subsubsection{Enable bpf() system call}
|
|
CONFIG\_BPF\_SYSCALL [=y] \textbf{[Y]}\\
|
|
Aktivieren Sie den Systemaufruf bpf(), der es ermöglicht,
|
|
BPF-Programme und -Maps über Dateideskriptoren zu manipulieren.
|
|
\english{Enable the bpf() system call that allows to manipulate BPF programs and maps via file descriptors.}
|
|
|
|
\subsubsection{Enable BPF Just In Time compiler}
|
|
CONFIG\_BPF\_JIT [=y] \textbf{[Y]}\\
|
|
BPF-Programme werden normalerweise von einem BPF-Interpreter verarbeitet.
|
|
Diese Option ermöglicht es dem Kernel, nativen Code zu erzeugen,
|
|
wenn ein Programm in den Kernel geladen wird. Dadurch wird die Verarbeitung
|
|
von BPF"=Programmen erheblich beschleunigt.\\
|
|
Beachten Sie, dass ein Administrator diese Funktion durch Ändern aktivieren sollte:\\[0.5em]
|
|
\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\_kallsyms (optional)}
|
|
\english{BPF programs are normally handled by a BPF interpreter.
|
|
This option allows the kernel to generate native code when a program is loaded into the kernel.
|
|
This will significantly speed-up processing of BPF programs.\\
|
|
Note, an admin should enable this feature changing:\\
|
|
/proc/sys/net/core/bpf\_jit\_enable\\
|
|
/proc/sys/net/core/bpf\_jit\_harden (optional)\\
|
|
/proc/sys/net/core/bpf\_jit\_kallsyms (optional)}
|
|
|
|
\paragraph{Permanently enable BPF JIT and remove BPF interpreter}$~$\\
|
|
CONFIG\_BPF\_JIT\_ALWAYS\_ON [=y] \textbf{[Y]}\\
|
|
Aktiviert BPF JIT und entfernt den BPF"=Interpreter um spekulative Ausführungen
|
|
von BPF-An\-wei\-sun\-gen durch den Interpreter zu verhindern.
|
|
Wenn CONFIG\_BPF\_JIT\_ALWAYS\_ON eingeschaltet ist, dann wird
|
|
\texttt{/proc/sys/net/core/bpf\_jit\_enable} permanent auf 1 gesetzt, alle
|
|
Versuche diese Einstellung auf andere Werte zu legen wird mit einem Fehler
|
|
zurückgewiesen.
|
|
\english{Enables BPF JIT and removes BPF interpreter to avoid speculative execution of BPF instructions by the interpreter.\\
|
|
When CONFIG\_BPF\_JIT\_ALWAYS\_ON is enabled, /proc/sys/net/core/bpf\_jit\_enable is permanently set to 1 and
|
|
setting any other value than that will return failure.}
|
|
|
|
\subsubsection{Disable unprivileged BPF by default}
|
|
CONFIG\_BPF\_UNPRIV\_DEFAULT\_OFF [=y] \textbf{[Y]}\\
|
|
Deaktiviert die unprivilegierte BPF standardmäßig, indem der entsprechende Eintrag\\
|
|
\texttt{/proc/sys/kernel/unprivileged\_bpf\_disabled} auf 2 gesetzt wird.
|
|
Ein Administrator kann sie immer noch wieder aktivieren,
|
|
indem er sie später auf 0 setzt, oder sie dauerhaft deaktiviert, indem
|
|
er sie auf 1 setzt (von wo aus kein weiterer Übergang auf 0 mehr möglich ist).\\
|
|
Unprivilegierte BPF könnte verwendet werden, um bestimmte potenzielle Seitenkanalschwachstellen
|
|
für spekulative Ausführung auf nicht gemilderter betroffener Hardware auszunutzen.
|
|
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit Y.
|
|
\english{Disables unprivileged BPF by default by setting the corresponding /proc/sys/kernel/unprivileged\_bpf\_disabled knob to 2.
|
|
An admin can still reenable it by setting it to 0 later on, or permanently disable it by setting it to 1 (from which no other transition to 0 is possible anymore).
|
|
Unprivileged BPF could be used to exploit certain potential speculative execution side-channel vulnerabilities on unmitigated affected hardware.\\
|
|
If you are unsure how to answer this question, answer Y.}
|
|
|
|
\subsubsection{Preload BPF file system with kernel specific program
|
|
and map iterators \texorpdfstring{$\rightarrow$}{->}}
|
|
BPF\_PRELOAD [=n] \textbf{[N]}\\
|
|
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.
|
|
\english{This builds kernel module with several embedded BPF programs that are pinned into BPF FS mount point as human readable files
|
|
that are useful in debugging and introspection of BPF programs and maps.}
|
|
|
|
\paragraph{bpf\_preload kernel module\\}$~$\\
|
|
\textit{Dies ist nur sichtbar wenn der übergeordnete Punkt aktiviert ist.}\\
|
|
CONFIG\_BPF\_PRELOAD\_UMD [=m] \textbf{[M]}\\*
|
|
Damit wird das Kernelmodul bpf\_preload mit eingebetteten BPF-Programmen für die Introspektion in bpffs erstellt.
|
|
\english{This builds bpf\_preload kernel module with embedded BPF programs for introspection in bpffs.}
|
|
|
|
\subsubsection{Enable BPF LSM Instrumentation}
|
|
CONFIG\_BPF\_LSM [=y] \textbf{[Y]}\\
|
|
Ermöglicht die Instrumentierung der Sicherheitshaken mit BPF-Programmen zur Implementierung dynamischer
|
|
MAC- und Prüfungsrichtlinien.\\
|
|
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollten, antworten Sie mit N.
|
|
\english{Enables instrumentation of the security hooks with BPF programs for implementing dynamic MAC
|
|
and Audit Policies.\\
|
|
If you are unsure how to answer this question, answer N.}
|
|
|
|
|
|
%1.18
|
|
\subsection{Preemption Model (\textcolor{gray}{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)}
|
|
CONFIG\_PREEMPT\_NONE [=n] \textbf{[N]}\\
|
|
Das war das traditionelle Linux Modell der Unterbrechungen, das sich auf den Durchsatz konzentrierte.
|
|
Wird vor allem für den Server-Einsatz verwendet. Es gibt durchaus gute Performance für die Latenz, jedoch
|
|
keine Garantie dafür und es kann zu zufälligen, längeren Verzögerungszeiten kommen.
|
|
|
|
Für einen Serverbetrieb wird diese Einstellung empfohlen, damit der maximale Durchsatz an Rechenleistung
|
|
entsteht.
|
|
\english{This is the traditional Linux preemption model, geared towards throughput.
|
|
It will still provide good latencies most of the time, but there are no guarantees and occasional longer delays are possible.\\
|
|
Select this option if you are building a kernel for a server or scientific/computation system,
|
|
or if you want to maximize the raw processing power of the kernel, irrespective of scheduling latencies.}
|
|
|
|
\subsubsection{Voluntary Kernel Preemption (Desktop)}
|
|
CONFIG\_PREEMPT\_VOLUNTARY \colorbox{yellow!10}{[=n] \textbf{[N]}}\\
|
|
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.
|
|
\english{This option reduces the latency of the kernel by adding more ``explicit preemption points'' to the kernel code.
|
|
These new preemption points have been selected to reduce the maximum latency of rescheduling, providing faster application reactions,
|
|
at the cost of slightly lower throughput.\\
|
|
This allows reaction to interactive events by allowing a low priority process to voluntarily preempt itself even
|
|
if it is in kernel mode executing a system call.
|
|
This allows applications to run more `smoothly' even when the system is under load.\\
|
|
Select this if you are building a kernel for a desktop system.}
|
|
|
|
\subsubsection{Preemptible Kernel (Low-Latency Desktop)}
|
|
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.
|
|
Wähle diese Einstellung, wenn man einen Desktop oder ein Embedded-System mit einer Latenz im
|
|
Millisekundenbereich möchte. Natürlich geht diese Einstellung mit einem leicht geringerem Durchsatz an
|
|
Rechenleistung einher.
|
|
\english{This option reduces the latency of the kernel by making all kernel code (that is not executing in a critical section)
|
|
preemptible.
|
|
This allows reaction to interactive events by permitting a low priority process to be preempted involuntarily
|
|
even if it is in kernel mode executing a system call and would otherwise not be about to reach a natural preemption point.\\
|
|
This allows applications to run more `smoothly' even when the system is under load, at the cost of slightly lower
|
|
throughput and a slight runtime overhead to kernel code.\\
|
|
Select this if you are building a kernel for a desktop or embedded system with latency requirements in the milliseconds range.}
|
|
|
|
\subsubsection{Scheduler controlled preemption model {\tiny seit 6.13}}
|
|
CONFIG\_PREEMPT\_LAZY \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\
|
|
Diese Option bietet ein Scheduler-gesteuertes Preemption-Modell, das dem vollständigen Preemption-Modell
|
|
grundsätzlich ähnelt, aber weniger darauf bedacht ist, SCHED\_NORMAL-Tasks zu preemptieren, um die Preemption von
|
|
Lock-Holder-Tasks zu reduzieren und einen Teil der Leistungsgewinne aus der Verwendung von Voluntary Preemption wiederherzustellen.
|
|
\english{This option provides a scheduler driven preemption model that is fundamentally similar to full preemption,
|
|
but is less eager to preempt SCHED\_NORMAL tasks in an attempt to reduce lock holder preemption and recover some of
|
|
the performance gains seen from using Voluntary preemption.}
|
|
\note{Wir testen die neue Einstellung des LAZY-Modes, dehalb hier seit Linux 6.14.2 ein Y.}
|
|
|
|
%1.19
|
|
\subsection{Fully Preemtible Kernel (Real-Time)}
|
|
CONFIG\_PREEMPT\_RT [=n] \textbf{[N]}\\*
|
|
Mit dieser Option wird der Kernel zu einem Echtzeit-Kernel, indem verschiedene Sperrprimitive (spinlocks, rwlocks usw.)
|
|
durch präemptive Varianten mit Prioritätsvererbung ersetzt werden, Interrupt-Threading erzwungen wird und Mechanismen
|
|
zur Unterbrechung langer nicht präemptiver Abschnitte eingeführt werden.
|
|
Dadurch wird der Kernel mit Ausnahme von sehr einfachen und kritischen Codepfaden (Einstiegscode, Scheduler,
|
|
Low-Level-Interrupt-Handling) vollständig preemptibel und bringt die meisten Ausführungskontexte unter die Kontrolle
|
|
des Schedulers.
|
|
Wählen Sie dies, wenn Sie einen Kernel für Systeme erstellen, die Echtzeitgarantien erfordern.
|
|
\english{This option turns the kernel into a real-time kernel by replacing various locking primitives (spinlocks, rwlocks, etc.) with
|
|
preemptible priority-inheritance aware variants, enforcing interrupt threading and introducing mechanisms to break up long non-preemptible sections.
|
|
This makes the kernel, except for very low level and critical code paths (entry code, scheduler, low level interrupt handling)
|
|
fully preemptible and brings most execution contexts under scheduler control.\\
|
|
Select this if you are building a kernel for systems which require real-time guarantees.}
|
|
|
|
%1.20 Preemption behaviour defined on boot
|
|
\subsection{Preemtion behaviour defined on boot}
|
|
CONFIG\_PREEMPT\_DYNAMIC \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Diese Option ermöglicht es, das Präemptionsmodell über den
|
|
Kernel-Kommandozeilenparameter zu definieren und damit das
|
|
während der Kompilierung definierte Standard"=Präemptionsmodell
|
|
außer Kraft zu setzen.
|
|
Diese Funktion ist vor allem für Linux-Distributionen
|
|
interessant, die eine vorgefertigte Kernel"=Binärdatei
|
|
bereitstellen, um die Anzahl der angebotenen Kernel"=Varianten
|
|
zu reduzieren und dennoch verschiedene Anwendungsfälle zu
|
|
ermöglichen.
|
|
|
|
Der Laufzeit-Overhead ist vernachlässigbar, wenn
|
|
HAVE\_STATIC\_CALL\_INLINE aktiviert ist, aber wenn Laufzeit-Patching
|
|
für die spezifische Architektur nicht verfügbar ist,
|
|
sollte der potenzielle Overhead in Betracht gezogen werden.
|
|
Interessant wird es, wenn derselbe vorgefertigte Kernel
|
|
sowohl für Server- als auch für Desktop-Workloads verwendet
|
|
werden soll.
|
|
\english{This option allows to define the preemption model on the kernel command line parameter
|
|
and thus override the default preemption model defined during compile time.\\
|
|
The feature is primarily interesting for Linux distributions which provide a pre-built kernel binary
|
|
to reduce the number of kernel flavors they offer while still offering different usecases.\\
|
|
The runtime overhead is negligible with HAVE\_STATIC\_CALL\_INLINE enabled but if runtime patching is
|
|
not available for the specific architecture then the potential overhead should be considered.\\
|
|
Interesting if you want the same pre-built kernel should be used for both Server and Desktop workloads.}
|
|
\note{Wir setzen dies auf Nein, da wir wissen, dass der Kernal für den Desktop kompiliert wird.}
|
|
|
|
%1.21 Core Scheduling for SMT
|
|
\subsection{Core Scheduling for SMT}
|
|
CONFIG\_SCHED\_CORE [=y] \textbf{[Y]}\\
|
|
Kern-Scheduling für SMT
|
|
|
|
Diese Option ermöglicht Core Scheduling, ein Mittel zur
|
|
koordinierten Auswahl von Aufgaben zwischen SMT-Geschwistern.
|
|
Wenn diese Option aktiviert ist -- siehe prctl
|
|
(PR\_SCHED\_CORE)
|
|
-- stellt die Aufgabenauswahl sicher, dass alle SMT"=Geschwister
|
|
eine Aufgabe aus der gleichen \glqq Kerngruppe\grqq{} ausführen und
|
|
den Leerlauf erzwingen, wenn keine passende Aufgabe gefunden
|
|
wird.
|
|
Diese Funktion wird unter anderem verwendet:
|
|
\begin{itemize}
|
|
\item[-] Entschärfung einiger (nicht aller) SMT-Seitenkanäle;
|
|
\item[-] Begrenzung der SMT-Interferenz zur Verbesserung des Determinismus und/oder der Leistung.
|
|
\end{itemize}
|
|
SCHED\_CORE ist standardmäßig deaktiviert. Wenn es aktiviert und unbenutzt ist, was
|
|
bei Linux-Distributionen wahrscheinlich der Fall ist,
|
|
sollte es keine messbaren Auswirkungen auf die Leistung
|
|
haben.
|
|
\english{This option permits Core Scheduling, a means of coordinated task selection across SMT siblings.
|
|
When enabled -- see \texttt{prctl}(PR\_SCHED\_CORE) -- task selection ensures that all SMT siblings
|
|
will execute a task from the same `core group', forcing idle when no matching task is found.\\
|
|
Use of this feature includes:\\
|
|
-- mitigation of some (not all) SMT side channels;\\
|
|
-- limiting SMT interference to improve determinism and/or performance.\\
|
|
SCHED\_CORE is default disabled. When it is enabled and unused, which is the likely usage by Linux distributions,
|
|
there should be no measurable impact on performance.}
|
|
|
|
% 1.22 Extensible Scheduling Class (seit 6.11)
|
|
\subsection{Extensible Scheduling Class {\tiny seit 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}
|
|
\english{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.\\
|
|
For more information: Documentation/scheduler/sched-ext.rst \url{https://github.com/sched-ext/scx}}
|
|
|
|
%1.23 CPU/Task time and stats accounting
|
|
\subsection{CPU/Task time and stats accounting \texorpdfstring{$\rightarrow$}{->}}
|
|
|
|
\subsubsection{Cputime accounting (Full dynticks CPU time accounting) \texorpdfstring{$\rightarrow$}{->}}
|
|
|
|
\paragraph{Simple tick based cputime accounting}\mbox{}\\
|
|
CONFIG\_TICK\_CPU\_ACCOUNTING [=n] \textbf{[N]}\\*
|
|
Dies ist die grundlegende tick-basierte Rechenzeitabrechnung, die Statistiken über die Benutzer-,
|
|
System- und Leerlaufzeit auf einer Granularität von wenigen Augenblicken führt.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{This is the basic tick based cputime accounting that maintains statistics about user,
|
|
system and idle time spent on per jiffies granularity.\\
|
|
If unsure, say Y.}
|
|
|
|
\paragraph{Full dynticks CPU time accounting} $~$\\
|
|
CONFIG\_VIRT\_CPU\_ACCOUNTING\_GEN \colorbox{yellow!0}{[=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.
|
|
\english{Select this option to enable task and CPU time accounting on full dynticks systems.
|
|
This accounting is implemented by watching every kernel-user boundaries using the context tracking subsystem.
|
|
The accounting is thus performed at the expense of some significant overhead.\\
|
|
For now this is only useful if you are working on the full dynticks subsystem development.
|
|
If unsure, say N.}
|
|
\note{Wir können nur dies mit unseren Voreinstellungen auswählen.}
|
|
|
|
%1.23.2
|
|
\subsubsection{Fine granularity task level IRQ time accounting}
|
|
CONFIG\_IRQ\_TIME\_ACCOUNTING \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
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.
|
|
\english{Select this option to enable fine granularity task irq time accounting.
|
|
This is done by reading a timestamp on each transitions between softirq and hardirq state,
|
|
so there can be a small performance impact.\\
|
|
If in doubt, say N here.}
|
|
\note{Um etwas mehr Performance zu gewinnen, setzen wir dies auf 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.
|
|
\english{If you say Y here, a user level program will be able to instruct the kernel
|
|
(via a special system call) to write process accounting information to a file:
|
|
whenever a process exits, information about that process will be appended to the file by the kernel.
|
|
The information includes things such as creation time, owning user, command name, memory usage,
|
|
controlling terminal etc. (the complete list is in the struct acct in $<$file:include/linux/acct.h$>$).
|
|
It is up to the user level program to do useful things with this information.
|
|
This is generally a good idea, so say Y.}
|
|
|
|
\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
|
|
\url{http://www.gnu.org/software/acct/} verfügbar.
|
|
\english{If you say Y here, the process accounting information is written in a new file format
|
|
that also logs the process IDs of each process and its parent.
|
|
Note that this file format is incompatible with previous v0/v1/v2 file formats, so you will need updated tools for processing it.
|
|
A preliminary version of these tools is available at \url{http://www.gnu.org/software/acct/}.}
|
|
|
|
\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 Auf\-gaben/Pro\-zes\-sen 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.
|
|
\english{Export selected statistics for tasks/processes through the generic netlink interface.
|
|
Unlike BSD process accounting, the statistics are available during the lifetime of tasks/processes as responses to commands.
|
|
Like BSD accounting, they are sent to user space on task exit.\\
|
|
Say N if unsure.}
|
|
|
|
\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.
|
|
\english{Collect information on time spent by a task waiting for system resources like cpu, synchronous
|
|
block I/O completion and swapping in pages.
|
|
Such statistics can help in setting a task's priorities relative to other tasks for cpu, io, rss limits etc.\\
|
|
Say N if unsure.}
|
|
|
|
\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.
|
|
\english{Collect extended task accounting data and send the data to userland for processing over the taskstats interface.\\
|
|
Say N if unsure.}
|
|
|
|
\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.
|
|
\english{Collect information on the number of bytes of storage I/O which this task has caused.\\
|
|
Say N if unsure.}
|
|
|
|
\subsubsection{Pressure stall information tracking}
|
|
CONFIG\_PSI [=y] \textbf{[Y]}\\
|
|
Sammeln Sie Metriken, die anzeigen, wie überlastet die CPU-, Speicher-
|
|
und IO-Ka\-pa\-zi\-tä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.
|
|
\english{Collect metrics that indicate how overcommitted the CPU, memory, and IO capacity are in the system.\\
|
|
If you say Y here, the kernel will create /proc/pressure/ with the pressure statistics files cpu, memory, and io.
|
|
These will indicate the share of walltime in which some or all tasks in the system
|
|
are delayed due to contention of the respective resource.\\
|
|
In kernels with cgroup support, cgroups (cgroup2 only) will have cpu.pressure, memory.pressure, and io.pressure files,
|
|
which aggregate pressure stalls for the grouped tasks only.\\
|
|
For more details see Documentation/accounting/psi.rst.\\
|
|
Say N if unsure.}
|
|
|
|
\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 Druck\-stau\-informationen
|
|
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. Web\-server, 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.
|
|
\english{If set, pressure stall information tracking will be disabled per default but can
|
|
be enabled through passing psi=1 on the kernel commandline during boot.\\
|
|
This feature adds some code to the task wakeup and sleep paths of the scheduler.
|
|
The overhead is too low to affect common scheduling-intense workloads in practice (such as webservers, memcache),
|
|
but it does show up in artificial scheduler stress tests, such as hackbench.\\
|
|
If you are paranoid and not sure what the kernel will be used for, say Y.\\
|
|
Say N if unsure.}
|
|
|
|
%1.24
|
|
\subsection{CPU isolation}
|
|
CONFIG\_CPU\_ISOLATION [=y] \textbf{[Y]}\\
|
|
Stellen Sie sicher, dass CPUs, auf denen kritische Aufgaben laufen,
|
|
nicht durch irgendwelche \glqq Störquellen\grqq{} wie ungebundene Workqueues, Timers,
|
|
kthreads usw. gestört werden.\\
|
|
Ungebundene Aufgaben werden auf Housekeeping"=CPUs verlagert.
|
|
Dies wird durch den Boot-Parameter \texttt{isolcpus=} gesteuert.\\
|
|
Sagen Sie Y für ja, wenn Sie unsicher sind.
|
|
\english{Make sure that CPUs running critical tasks are not disturbed by any source of ``noise''
|
|
such as unbound workqueues, timers, kthreads...
|
|
Unbound jobs get offloaded to housekeeping CPUs.
|
|
This is driven by the ``isolcpus='' boot parameter.}
|
|
|
|
%1.25
|
|
\subsection{RCU Subsystem \texorpdfstring{$\rightarrow$}{->}}
|
|
Read -- Copy -- Update (Lesen, Kopieren, Aktualisieren)
|
|
|
|
\subsubsection{Make expert-level adjustments to RCU configuration}
|
|
CONFIG\_RCU\_EXPERT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Diese Option muss aktiviert werden, wenn Sie Anpassungen der RCU"=Konfiguration
|
|
auf Expertenebene vornehmen möchten.
|
|
Standardmäßig können solche Anpassungen nicht vorgenommen werden,
|
|
was den oft vorteilhaften Nebeneffekt hat, dass \glqq make oldconfig\grqq{} Sie
|
|
davon abhält, alle möglichen detaillierten Fragen darüber zu stellen,
|
|
wie Sie zahlreiche obskure RCU"=Optionen eingerichtet haben möchten.\\
|
|
Sagen Sie Y, wenn Sie Anpassungen an RCU auf Expertenebene vornehmen müssen.\\
|
|
Sagen Sie N, wenn Sie unsicher sind.
|
|
\english{This option needs to be enabled if you wish to make expert-level adjustments to RCU configuration.
|
|
By default, no such adjustments can be made, which has the often-beneficial side-effect of preventing
|
|
``make oldconfig'' from asking you all sorts of detailed questions about how you would like numerous
|
|
obscure RCU options to be set up.\\
|
|
Say Y if you need to make expert-level adjustments to RCU.\\
|
|
Say N if you are unsure.}
|
|
\note{Wie bei Debian Bookworm setzen wir dies auf ein N für Nein.}
|
|
|
|
\subsubsection{Force selection of TASKS\_RCU}
|
|
CONFIG\_FORCE\_TASKS\_RCU [=n] \textbf{[N]}\\
|
|
Diese Option erzwingt eine aufgabenbasierte RCU-Implementierung die nur
|
|
freiwillige Kontextwechsel verwendet (keine Preemption!), Leerlauf und
|
|
Benutzermodus-Ausführung als Ruhezustände verwendet.
|
|
Nicht für manuelle Auswahl in den meisten Fällen.
|
|
\english{This option force-enables a task-based RCU implementation that uses only voluntary context switch
|
|
(not preemption!), idle, and user-mode execution as quiescent states.
|
|
Not for manual selection in most cases.}
|
|
|
|
\subsubsection{Force selection of Tasks Rude RCU}
|
|
CONFIG\_FORCE\_TASKS\_RUDE\_RCU [=n] \textbf{[N]}\\
|
|
Diese Option erzwingt eine Task-basierte RCU-Implementierung, die nur
|
|
Kontextwechsel (einschließlich Preemption) und die Ausführung im
|
|
Benutzermodus als Ruhezustand verwendet. Sie erzwingt IPIs und
|
|
Kontextwechsel auf allen Online"=CPUs, auch auf den Idle"=CPUs, also
|
|
mit Vorsicht verwenden.
|
|
In den meisten Fällen nicht für die manuelle Auswahl geeignet.
|
|
\english{This option force-enables a task-based RCU implementation that uses only context switch
|
|
(including preemption) and user-mode execution as quiescent states.
|
|
It forces IPIs and context switches on all online CPUs, including idle ones, so use with caution.
|
|
Not for manual selection in most cases.}
|
|
|
|
|
|
\subsubsection{Force selection of Tasks Trace RCU}
|
|
CONFIG\_FORCE\_TASKS\_TRACE\_RCU [=n] \textbf{[N]}\\
|
|
Diese Option ermöglicht eine Task"=basierte RCU"=Implementierung, die
|
|
explizite rcu\_read\_lock\_trace()-Lesemarker verwendet und es ermöglicht,
|
|
dass diese Leser sowohl in der Leerlaufschleife als auch in den
|
|
CPU"=Hotplug"=Codepfaden erscheinen. Es kann IPIs auf Online-CPUs erzwingen,
|
|
auch auf Idle-CPUs, also mit Vorsicht verwenden.
|
|
In den meisten Fällen nicht für die manuelle Auswahl geeignet.
|
|
\english{This option enables a task-based RCU implementation that uses explicit rcu\_read\_lock\_trace()
|
|
read-side markers, and allows these readers to appear in the idle loop as well as on the CPU hotplug code paths.
|
|
It can force IPIs on online CPUs, including idle ones, so use with caution.
|
|
Not for manual selection in most cases.}
|
|
|
|
\subsubsection{Tree-based hierarchical RCU fanout value}
|
|
CONFIG\_RCU\_FANOUT [=64] \textbf{[64]}\\
|
|
Diese Option steuert den Fanout von hierarchischen Implementierungen von
|
|
RCU, so dass RCU auf Maschinen mit einer großen Anzahl von CPUs effizient
|
|
arbeiten kann. Dieser Wert muss mindestens die vierte Wurzel von NR\_CPUS
|
|
sein, wodurch NR\_CPUS wahnsinnig groß werden kann. Der Standardwert von
|
|
RCU\_FANOUT sollte für Produktionssysteme verwendet werden, aber wenn Sie
|
|
die RCU-Implementierung selbst einem Stresstest unterziehen, ermöglichen
|
|
kleine RCU\_FANOUT-Werte das Testen von Codepfaden für große Systeme auf
|
|
kleinen (kleineren) Systemen.\\
|
|
Wählen Sie eine bestimmte Zahl, wenn Sie RCU selbst testen.
|
|
Nehmen Sie den Standardwert, wenn Sie unsicher sind.\\
|
|
Symbol: RCU\_FANOUT [=64]\\
|
|
Type : integer (Ganzzahl)\\
|
|
Bereich (range) : [2 64]
|
|
\english{This option controls the fanout of hierarchical implementations of RCU, allowing RCU to work
|
|
efficiently on machines with large numbers of CPUs.
|
|
This value must be at least the fourth root of NR\_CPUS, which allows NR\_CPUS to be insanely large.
|
|
The default value of RCU\_FANOUT should be used for production systems, but if you are stress-testing
|
|
the RCU implementation itself, small RCU\_FANOUT values allow you to test large-system code paths on small(er) systems.\\
|
|
Select a specific number if testing RCU itself. Take the default if unsure.}
|
|
|
|
\subsubsection{Tree-based hierarchical RCU leaf-level fanout value}
|
|
CONFIG\_RCU\_FANOUT\_LEAF [=16] \textbf{[16]}\\
|
|
Diese Option steuert das Fanout auf Blattebene bei hierarchischen
|
|
Implementierungen von RCU und ermöglicht es, Cache"=Misses gegen
|
|
Sperrkonflikte abzuwägen. Systeme, die ihre Scheduling"=Clock"=Interrupts
|
|
aus Gründen der Energieeffizienz synchronisieren, werden die
|
|
Standardeinstellung bevorzugen, da der kleinere Leaf-Level-Fanout die
|
|
Lock-Contention-Level akzeptabel niedrig hält. Sehr große Systeme
|
|
(Hunderte oder Tausende von CPUs) werden stattdessen diesen Wert auf den
|
|
maximal möglichen Wert setzen wollen, um die Anzahl der Cache-Misses zu
|
|
reduzieren, die während der Initialisierung der RCU-Grace"=Periode auftreten.
|
|
Diese Systeme neigen dazu, CPU-gebunden zu laufen, und werden daher nicht
|
|
von synchronisierten Interrupts unterstützt, und neigen daher dazu, sie zu
|
|
verzerren, was den Sperrkonflikt so weit reduziert, dass große Fanouts auf
|
|
Blattebene gut funktionieren. Das heißt, wenn Sie den Fanout auf Blattebene
|
|
auf eine große Zahl setzen, wird dies wahrscheinlich zu problematischen
|
|
Sperrkonflikten auf den rcu\_node"=Strukturen auf Blattebene führen, es sei
|
|
denn, Sie booten mit dem Kernelparameter skew\_tick.\\
|
|
Wählen Sie eine bestimmte Zahl, wenn Sie die RCU selbst testen.\\
|
|
Wählen Sie den maximal zulässigen Wert für große Systeme, aber bedenken Sie,
|
|
dass Sie möglicherweise auch den Kernel"=Boot"=Parameter \texttt{skew\_tick} setzen
|
|
müssen, um Konflikte bei den Sperren der rcu\_node"=Strukturen zu vermeiden.
|
|
Nehmen Sie den Standardwert, wenn Sie unsicher sind.\\
|
|
Symbol: RCU\_FANOUT\_LEAF [=64]\\
|
|
Type : integer (Ganzzahl)\\
|
|
Bereich (range) : [2 64]
|
|
\english{This option controls the leaf-level fanout of hierarchical implementations of RCU,
|
|
and allows trading off cache misses against lock contention.
|
|
Systems that synchronize their scheduling-clock interrupts for energy-efficiency reasons will
|
|
want the default because the smaller leaf-level fanout keeps lock contention levels acceptably low.
|
|
Very large systems (hundreds or thousands of CPUs) will instead want to set this value to the maximum
|
|
value possible in order to reduce the number of cache misses incurred during RCU's grace-period initialization.
|
|
These systems tend to run CPU-bound, and thus are not helped by synchronized interrupts, and thus tend to
|
|
skew them, which reduces lock contention enough that large leaf-level fanouts work well.
|
|
That said, setting leaf-level fanout to a large number will likely cause problematic lock contention
|
|
on the leaf-level rcu\_node structures unless you boot with the skew\_tick kernel parameter.\\
|
|
Select a specific number if testing RCU itself.\\
|
|
Select the maximum permissible value for large systems, but please understand that you may also
|
|
need to set the skew\_tick kernel boot parameter to avoid contention on the rcu\_node structure's locks.\\
|
|
Take the default if unsure.}
|
|
|
|
\subsubsection{Enable RCU priority boosting}
|
|
CONFIG\_RCU\_BOOST [=y] \textbf{[Y]}\\
|
|
Diese Option erhöht die Priorität von preemptierten RCU-Lesern, die
|
|
die aktuelle preemptible RCU"=Schonfrist zu lange blockieren.
|
|
Diese Option verhindert auch, dass schwere Lasten den Aufruf von RCU"=Callbacks
|
|
blockieren.\\
|
|
Geben Sie hier Y an, wenn Sie mit Echtzeitanwendungen oder großen Lasten arbeiten.\\
|
|
Sagen Sie hier N ein, wenn Sie unsicher sind.
|
|
\english{This option boosts the priority of preempted RCU readers that block the current preemptible
|
|
RCU grace period for too long.
|
|
This option also prevents heavy loads from blocking RCU callback invocation.\\
|
|
Say Y here if you are working with real-time apps or heavy loads\\
|
|
Say N here if you are unsure.}
|
|
|
|
\paragraph{Milliseconds to delay boosting after RCU grace-period start}$~$\\
|
|
CONFIG\_RCU\_BOOST\_DELAY [=500] \textbf{[500]}\\
|
|
Diese Option gibt die Zeit an, die nach dem Beginn einer bestimmten Karenzzeit
|
|
gewartet werden soll, bevor die Priorität von RCU-Lesern, die diese Karenzzeit
|
|
blockieren, erhöht wird.\\
|
|
Beachten Sie, dass jeder RCU-Leser, der eine beschleunigte RCU-Schonfrist
|
|
blockiert, sofort hochgestuft wird.\\
|
|
Akzeptieren Sie die Standardeinstellung, wenn Sie unsicher sind.\\
|
|
Symbol: RCU\_BOOST\_DELAY [=500]\\
|
|
Typ : Integer (Ganzzahl)\\
|
|
Bereich : [0 3000]
|
|
\english{This option specifies the time to wait after the beginning of a given grace period before
|
|
priority-boosting preempted RCU readers blocking that grace period.
|
|
Note that any RCU reader blocking an expedited RCU grace period is boosted immediately.\\
|
|
Accept the default if unsure.}
|
|
|
|
\paragraph{Perform RCU expedited work in a real-time kthread}$~$\\
|
|
CONFIG\_RCU\_EXP\_KTHREAD [=n] \textbf{[N]}\\
|
|
Verwenden Sie diese Option, um die Latenzzeiten der beschleunigten Neuheitsschonfristen
|
|
weiter zu reduzieren, was allerdings mit mehr Störungen verbunden ist.
|
|
Diese Option ist standardmäßig auf PREEMPT\_RT=y-Kerneln deaktiviert,
|
|
die beschleunigte Neuheitsschonfristen nach dem Booten durch die bedingungslose
|
|
Einstellung rcupdate.rcu\_normal\_after\_boot=1 deaktivieren.\\
|
|
Akzeptieren Sie die Voreinstellung, wenn Sie unsicher sind.
|
|
\english{Use this option to further reduce the latencies of expedited grace
|
|
periods at the expense of being more disruptive.\\
|
|
This option is disabled by default on PREEMPT\_RT=y kernels which disable expedited grace periods
|
|
after boot by unconditionally setting rcupdate.rcu\_normal\_after\_boot=1.\\
|
|
Accept the default if unsure.}
|
|
|
|
\subsubsection{Offload RCU callback processing from boot-selected CPUs}
|
|
CONFIG\_RCU\_NOCB\_CPU [=y] \textbf{[Y]}\\
|
|
Verwenden Sie diese Option, um den Jitter des Betriebssystems für aggressive HPC- oder
|
|
Echtzeit-Workloads zu reduzieren.
|
|
Sie kann auch verwendet werden, um RCU-Callback-Aufrufe auf energieeffiziente CPUs in
|
|
batteriebetriebenen asymmetrischen Multiprozessoren auszulagern. Der Preis für diesen
|
|
reduzierten Jitter ist, dass der Overhead von call\_rcu() ansteigt und dass bei einigen
|
|
Workloads ein erheblicher Anstieg der Kontextwechselraten zu verzeichnen ist.\\
|
|
Diese Option entlastet den Aufruf von Callbacks von der Gruppe von CPUs, die zur
|
|
Boot-Zeit durch den rcu\_nocbs-Parameter angegeben wird. Für jede dieser CPUs wird ein
|
|
kthread (\glqq rcuox/N\grqq{}) erstellt, um Callbacks aufzurufen, wobei \glqq N\grqq{} die CPU ist, die
|
|
entlastet wird, und wobei \glqq x\grqq{} \glqq p\grqq{} für RCU-preempt
|
|
(PREEMPTION-Kernel) und \glqq s\grqq{} für
|
|
RCU-sched (!PREEMPTION-Kernel) ist. Nichts hindert diesen kthread daran, auf den
|
|
angegebenen CPUs zu laufen, aber (1) die kthreads können zwischen jedem Callback
|
|
preempted werden, und (2) Affinität oder cgroups können verwendet werden, um die
|
|
kthreads zu zwingen, auf jeder gewünschten Gruppe von CPUs zu laufen.\\
|
|
Sagen Sie hier Y, wenn Sie trotz des zusätzlichen Overheads ein geringeres
|
|
OS-Jitter benötigen.\\
|
|
Sagen Sie hier N, wenn Sie unsicher sind.
|
|
\english{Use this option to reduce OS jitter for aggressive HPC or real-time workloads.
|
|
It can also be used to offload RCU callback invocation to energy-efficient CPUs in battery-powered asymmetric multiprocessors.
|
|
The price of this reduced jitter is that the overhead of call\_rcu() increases and that some workloads will incur
|
|
significant increases in context-switch rates.\\
|
|
This option offloads callback invocation from the set of CPUs specified at boot time by the rcu\_nocbs parameter.
|
|
For each such CPU, a kthread (``rcuox/N'') will be created to invoke callbacks, where the ``N'' is the CPU
|
|
being offloaded, and where the ``x'' is ``p'' for RCU-preempt (PREEMPTION kernels) and ``s'' for RCU-sched
|
|
(!PREEMPTION kernels).
|
|
This option also creates another kthread for each sqrt(nr\_cpu\_ids) CPUs (``rcuog/N'', where N is
|
|
the first CPU in that group to come online), which handles grace periods for its group.
|
|
Nothing prevents these kthreads from running on the specified CPUs, but (1) the kthreads may be preempted
|
|
between each callback, and (2) affinity or cgroups can be used to force the kthreads to run on whatever set
|
|
of CPUs is desired.\\
|
|
The sqrt(nr\_cpu\_ids) grouping may be overridden using the rcutree.rcu\_nocb\_gp\_stride kernel boot parameter.
|
|
This can be especially helpful for smaller numbers of CPUs, where sqrt(nr\_cpu\_ids) can be a bit of a blunt instrument.\\
|
|
Say Y here if you need reduced OS jitter, despite added overhead.
|
|
Say N here if you are unsure.}
|
|
|
|
\paragraph{Offload RCU callback processing from all CPUs by default}$~$\\
|
|
CONFIG\_RCU\_NOCB\_CPU\_DEFAULT\_ALL [=n] \textbf{[N]}\\
|
|
Verwenden Sie diese Option, um die Callback-Verarbeitung standardmäßig von allen
|
|
CPUs zu entlasten, wenn der Boot-Parameter rcu\_nocbs oder nohz\_full nicht vorhanden
|
|
ist. Dadurch wird auch die Notwendigkeit vermieden, Boot-Parameter zu verwenden, um
|
|
den Effekt der Entlastung aller CPUs beim Booten zu erreichen.\\
|
|
Geben Sie hier Y an, wenn Sie alle CPUs standardmäßig beim Booten entlasten wollen.\\
|
|
Sagen Sie hier N, wenn Sie sich nicht sicher sind.
|
|
\english{Use this option to offload callback processing from all CPUs by default,
|
|
in the absence of the rcu\_nocbs or nohz\_full boot parameter.
|
|
This also avoids the need to use any boot parameters to achieve the effect of offloading all CPUs on boot.\\
|
|
Say Y here if you want offload all CPUs by default on boot.
|
|
Say N here if you are unsure.}
|
|
|
|
\paragraph{Offload RCU callback from real-time kthread}$~$\\
|
|
CONFIG\_RCU\_NOCB\_CPU\_CB\_BOOST [=n] \textbf{[N]}\\
|
|
Verwenden Sie diese Option, um ausgelagerte Rückrufe als SCHED\_FIFO aufzurufen, um
|
|
ein Aushungern durch schwere SCHED\_OTHER-Hintergrundlast zu vermeiden. Natürlich
|
|
führt die Ausführung als SCHED\_FIFO während Callback Floods dazu, dass die rcuo[ps]
|
|
kthreads die CPU für Hunderte von Millisekunden oder mehr monopolisieren.
|
|
Wenn Sie diese Option aktivieren, müssen Sie daher sicherstellen, dass
|
|
latenzempfindliche Aufgaben entweder mit höherer Priorität oder auf einer anderen CPU
|
|
ausgeführt werden.\\
|
|
Geben Sie hier Y an, wenn Sie die RT-Priorität für die Auslagerung von kthreads
|
|
festlegen möchten.\\
|
|
Sagen Sie hier N, wenn Sie einen !PREEMPT\_RT-Kernel bauen und sich unsicher sind.
|
|
\english{Use this option to invoke offloaded callbacks as SCHED\_FIFO to avoid starvation by heavy
|
|
SCHED\_OTHER background load.
|
|
Of course, running as SCHED\_FIFO during callback floods will cause the rcuo[ps] kthreads to monopolize the CPU
|
|
for hundreds of milliseconds or more.
|
|
Therefore, when enabling this option, it is your responsibility to ensure that latency-sensitive tasks
|
|
either run with higher priority or run on some other CPU.\\
|
|
Say Y here if you want to set RT priority for offloading kthreads.
|
|
Say N here if you are building a !PREEMPT\_RT kernel and are unsure.}
|
|
|
|
\subsubsection{Tasks Trace RCU readers use memory barriers in user and idle}
|
|
CONFIG\_TASKS\_TRACE\_RCU\_READ\_MB [=n] \textbf{[N]}\\
|
|
Verwenden Sie diese Option, um die Anzahl der IPIs (inter-processor interrupts),
|
|
die an CPUs gesendet werden,
|
|
die im Benutzerraum ausgeführt werden oder sich im Leerlauf befinden, während Tasks
|
|
RCU-Tilgungsfristen verfolgen, weiter zu reduzieren.
|
|
Da eine vernünftige Einstellung des Kernel-Boot-Parameters
|
|
rcupdate.rcu\_task\_ipi\_delay solche IPIs für viele Arbeitslasten eliminiert, ist
|
|
die richtige Einstellung dieser Kconfig-Option vor allem für aggressive
|
|
Echtzeitinstallationen und für batteriebetriebene Geräte wichtig, daher die oben
|
|
gewählte Standardeinstellung.\\
|
|
Sagen Sie hier Y, wenn Sie IPIs hassen.\\
|
|
Sagen Sie hier N, wenn Sie leseseitige Speicherbarrieren hassen.\\
|
|
Nehmen Sie die Standardeinstellung, wenn Sie unsicher sind.
|
|
\english{Use this option to further reduce the number of IPIs sent to CPUs executing in userspace or idle during
|
|
tasks trace RCU grace periods.
|
|
Given that a reasonable setting of the rcupdate.rcu\_task\_ipi\_delay kernel boot parameter eliminates such IPIs
|
|
for many workloads, proper setting of this Kconfig option is important mostly for aggressive real-time
|
|
installations and for battery-powered devices, hence the default chosen above.\\
|
|
Say Y here if you hate IPIs. Say N here if you hate read-side memory barriers.
|
|
Take the default if you are unsure.}
|
|
|
|
\subsubsection{RCU callback lazy invocation functionality}
|
|
CONFIG\_RCU\_LAZY [=y] \textbf{[Y]}\\
|
|
Um Strom zu sparen, sollten Sie RCU-Rückrufe stapeln und nach einer Verzögerung,
|
|
einem Speicherdruck oder einer zu großen Rückrufliste flushen.
|
|
\english{To save power, batch RCU callbacks and flush after delay, memory pressure, or callback list growing too big.\\
|
|
Requires rcu\_nocbs=all to be set.\\
|
|
Use rcutree.enable\_rcu\_lazy=0 to turn it off at boot time.}
|
|
|
|
\paragraph{Turn RCU lazy invocation off by default}{\tiny seit 6.9}$~$\\
|
|
CONFIG\_RCU\_LAZY\_DEFAULT\_OFF [=n] \textbf{[N]}\\
|
|
Erlaubt die Erstellung des Kernels mit CONFIG\_RCU\_LAZY=y, ist aber standardmäßig deaktiviert.
|
|
Der Bootzeit-Parameter rcutree.enable\_rcu\_lazy=1 kann verwendet werden, um es wieder einzuschalten.
|
|
\english{Allows building the kernel with CONFIG\_RCU\_LAZY=y yet keep it default off.\\
|
|
Boot time param rcutree.enable\_rcu\_lazy=1 can be used to switch it back on.}
|
|
|
|
\subsubsection{RCU callback-batch backup time check}
|
|
CONFIG\_RCU\_DOUBLE\_CHECK\_CB\_TIME [=y] \textbf{[Y]}\\
|
|
Verwenden Sie diese Option, um eine präzisere Durchsetzung des Modulparameters
|
|
rcutree.rcu\_resched\_ns in Situationen zu ermöglichen, in denen ein einziger
|
|
RCU-Callback Hunderte von Mikrosekunden lang laufen könnte, wodurch die
|
|
32-Callback-Batching-Funktion, die verwendet wird, um die Kosten der feinkörnigen,
|
|
aber teuren local\_clock()-Funktion zu amortisieren, unterlaufen wird.\\
|
|
Diese Option rundet rcutree.rcu\_resched\_ns auf den nächsten Jiffy auf und setzt
|
|
die 32-Callback-Batching-Funktion außer Kraft, wenn diese Grenze überschritten wird.\\
|
|
Sagen Sie hier Y, wenn Sie eine strengere Durchsetzung des Rückruflimits benötigen.\\
|
|
Sagen Sie hier N, wenn Sie unsicher sind.
|
|
\english{Use this option to provide more precise enforcement of the rcutree.rcu\_resched\_ns module parameter
|
|
in situations where a single RCU callback might run for hundreds of microseconds, thus defeating the 32-callback
|
|
batching used to amortize the cost of the fine-grained but expensive local\_clock() function.\\
|
|
This option rounds rcutree.rcu\_resched\_ns up to the next jiffy, and overrides the 32-callback batching
|
|
if this limit is exceeded.\\
|
|
Say Y here if you need tighter callback-limit enforcement.
|
|
Say N here if you are unsure.}
|
|
|
|
% 1.26
|
|
\subsection{Kernel .config support}
|
|
CONFIG\_IKCONFIG \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Mit dieser Option kann der gesamte Inhalt der \glqq .config\grqq{}-Datei des Linux-Kernels im
|
|
Kernel gespeichert werden. Sie dokumentiert, welche Kernel-Optionen in einem
|
|
laufenden Kernel oder in einem On-Disk-Kernel verwendet werden.
|
|
Diese Informationen können mit dem Skript scripts/extract-ikconfig aus der
|
|
Kernel-Image-Datei extrahiert und als Eingabe verwendet werden, um den aktuellen
|
|
Kernel neu zu erstellen oder einen anderen Kernel zu bauen.
|
|
Sie können auch aus einem laufenden Kernel extrahiert werden, indem
|
|
/proc/config.gz gelesen wird, falls dies aktiviert ist (siehe unten).\\
|
|
Definiert mit init/Kconfig:686
|
|
\english{This option enables the complete Linux kernel ``.config'' file contents to be saved in the kernel.
|
|
It provides documentation of which kernel options are used in a running kernel or in an on-disk kernel.
|
|
This information can be extracted from the kernel image file with the script scripts/extract-ikconfig and
|
|
used as input to rebuild the current kernel or to build another kernel.
|
|
It can also be extracted from a running kernel by reading /proc/config.gz if enabled (below).}
|
|
\note{Ist nicht unbedingt notwendig, auch in Debian Bookworm ist dies ausgeschaltet.}
|
|
|
|
\subsubsection{Enable access to .config through /proc/config.gz}
|
|
CONFIG\_IKCONFIG\_PROC [=y] \textbf{[Y]}\\
|
|
Diese Option ermöglicht den Zugriff auf die Kernelkonfigurationsdatei über
|
|
/proc/config.gz.
|
|
|
|
%1.27
|
|
\subsection{Enable kernel headers through /sys/kernel/kheaders.tar.xz}
|
|
CONFIG\_IKHEADERS \colorbox{yellow!80}{[=m] \textbf{[N]}}\\*
|
|
Diese Option ermöglicht den Zugriff auf die In-Kernel-Header, die während des
|
|
Build-Prozesses erzeugt werden. Diese können verwendet werden, um
|
|
eBPF-Tracing-Programme oder ähnliche Programme zu erstellen. Wenn Sie die Header
|
|
als Modul erstellen, wird ein Modul namens \texttt{kheaders.ko} erstellt, das bei Bedarf
|
|
geladen werden kann, um Zugriff auf die Header zu erhalten.
|
|
\english{This option enables access to the in-kernel headers that are generated during the build process.
|
|
These can be used to build eBPF tracing programs, or similar programs.
|
|
If you build the headers as a module, a module called kheaders.ko is built which can be loaded on-demand
|
|
to get access to headers.}
|
|
\note{Ist auch als Modul nicht unbedingt notwendig, wie auch in Debian Bookworm wird dies ausgeschaltet.}
|
|
|
|
%1.28
|
|
\subsection{Kernel log buffer size (16 \texorpdfstring{$\Rightarrow$}{=>} 64KB, 17 \texorpdfstring{$\Rightarrow$}{=>} 128KB)}
|
|
CONFIG\_LOG\_BUF\_SHIFT [=17] \textbf{[17]}\\*
|
|
Wählen Sie die minimale Größe des Kernel-Protokollpuffers als eine Potenz von 2 aus.
|
|
Die endgültige Größe wird durch den Konfigurationsparameter LOG\_CPU\_MAX\_BUF\_SHIFT
|
|
beeinflusst, siehe unten. Eine höhere Größe kann auch durch den Boot-Parameter
|
|
\glqq log\_buf\_len\grqq{} erzwungen werden.\\
|
|
Beispiele:\\
|
|
\indent 17 $\Rightarrow$ 128 KB\\
|
|
\indent 16 $\Rightarrow$ 64 KB\\
|
|
\indent 15 $\Rightarrow$ 32 KB\\
|
|
\indent 14 $\Rightarrow$ 16 KB\\
|
|
\indent 13 $\Rightarrow$ 8 KB\\
|
|
\indent 12 $\Rightarrow$ 4 KB\\
|
|
Symbol: LOG\_BUF\_SHIFT\\
|
|
Type: Integer (Ganzzahl)\\
|
|
Bereich (range): [12 25]
|
|
\english{Select the minimal kernel log buffer size as a power of 2.
|
|
The final size is affected by LOG\_CPU\_MAX\_BUF\_SHIFT config parameter, see below.
|
|
Any higher size also might be forced by ``log\_buf\_len'' boot parameter.\\
|
|
Examples:\\
|
|
\indent 17 $=>$ 128 KB\\
|
|
\indent 16 $=>$ 64 KB\\
|
|
\indent 15 $=>$ 32 KB\\
|
|
\indent 14 $=>$ 16 KB\\
|
|
\indent 13 $=> $ 8 KB\\
|
|
\indent 12 $=> $ 4 KB}
|
|
|
|
%1.29
|
|
\subsection{CPU kernel log buffer size contribution (13 \texorpdfstring{$\Rightarrow$}{=>} 8 KB, 17 \texorpdfstring{$\Rightarrow$}{=>} 128KB)}
|
|
CONFIG\_LOG\_BUF\_SHIFT [=12] \textbf{[12]}\\
|
|
Diese Option ermöglicht es, die Standardgröße des Ringpuffers entsprechend der Anzahl
|
|
der CPUs zu erhöhen. Der Wert definiert den Beitrag jeder CPU als eine Potenz von 2.
|
|
Der beanspruchte Speicherplatz beträgt in der Regel nur wenige Zeilen, kann aber viel
|
|
mehr sein, wenn Probleme gemeldet werden, z.\,B. bei Rückverfolgungen.
|
|
Die erhöhte Größe bedeutet, dass ein neuer Puffer zugewiesen werden muss und der
|
|
ursprüngliche statische Puffer ungenutzt ist. Dies ist nur auf Systemen mit mehr CPUs
|
|
sinnvoll. Daher wird dieser Wert nur verwendet, wenn die Summe der Beiträge größer ist
|
|
als die Hälfte des Standard-Kernel-Ringpuffers, wie durch \texttt{LOG\_BUF\_SHIFT} definiert.
|
|
Die Standardwerte sind so eingestellt, dass mehr als 16 CPUs erforderlich sind, um die
|
|
Zuweisung auszulösen. Diese Option wird auch ignoriert, wenn der Kernelparameter
|
|
\glqq log\_buf\_len\grqq{} verwendet wird, da er eine exakte (Zweierpotenz) Größe des
|
|
Ringpuffers erzwingt. Die Anzahl der möglichen CPUs wird für diese Berechnung verwendet,
|
|
wobei Hotplugging ignoriert wird, so dass die Berechnung für das Worst-Case-Szenario
|
|
optimal ist und gleichzeitig ein einfacher Algorithmus ab dem Hochfahren verwendet
|
|
werden kann. Beispiele für Verschiebungswerte und ihre Bedeutung:\\
|
|
\indent 17 $\Rightarrow$ 128 KB für jede CPU\\
|
|
\indent 16 $\Rightarrow$ 64 KB für jede CPU\\
|
|
\indent 15 $\Rightarrow$ 32 KB für jede CPU\\
|
|
\indent 14 $\Rightarrow$ 16 KB für jede CPU\\
|
|
\indent 13 $\Rightarrow$ 8 KB für jede CPU\\
|
|
\indent 12 $\Rightarrow$ 4 KB für jede CPU\\
|
|
Symbol: LOG\_CPU\_MAX\_BUF\_SHIFT\\
|
|
Type: Integer (Ganzzahl)\\
|
|
Bereich (range): [0 21]
|
|
\english{This option allows to increase the default ring buffer size according to the number of CPUs.
|
|
The value defines the contribution of each CPU as a power of 2.
|
|
The used space is typically only few lines however it might be much more when problems are reported, e.g. backtraces.\\
|
|
The increased size means that a new buffer has to be allocated and the original static one is unused.
|
|
It makes sense only on systems with more CPUs.
|
|
Therefore this value is used only when the sum of contributions is greater than the half of the default kernel ring
|
|
buffer as defined by LOG\_BUF\_SHIFT.
|
|
The default values are set so that more than 16~CPUs are needed to trigger the allocation.\\
|
|
Also this option is ignored when ``log\_buf\_len'' kernel parameter is used as it forces an exact (power of two) size of the ring buffer.\\
|
|
The number of possible CPUs is used for this computation ignoring hotplugging making the computation optimal for the worst case
|
|
scenario while allowing a simple algorithm to be used from bootup.\\
|
|
Examples shift values and their meaning:\\
|
|
\indent 17 $=>$ 128 KB for each CPU\\
|
|
\indent 16 $=>$ 64 KB for each CPU\\
|
|
\indent 15 $=>$ 32 KB for each CPU\\
|
|
\indent 14 $=>$ 16 KB for each CPU\\
|
|
\indent 13 $=>$ 8 KB for each CPU\\
|
|
\indent 12 $=>$ 4 KB for each CPU}
|
|
|
|
%1.30
|
|
\subsection{Printk indexing debugfs interface)}
|
|
CONFIG\_PRINTK\_INDEX \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Unterstützung für die Indizierung aller zur Kompilierzeit bekannten
|
|
printk-Formate unter\\
|
|
$<$debugfs$>$/printk/index/$<$module$>$ hinzufügen.
|
|
Dies kann als Teil der Wartung von Daemonen, die /dev/kmsg überwachen,
|
|
verwendet werden, da es die Überprüfung der in einem Kernel vorhandenen
|
|
printk-Formate erlaubt, was die Erkennung von Fällen ermöglicht,
|
|
in denen überwachte printks geändert oder nicht mehr vorhanden sind.\\
|
|
Es gibt keine zusätzlichen Laufzeitkosten für printk, wenn dies aktiviert ist.
|
|
\english{Add support for indexing of all printk formats known at compile time at $<$debugfs$>$/printk/index/$<$module$>$.\\
|
|
This can be used as part of maintaining daemons which monitor /dev/kmsg, as it permits auditing the printk formats present in a kernel,
|
|
allowing detection of cases where monitored printks are changed or no longer present.\\
|
|
There is no additional runtime cost to printk with this enabled.}
|
|
\note{Wie bei Debian Bookworm wird diese Indizierung ausgeschaltet.}
|
|
|
|
%1.31
|
|
\subsection{Scheduler features \texorpdfstring{$\rightarrow$}{->}}
|
|
\textit{(Scheduler-Funktionen)}
|
|
|
|
\subsubsection{Enable utilization clamping for RT/FAIR tasks}
|
|
CONFIG\_UCLAMP\_TASK \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Diese Funktion ermöglicht es dem Scheduler, die geklemmte Auslastung jeder CPU
|
|
auf der Grundlage der auf dieser CPU geplanten RUNNABLE-Tasks zu verfolgen.
|
|
Mit dieser Option kann der Benutzer die minimale und maximale CPU-Auslastung
|
|
angeben, die für RUNNABLE-Aufgaben zulässig ist. Die maximale Auslastung
|
|
definiert die maximale Häufigkeit, mit der ein Task laufen soll, während die
|
|
minimale Auslastung die minimale Häufigkeit definiert, mit der er laufen soll.\\
|
|
Sowohl die Minimal- als auch die Maximalwerte für die Auslastung sind Hinweise
|
|
für den Scheduler, um seine Frequenzauswahl zu verbessern, aber sie erzwingen
|
|
oder gewähren keine bestimmte Bandbreite für Tasks.\\
|
|
Im Zweifelsfall sagen Sie N für Nein.
|
|
\english{This feature enables the scheduler to track the clamped utilization of each CPU based on RUNNABLE tasks scheduled on that CPU.\\
|
|
With this option, the user can specify the min and max CPU utilization allowed for RUNNABLE tasks.
|
|
The max utilization defines the maximum frequency a task should use while the min utilization defines the minimum frequency it should use.\\
|
|
Both min and max utilization clamp values are hints to the scheduler, aiming at improving its frequency selection policy,
|
|
but they do not enforce or grant any specific bandwidth for tasks.\\
|
|
If in doubt, say N.}
|
|
\note{Wie bei Debian Bookworm und WSL2 wird dies ausgeschaltet.}
|
|
|
|
\paragraph{Number of supported utilization clamp buckets}$~$\\
|
|
CONFIG\_UCLAMP\_BUCKETS\_COUNT [=5] \textbf{[5]}\\
|
|
Legt die Anzahl der zu verwendenden Klammerbereiche fest. Der Bereich der
|
|
einzelnen Buckets ist SCHED\_CAPACITY\_SCALE/UCLAMP\_BUCKETS\_COUNT.
|
|
Je höher die Anzahl der Clamp-Buckets, desto feiner die Granularität und
|
|
desto höher die Präzision der Clamp-Aggregation und -Verfolgung während der
|
|
Laufzeit.
|
|
Mit dem minimalen Konfigurationswert haben wir beispielsweise 5~Clamp"=Buckets,
|
|
die jeweils $\qty{20}{\percent}$ Auslastung verfolgen. Eine um $\qty{25}{\percent}$ gesteigerte Aufgabe
|
|
wird im Bucket [20..39]\% gezählt und setzt den effektiven Wert der
|
|
Bucketklemme auf $\qty{25}{\percent}$.
|
|
Wenn eine zweite, um $\qty{30}{\percent}$ erhöhte Aufgabe auf derselben CPU eingeplant wird,
|
|
wird diese Aufgabe im selben Bucket wie die erste Aufgabe gezählt und erhöht
|
|
den effektiven Bucket"=Clamp"=Wert auf $\qty{30}{\percent}$.
|
|
Der effektive Klemmwert eines Bereichs wird auf seinen Nennwert ($\qty{20}{\percent}$ im
|
|
obigen Beispiel) zurückgesetzt, wenn keine weiteren Aufgaben mehr in diesem
|
|
Bereich gezählt werden. Bei einigen Aufgaben kann eine zusätzliche
|
|
Verstärkungs-/Kappungsmarge hinzugefügt werden. Im obigen Beispiel wird
|
|
die $\qty{25}{\percent}$-Aufgabe auf $\qty{30}{\percent}$ angehoben,
|
|
bis sie die CPU verlässt.
|
|
Sollte dies auf bestimmten Systemen nicht akzeptabel sein, ist es immer
|
|
möglich, den Spielraum zu verringern, indem die Anzahl der Clamp"=Buckets
|
|
erhöht wird, um den verbrauchten Speicher gegen die Genauigkeit der
|
|
Laufzeitverfolgung einzutauschen.\\
|
|
Im Zweifelsfall sollten Sie den Standardwert verwenden.
|
|
\english{Defines the number of clamp buckets to use.\\
|
|
The range of each bucket will be SCHED\_CAPACITY\_SCALE/UCLAMP\_BUCKETS\_COUNT.
|
|
The higher the number of clamp buckets the finer their granularity and the higher the precision of clamping aggregation and tracking at run-time.\\
|
|
For example, with the minimum configuration value we will have 5~clamp buckets tracking 20\% utilization each.
|
|
A 25\% boosted tasks will be refcounted in the [20..39]\% bucket and will set the bucket clamp effective value to 25\%.\\
|
|
If a second 30\% boosted task should be co-scheduled on the same CPU, that task will be refcounted in the same bucket of the first task
|
|
and it will boost the bucket clamp effective value to 30\%.
|
|
The clamp effective value of a bucket is reset to its nominal value (20\% in the example above) when there are no more tasks refcounted in that bucket.\\
|
|
An additional boost/capping margin can be added to some tasks.
|
|
In the example above the 25\% task will be boosted to 30\% until it exits the CPU.
|
|
If that should be considered not acceptable on certain systems, it's always possible to reduce the margin by increasing the number of
|
|
clamp buckets to trade off used memory for run-time tracking precision.\\
|
|
If in doubt, use the default value.}
|
|
|
|
%1.32
|
|
\subsection{Memory placement aware NUMA scheduler}
|
|
CONFIG\_NUMA\_BALANCING [=y] \textbf{[Y]}\\
|
|
Diese Option bietet Unterstützung für die automatische
|
|
NUMA-kompatible Speicher-/Task-Platzierung.
|
|
Der Mechanismus ist recht primitiv und basiert darauf, dass Speicher
|
|
migriert wird, wenn er Referenzen auf den Knoten hat, auf dem die Aufgabe läuft.
|
|
Dieses System ist auf UMA"=Systemen inaktiv.
|
|
\english{This option adds support for automatic NUMA aware memory/task placement.
|
|
The mechanism is quite primitive and is based on migrating memory when
|
|
it has references to the node the task is running on.\\
|
|
This system will be inactive on UMA systems.}
|
|
|
|
\subsubsection{Automatically enable NUMA aware memory/task placemnent}
|
|
CONFIG\_NUMA\_BALANCING\_DEFAULT\_ENABLED [=y] \textbf{[Y]}\\
|
|
Wenn diese Option gesetzt ist, wird der automatische NUMA"=Ausgleich aktiviert,
|
|
wenn das System auf einem NUMA"=Rechner läuft.
|
|
\english{If set, automatic NUMA balancing will be enabled if running on a NUMA machine.}
|
|
|
|
%1.33 Control Group support
|
|
\subsection{Control Group support \texorpdfstring{$\rightarrow$}{->}}
|
|
CONFIG\_CGROUPS [=y] \textbf{[Y]}\\
|
|
(Unterstützung der Kontrollgruppe)\\
|
|
Diese Option bietet Unterstützung für die Gruppierung von Prozessgruppen zur
|
|
Verwendung mit Prozesskontrollsubsystemen wie Cpusets, CFS, Speicherkontrolle
|
|
oder Geräteisolierung.
|
|
\\Siehe
|
|
\begin{itemize}
|
|
\item Dokumentation/scheduler/sched-design-CFS.rst (CFS)
|
|
\item Documentation/admin-guide/cgroup-v1/ (Funktionen für Gruppierung,
|
|
Isolierung und Ressourcenkontrolle)
|
|
\end{itemize}
|
|
Sagen Sie N, wenn Sie unsicher sind.
|
|
\english{This option adds support for grouping sets of processes together, for use with process
|
|
control subsystems such as Cpusets, CFS, memory controls or device isolation.\\
|
|
See\\
|
|
-- Documentation/scheduler/sched-design-CFS.rst (CFS)\\
|
|
-- Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation and resource control)\\
|
|
Say N if unsure.}
|
|
|
|
%1.33.1
|
|
\subsubsection{Favor dynamic modification latency reduction by default}
|
|
CONFIG\_CGROUP\_FAVOR\_DYNMODS [=n] \textbf{[N]}\\
|
|
Diese Option aktiviert standardmäßig die Einhängeoption
|
|
\glqq favordynmods\grqq{}, die die Latenzzeiten dynamischer C-Gruppen"=Änderungen
|
|
wie Task-Migrationen und Controller-Ein-/Ausschaltungen
|
|
auf Kosten von Hot-Path-Operationen wie Forks und Exits
|
|
verteuert.\\
|
|
Sagen Sie N, wenn Sie unsicher sind.
|
|
\english{This option enables the ``favordynmods'' mount option by default which reduces the latencies of dynamic
|
|
cgroup modifications such as task migrations and controller on/offs at the cost of making hot path operations
|
|
such as forks and exits more expensive.\\
|
|
Say N if unsure.}
|
|
|
|
|
|
%1.33.2
|
|
\subsubsection{Memory controller}
|
|
CONFIG\_MEMCG [=y] \textbf{[Y]}\\
|
|
Ermöglicht die Kontrolle über den Speicherbedarf von Tasks in einer cgroup.
|
|
\english{Provides control over the memory footprint of tasks in a cgroup.}
|
|
\paragraph{Legacy cgroup v1 memory controller}{\tiny seit 6.11}$~$\\
|
|
CONFIG\_MEMCG\_V1 [=n] \textbf{[N]}\\
|
|
Legacy cgroup v1 memory controller, der durch die cgroup v2 Implementierung veraltet ist.
|
|
Der v1 ist für ältere Anwendungen gedacht, die noch nicht auf die neue cgroup v2-Schnittstelle umgestellt wurden.
|
|
Wenn Sie keine solche Anwendung haben, ist es völlig in Ordnung, wenn Sie diese Option deaktiviert lassen.
|
|
\\
|
|
Bitte beachten Sie, dass der Funktionsumfang des Legacy-Speicher-Controllers aufgrund der Abkündigung
|
|
wahrscheinlich schrumpfen wird.
|
|
Von neuen Implementierungen mit v1-Controller wird dringend abgeraten.
|
|
\english{Legacy cgroup v1 memory controller which has been deprecated by cgroup v2 implementation.
|
|
The v1 is there for legacy applications which haven't migrated to the new cgroup v2 interface yet.
|
|
If you do not have any such application then you are completely fine leaving this option disabled.\\
|
|
Please note that feature set of the legacy memory controller is likely going to shrink due to deprecatoin process.
|
|
New deployments with v1 controller are highly discouraged.}
|
|
|
|
%1.33.3
|
|
\subsubsection{IO controller}
|
|
CONFIG\_BLK\_CGROUP [=y] \textbf{[Y]}\\
|
|
Generische Block IO Controller cgroup Schnittstelle. Dies ist die gemeinsame
|
|
cgroup-Schnittstelle, die von verschiedenen IO-Kontrollstrategien verwendet
|
|
werden sollte.\\
|
|
Derzeit wird sie vom CFQ IO Scheduler zur Erkennung von Task-Gruppen und zur
|
|
Steuerung der Zuweisung von Festplattenbandbreite (proportionale
|
|
Zeitscheibenzuweisung) an solche Task-Gruppen verwendet. Sie wird auch von
|
|
der Bio-Throttling-Logik in der Blockschicht verwendet, um eine Obergrenze
|
|
für die IO-Raten auf einem Gerät einzuführen.\\
|
|
Diese Option aktiviert nur die generische Infrastruktur des Block-IO-Controllers.
|
|
Man muss auch die tatsächliche IO-Kontrolllogik/-Politik aktivieren.
|
|
Um die proportionale Aufteilung der Festplattenbandbreite in CFQ zu aktivieren,
|
|
setzen Sie
|
|
CONFIG\_BFQ\_GROUP\_IOSCHED=y; für die Aktivierung der Drosselungspolitik
|
|
setzen Sie CONFIG\_BLK\_DEV\_THROTTLING=y.\\
|
|
Weitere Informationen finden Sie unter
|
|
Documentation/admin-guide/cgroup-v1/blkio-controller.rst.
|
|
\english{Generic block IO controller cgroup interface.
|
|
This is the common cgroup interface which should be used by various IO controlling policies.\\
|
|
Currently, CFQ IO scheduler uses it to recognize task groups and control disk bandwidth allocation
|
|
(proportional time slice allocation) to such task groups.
|
|
It is also used by bio throttling logic in block layer to implement upper limit in IO rates on a device.\\
|
|
This option only enables generic Block IO controller infrastructure.
|
|
One needs to also enable actual IO controlling logic/policy.\\
|
|
For enabling proportional weight division of disk bandwidth in CFQ, set CONFIG\_BFQ\_GROUP\_IOSCHED=y;
|
|
for enabling throttling policy, set CONFIG\_BLK\_DEV\_THROTTLING=y.
|
|
See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information.}
|
|
|
|
%1.33.4
|
|
\subsubsection{CPU controller \texorpdfstring{$\rightarrow$}{->}}
|
|
CONFIG\_CGROUP\_SCHED [=y] \textbf{[Y]}\\
|
|
Diese Funktion ermöglicht es dem CPU-Scheduler, Task"=Gruppen zu erkennen und
|
|
die Zuweisung von CPU"=Bandbreite an solche Task"=Gruppen zu steuern.
|
|
Er verwendet cgroups, um Tasks zu gruppieren.
|
|
\english{This feature lets CPU scheduler recognize task groups and control CPU bandwidth allocation to such task groups.
|
|
It uses cgroups to group tasks.}
|
|
|
|
\paragraph{Group scheduling for SCHED\_OTHER}$~$\\
|
|
CONFIG\_FAIR\_GROUP\_SCHED [=y] \textbf{[Y]}\\
|
|
\textit{Für diese Option gibt es keine Hilfe.}
|
|
|
|
\subparagraph{CPU bandwidth provisioning for FAIR\_GROUP\_SCHED}$~$\\
|
|
CONFIG\_CFS\_BANDWIDTH [=y] \textbf{[Y]}\\
|
|
Mit dieser Option können Benutzer CPU-Bandbreitenraten (Limits) für Aufgaben
|
|
festlegen, die innerhalb des Fair Group Schedulers laufen.
|
|
Gruppen, für die kein Limit festgelegt wurde, gelten als uneingeschränkt
|
|
und werden ohne Einschränkung ausgeführt.\\
|
|
Weitere Informationen finden Sie unter Documentation/scheduler/sched-bwc.rst.
|
|
\english{This option allows users to define CPU bandwidth rates (limits) for tasks running within the fair group scheduler.
|
|
Groups with no limit set are considered to be unconstrained and will run with no restriction.
|
|
See Documentation/scheduler/sched-bwc.rst for more information.}
|
|
|
|
\paragraph{Group scheduling for SCHED\_RR/FIFO}$~$\\
|
|
CONFIG\_RT\_GROUP\_SCHED [=n] \textbf{[N]}\\
|
|
Mit dieser Funktion können Sie den Task-Gruppen explizit echte CPU-Bandbreite
|
|
zuweisen. Wenn sie aktiviert ist, wird es auch unmöglich, Echtzeitaufgaben
|
|
für Nicht"=Root"=Benutzer zu planen, bis Sie ihnen Echtzeitbandbreite zuweisen.\\
|
|
Weitere Informationen finden Sie unter Documentation/scheduler/sched-rt-group.rst.
|
|
\english{This feature lets you explicitly allocate real CPU bandwidth to task groups.
|
|
If enabled, it will also make it impossible to schedule realtime tasks for non-root users
|
|
until you allocate realtime bandwidth for them.
|
|
See Documentation/scheduler/sched-rt-group.rst for more information.}
|
|
|
|
/subsubsection{Utilization clamping per group of tasks}
|
|
CONFIG\_UCLAMP\_TASK\_GROUP [=y] \textbf{[Y]}\\
|
|
Mit dieser Funktion kann der Scheduler die geklemmte Auslastung jeder CPU auf der
|
|
Grundlage der RUNNABLE"=Tasks, die derzeit auf dieser CPU geplant sind, verfolgen.
|
|
Wenn diese Option aktiviert ist, kann der Benutzer eine minimale und maximale
|
|
CPU-Bandbreite angeben, die für jede einzelne Aufgabe in einer Gruppe zulässig ist.
|
|
Mit der maximalen Bandbreite kann die maximale Frequenz, die ein Task verwenden kann,
|
|
festgelegt werden, während mit der minimalen Bandbreite eine minimale Frequenz
|
|
festgelegt werden kann, die ein Task immer verwenden wird.
|
|
Bei aktivierter aufgabengruppenbasierter Auslastungsbegrenzung wird ein eventuell
|
|
angegebener aufgabenspezifischer Begrenzungswert durch den von cgroup angegebenen
|
|
Begrenzungswert eingeschränkt. Sowohl die minimale als auch die maximale Task"=Klemmung
|
|
kann nicht größer sein als die entsprechende auf Task"=Gruppen"=Ebene definierte Klemmung.\\
|
|
Im Zweifelsfall sagen Sie N.
|
|
\english{This feature enables the scheduler to track the clamped utilization of each CPU based on RUNNABLE tasks
|
|
currently scheduled on that CPU.\\
|
|
When this option is enabled, the user can specify a min and max CPU bandwidth which is allowed for each single task
|
|
in a group.
|
|
The max bandwidth allows to clamp the maximum frequency a task can use, while the min bandwidth allows to define
|
|
a minimum frequency a task will always use.\\
|
|
When task group based utilization clamping is enabled, an eventually specified task-specific clamp value
|
|
is constrained by the cgroup specified clamp value.
|
|
Both minimum and maximum task clamping cannot be bigger than the corresponding clamping defined at task group level.\\
|
|
If in doubt, say N.}
|
|
|
|
%1.33.5
|
|
\subsubsection{PIDs controller}
|
|
CONFIG\_CGROUP\_PIDS [=y] \textbf{[Y]}\\
|
|
Erzwingt die Begrenzung der Prozessanzahl im Bereich einer cgroup. Jeder Versuch, mehr
|
|
Prozesse zu forken, als in der cgroup erlaubt sind, schlägt fehl.
|
|
PIDs sind grundsätzlich eine globale Ressource, da es ziemlich trivial ist, eine
|
|
PID-Erschöpfung zu erreichen, bevor man auch nur eine konservative kmemcg-Grenze erreicht.
|
|
Infolgedessen ist es möglich, ein System zum Stillstand zu bringen, ohne durch andere
|
|
cgroup-Richtlinien eingeschränkt zu werden. Der PID"=Regler ist dafür ausgelegt, dies zu verhindern.
|
|
Es sollte beachtet werden, dass organisatorische Operationen (wie z.\,B. das Anhängen an
|
|
eine cgroup-Hierarchie) *nicht* durch den PIDs-Controller blockiert werden, da das PIDs-Limit
|
|
nur die Fähigkeit eines Prozesses zum Forking, nicht aber zum Anhängen an eine cgroup beeinflusst.
|
|
\english{Provides enforcement of process number limits in the scope of a cgroup.
|
|
Any attempt to fork more processes than is allowed in the cgroup will fail.
|
|
PIDs are fundamentally a global resource because it is fairly trivial to reach PID exhaustion
|
|
before you reach even a conservative kmemcg limit.
|
|
As a result, it is possible to grind a system to halt without being limited by other cgroup policies.
|
|
The PIDs controller is designed to stop this from happening.\\
|
|
It should be noted that organisational operations (such as attaching to a cgroup hierarchy) will *not*
|
|
be blocked by the PIDs controller, since the PIDs limit only affects a process's ability to fork,
|
|
not to attach to a cgroup.}
|
|
|
|
\subsubsection{RDMA controller}
|
|
CONFIG\_CGROUP\_RDMA [=y] \textbf{[Y]}\\
|
|
Ermöglicht die Durchsetzung der vom IB-Stack definierten RDMA-Ressourcen. Es ist relativ
|
|
einfach für Verbraucher, RDMA-Ressourcen zu erschöpfen, was dazu führen kann, dass Ressourcen
|
|
für andere Verbraucher nicht mehr verfügbar sind. Der RDMA-Controller ist dafür ausgelegt,
|
|
dies zu verhindern. Das Anhängen von Prozessen mit aktiven RDMA-Ressourcen an die
|
|
cgroup-Hierarchie ist erlaubt, auch wenn die Grenze der Hierarchie überschritten werden kann.
|
|
\english{Provides enforcement of RDMA resources defined by IB stack.
|
|
It is fairly easy for consumers to exhaust RDMA resources, which can result into resource unavailability to other consumers.
|
|
RDMA controller is designed to stop this from happening.
|
|
Attaching processes with active RDMA resources to the cgroup hierarchy is allowed even if can cross the hierarchy's limit.}
|
|
|
|
\subsubsection{Device memory controller (DMEM)}
|
|
CONFIG\_CGROUP\_DMEM [=y] \textbf{[Y]}\\
|
|
Der DMEM-Controller ermöglicht es kompatiblen Geräten, die Nutzung des Gerätespeichers auf der Grundlage der cgroup-Hierarchie einzuschränken.\\
|
|
So können Sie zum Beispiel die VRAM-Nutzung für Anwendungen im DRM-Subsystem einschränken.
|
|
\english{The DMEM controller allows compatible devices to restrict device memory usage based on the cgroup hierarchy.\\
|
|
As an example, it allows you to restrict VRAM usage for applications in the DRM subsystem.}
|
|
|
|
%1.33.8 Freezer controller
|
|
\subsubsection{Freezer controller}
|
|
CONFIG\_CGROUP\_FREEZER [=y] \textbf{[Y]}\\
|
|
Ermöglicht das Einfrieren und Aufheben des Einfrierens aller Aufgaben in einer C-Group.
|
|
Diese Option betrifft die ORIGINAL cgroup-Schnittstelle. Der cgroup2-Speicher-Controller
|
|
enthält standardmäßig wichtige In-Kernel-Speicherverbraucher.\\
|
|
Wenn Sie cgroup2 verwenden, sagen Sie N.
|
|
\english{Provides a way to freeze and unfreeze all tasks in a cgroup.\\
|
|
This option affects the ORIGINAL cgroup interface.
|
|
The cgroup2 memory controller includes important in-kernel memory consumers per default.\\
|
|
If you're using cgroup2, say N.}
|
|
|
|
\subsubsection{HugeTLB controller}
|
|
CONFIG\_CGROUP\_HUGETLB [=y] \textbf{[Y]}\\
|
|
Bietet eine cgroup-Steuerung für HugeTLB"=Seiten. Wenn Sie dies aktivieren, können Sie die
|
|
HugeTLB"=Nutzung pro cgroup begrenzen. Die Begrenzung wird während eines Seitenfehlers
|
|
durchgesetzt. Da \mbox{HugeTLB} keine Seitenrückforderung unterstützt, bedeutet die Durchsetzung
|
|
des Limits zum Zeitpunkt des Seitenfehlers, dass die Anwendung ein SIGBUS-Signal erhält,
|
|
wenn sie versucht, über das Limit hinaus auf HugeTLB-Seiten zuzugreifen. Dies setzt voraus,
|
|
dass die Anwendung im Voraus weiß, wie viele HugeTLB-Seiten sie für ihre Nutzung benötigt.
|
|
Die Kontrollgruppe wird im dritten Page-lru-Zeiger verfolgt. Dies bedeutet, dass wir die
|
|
Steuergruppe nicht mit einer riesigen Seite von weniger als 3~Seiten verwenden können.
|
|
\english{Provides a cgroup controller for HugeTLB pages.
|
|
When you enable this, you can put a per cgroup limit on HugeTLB usage.
|
|
The limit is enforced during page fault.
|
|
Since HugeTLB doesn't support page reclaim, enforcing the limit at page fault time implies that, the application
|
|
will get SIGBUS signal if it tries to access HugeTLB pages beyond its limit.
|
|
This requires the application to know beforehand how much HugeTLB pages it would require for its use.
|
|
The control group is tracked in the third page lru pointer.
|
|
This means that we cannot use the controller with huge page less than 3~pages.}
|
|
|
|
%1.33.10 Cpuset controller
|
|
\subsubsection{Cpuset controller}
|
|
CONFIG\_CPUSETS [=y] \textbf{[Y]}\\
|
|
Mit dieser Option können Sie CPUSETs erstellen und verwalten, die es ermöglichen, ein System
|
|
dynamisch in Gruppen von CPUs und Speicherknoten zu partitionieren und Aufgaben zuzuweisen,
|
|
die nur innerhalb dieser Gruppen ausgeführt werden.
|
|
Dies ist vor allem auf großen SMP- oder NUMA"=Systemen nützlich.\\
|
|
Sagen Sie N, wenn Sie unsicher sind.
|
|
\english{This option will let you create and manage CPUSETs which allow dynamically partitioning a system
|
|
into sets of CPUs and Memory Nodes and assigning tasks to run only within those sets.
|
|
This is primarily useful on large SMP or NUMA systems.\\
|
|
Say N if unsure.}
|
|
|
|
\paragraph{Legacy cgroup v1 cpusets controller}{\tiny seit 6.12}$~$\\
|
|
CONFIG\_CPUSETS\_V1 [=n] \textbf{[N]}\\
|
|
Die Option v1 ist für ältere Anwendungen gedacht, die noch nicht auf die neue cgroup v2-Schnittstelle migriert wurden.
|
|
Wenn Sie keine solche Anwendung haben, ist es völlig in Ordnung, wenn Sie diese Option deaktiviert lassen.\\
|
|
Sagen Sie N, wenn Sie unsicher sind.
|
|
\english{Legacy cgroup v1 cpusets controller which has been deprecated by cgroup v2 implementation.
|
|
The v1 is there for legacy applications which haven't migrated to the new cgroup v2 interface yet.
|
|
If you do not have any such application then you are completely fine leaving this option disabled.\\
|
|
Say N if unsure.}
|
|
|
|
\paragraph{Include legacy /proc/$<$pid$>$/cpuset file}$~$\\
|
|
CONFIG\_PROC\_PID\_CPUSET [=y] \textbf{[Y]}\\
|
|
\textit{Für diese Option gibt es keine Hilfe.}
|
|
\english{There is no help available for this option.}
|
|
|
|
%1.33.11 Device controller
|
|
\subsubsection{Device controller}
|
|
CONFIG\_CGROUP\_DEVICE [=y] \textbf{[Y]}\\
|
|
Bietet einen cgroup-Controller an, der Whitelists für Geräte implementiert,
|
|
die ein Prozess in der cgroup mknod oder öffnen kann.
|
|
\english{Provides a cgroup controller implementing whitelists for
|
|
devices which a process in the cgroup can mknod or open.}
|
|
|
|
\subsubsection{Simple CPU accounting controller}
|
|
CONFIG\_CGROUP\_CPUACCT [=y] \textbf{[Y]}\\*
|
|
(Einfacher CPU-Accounting-Controller)\\
|
|
Bietet einen einfachen Controller für die Überwachung des gesamten
|
|
CPU"=Verbrauchs der Tasks in einer cgroup an.
|
|
\english{Provides a simple controller for monitoring the total CPU consumed by the tasks in a cgroup.}
|
|
|
|
\subsubsection{Perf controller}
|
|
CONFIG\_CGROUP\_PERF [=y] \textbf{[Y]}\\
|
|
Diese Option erweitert den Modus perf per-cpu, um die Überwachung auf Threads zu beschränken,
|
|
die zu der angegebenen cgroup gehören und auf der angegebenen CPU laufen.
|
|
Sie kann auch verwendet werden, um die cgroup ID in Stichproben zu haben,
|
|
so dass sie Leistungsereignisse zwischen cgroups überwachen kann.\\
|
|
Sagen Sie N, wenn Sie unsicher sind.
|
|
\english{This option extends the perf per-cpu mode to restrict monitoring to threads which belong to
|
|
the cgroup specified and run on the designated cpu.
|
|
Or this can be used to have cgroup ID in samples so that it can monitor performance events among cgroups.\\
|
|
Say N if unsure.}
|
|
|
|
\subsubsection{Support for eBPF programs attached to cgroups}
|
|
CONFIG\_CGROUP\_BPF [=y] \textbf{[Y]}\\
|
|
Erlaubt das Anhängen von eBPF-Programmen an eine cgroup mit dem
|
|
bpf(2)-Syscall-Befehl\\
|
|
\texttt{BPF\_PROG\_ATTACH}.\\
|
|
In welchem Kontext auf diese Programme zugegriffen wird, hängt von der Art des Attachments ab.
|
|
Zum Beispiel werden Programme, die mit BPF\_CGROUP\_INET\_INGRESS angehängt werden,
|
|
auf dem Ingress"=Pfad von inet"=Sockets ausgeführt.
|
|
\english{Allow attaching eBPF programs to a cgroup using the bpf(2) syscall command BPF\_PROG\_ATTACH.\\
|
|
In which context these programs are accessed depends on the type of attachment.
|
|
For instance, programs that are attached using BPF\_CGROUP\_INET\_INGRESS will be executed on the ingress path of inet sockets.}
|
|
|
|
\subsubsection{Misc resource controller}
|
|
CONFIG\_CGROUP\_MISC [=y] \textbf{[Y]}\\
|
|
Bietet einen Controller für verschiedene Ressourcen auf einem Host.
|
|
Verschiedene skalare Ressourcen sind die Ressourcen auf dem Host-System, die nicht wie die
|
|
anderen cgroups abstrahiert werden können. Dieser Controller verfolgt und begrenzt die
|
|
verschiedenen Ressourcen, die von einem Prozess verwendet werden, der an eine
|
|
cgroup"=Hierarchie angeschlossen ist.
|
|
Weitere Informationen finden Sie im Abschnitt misc cgroup in /Documentation/admin-guide/cgroup-v2.rst.
|
|
\english{Provides a controller for miscellaneous resources on a host.\\
|
|
Miscellaneous scalar resources are the resources on the host system which cannot be abstracted like the other cgroups.
|
|
This controller tracks and limits the miscellaneous resources used by a process attached to a cgroup hierarchy.\\
|
|
For more information, please check misc cgroup section in /Documentation/admin-guide/cgroup-v2.rst.}
|
|
|
|
\subsubsection{Debug controller}
|
|
CONFIG\_CGROUP\_DEBUG [=n] \textbf{[N]}\\
|
|
Diese Option aktiviert einen einfachen Controller, der Debugging"=Informationen über das
|
|
cgroups"=Frame\-work exportiert. Dieser Controller ist nur für das Debugging von Kontroll-C"=Gruppen gedacht.
|
|
Seine Schnitt\-stellen sind nicht stabil.\\
|
|
Sagen Sie N.
|
|
\english{This option enables a simple controller that exports debugging information about the cgroups framework.
|
|
This controller is for control cgroup debugging only.
|
|
Its interfaces are not stable.\\
|
|
Say N.}
|
|
|
|
%1.34 Namespaces support
|
|
\subsection{Namespaces support \texorpdfstring{$\rightarrow$}{->}}
|
|
CONFIG\_NAMESPACES [=y] \textbf{[Y]}\\
|
|
(Unterstützung von Namensräumen, namespaces)\\
|
|
Bietet die Möglichkeit, Aufgaben mit verschiedenen Objekten unter Verwendung derselben Kennung
|
|
arbeiten zu lassen. Zum Beispiel kann sich dieselbe IPC-ID auf verschiedene Objekte beziehen oder
|
|
dieselbe Benutzer-ID oder pid kann sich auf verschiedene Aufgaben beziehen, wenn sie in verschiedenen
|
|
Namensräumen verwendet werden.
|
|
\english{Provides the way to make tasks work with different objects using the same id.
|
|
For example same IPC id may refer to different objects or same user id or pid may refer to different
|
|
tasks when used in different namespaces.}
|
|
|
|
\subsubsection{UTS namespace}
|
|
CONFIG\_UTS\_NS [=y] \textbf{[Y]}\\
|
|
In diesem Namensraum sehen Aufgaben verschiedene Informationen, die mit dem Systemaufruf
|
|
\texttt{uname()} bereitgestellt werden.
|
|
\english{In this namespace tasks see different info provided with the uname() system call}
|
|
|
|
\subsubsection{TIME namespace}
|
|
CONFIG\_TIME\_NS [=y] \textbf{[Y]}\\
|
|
In diesem Namespace können boottime und monotone Uhren eingestellt werden.
|
|
Die Zeit läuft dann mit der gleichen Geschwindigkeit weiter.
|
|
\english{In this namespace boottime and monotonic clocks can be set.
|
|
The time will keep going with the same pace.}
|
|
|
|
\subsubsection{IPC namespace}
|
|
CONFIG\_IPC\_NS [=y] \textbf{[Y]}\\
|
|
In diesem Namensraum arbeiten Aufgaben mit IPC-IDs (Interprozess-IDs), die jeweils
|
|
verschiedenen IPC-Objekten in verschiedenen Namensräumen entsprechen.
|
|
\english{In this namespace tasks work with IPC ids which correspond to different IPC objects in different namespaces.}
|
|
|
|
\subsubsection{User namespace}
|
|
CONFIG\_USER\_NS [=y] \textbf{[Y]}\\
|
|
Dies ermöglicht es Containern, d.\,h. V"=Servern, Benutzernamensräume zu verwenden,
|
|
um verschiedene Benutzerinformationen für verschiedene Server bereitzustellen.
|
|
Wenn Benutzernamensräume im Kernel aktiviert sind, wird empfohlen, dass die Option \texttt{MEMCG} ebenfalls
|
|
aktiviert wird und dass der Benutzerbereich die Speicherkontrollgruppen verwendet,
|
|
um die Speichermenge zu begrenzen, die nicht privilegierte Benutzer verwenden können.
|
|
\english{This allows containers, i.e. vservers, to use user namespaces to provide different user info for different servers.\\
|
|
When user namespaces are enabled in the kernel it is recommended that the MEMCG option also be enabled and that
|
|
user-space use the memory control groups to limit the amount of memory a memory unprivileged users can use.\\
|
|
If unsure, say N.}
|
|
|
|
\paragraph{Allow unprivileged users to create namespaces}$~$\\
|
|
CONFIG\_USERS\_NS\_UNPRIVILEGED [=y] \textbf{[Y]}\\
|
|
Wenn diese Funktion deaktiviert ist, können unprivilegierte Benutzer keine neuen Namensräume
|
|
erstellen. Die Möglichkeit, dass Benutzer ihre eigenen Namespaces erstellen können, war Teil mehrerer
|
|
kürzlich erfolgter lokaler Privilegienerweiterungen. Wenn Sie also Benutzernamespaces benötigen,
|
|
aber paranoid bzw. sicherheitsbewusst sind, sollten Sie diese Funktion deaktivieren.
|
|
Diese Einstellung kann zur Laufzeit mit dem
|
|
\texttt{kernel.unprivileged\_userns\_clone sysctl}
|
|
außer Kraft gesetzt werden.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{When disabled, unprivileged users will not be able to create new namespaces.
|
|
Allowing users to create their own namespaces has been part of several recent local privilege
|
|
escalation exploits, so if you need user namespaces but are paranoid, security-conscious you want to disable this.\\
|
|
This setting can be overridden at runtime via the kernel.unprivileged\_userns\_clone sysctl.\\
|
|
If unsure, say Y.}
|
|
|
|
\subsubsection{PID namespace}
|
|
CONFIG\_PID\_NS [=y] \textbf{[Y]}\\
|
|
Unterstützung von Prozess-ID-Namensräumen. Dies ermöglicht es, mehrere Prozesse mit der gleichen pid
|
|
zu haben, solange sie sich in verschiedenen pid-Namensräumen befinden. Dies ist ein Baustein von Containern.
|
|
\english{Support process id namespaces.
|
|
This allows having multiple processes with the same pid as long as they are in different pid namespaces.
|
|
This is a building block of containers.}
|
|
|
|
\subsubsection{Network namespace}
|
|
CONFIG\_NET\_NS [=y] \textbf{[Y]}\\
|
|
Ermöglicht es dem Benutzer, scheinbar mehrere Instanzen des Netzwerkstapels zu erstellen.
|
|
\english{Allow user space to create what appear to be multiple instances of the network stack.}
|
|
|
|
%1.35 Checkpoint/restore support
|
|
\subsection{Checkpoint/restore support}
|
|
CONFIG\_CHECKPOINT\_RESTORE [=y] \textbf{[Y]}\\
|
|
Ermöglicht zusätzliche Kernel-Funktionen in einer Art Checkpoint/Restore.
|
|
Insbesondere fügt es zu\-sätz\-liche prctl"=Codes zum Einrichten von Prozesstext, Daten- und Heap"=Segmentgrößen
|
|
sowie einige zusätzliche \texttt{/proc}-Dateisystemeinträge hinzu.\\
|
|
Wenn Sie unsicher sind, geben Sie hier N an.
|
|
\english{Enables additional kernel features in a sake of checkpoint/restore.
|
|
In particular it adds auxiliary prctl codes to setup process text, data and heap segment sizes, and a few additional /proc filesystem entries.\\
|
|
If unsure, say N here.}
|
|
|
|
%1.36 Automatic process group scheduling
|
|
\subsection{Automatic process group scheduling}
|
|
CONFIG\_SCHED\_AUTOGROUP [=y] \textbf{[Y]}\\
|
|
Mit dieser Option wird der Scheduler für gängige Desktop"=Workloads optimiert,
|
|
indem automatisch Aufgabengruppen erstellt und aufgefüllt werden.
|
|
Diese Trennung von Arbeitslasten isoliert aggressive CPU"=Brenner (wie Build"=Jobs) von Desktop"=Anwendungen.
|
|
Die automatische Erstellung von Aufgabengruppen basiert derzeit auf der Aufgabensitzung.
|
|
\english{This option optimizes the scheduler for common desktop workloads by automatically creating and
|
|
populating task groups.
|
|
This separation of workloads isolates aggressive CPU burners (like build jobs) from desktop applications.
|
|
Task group autogeneration is currently based upon task session.}
|
|
|
|
%1.37 Kernel -> user space relay support (formerly relayfs)
|
|
\subsection{Kernel\texorpdfstring{$\rightarrow$}{->}user space relay support (formerly relayfs)}
|
|
CONFIG\_RELAY [=y] \textbf{[Y]}\\
|
|
Diese Option aktiviert die Unterstützung für die Relaisschnittstelle in bestimmten Dateisystemen
|
|
(wie debugfs). Sie wurde entwickelt, um einen effizienten Mechanismus für Werkzeuge und Einrichtungen
|
|
zur Weiterleitung großer Datenmengen aus dem Kernelbereich in den Benutzerbereich bereitzustellen.\\
|
|
Wenn Sie unsicher sind, sagen Sie N.
|
|
\english{This option enables support for relay interface support in certain file systems (such as debugfs).
|
|
It is designed to provide an efficient mechanism for tools and facilities to relay large amounts
|
|
of data from kernel space to user space.\\
|
|
If unsure, say N.}
|
|
|
|
%1.38 Initial RAM filesystem and RAM disk (initramfs/initrd) support
|
|
\subsection{Initial RAM filesystem and RAM disk (initramfs/initrd) support}
|
|
CONFIG\_BLK\_DEV\_INITRD [=y] \textbf{[Y]}\\
|
|
Das anfängliche RAM-Dateisystem ist ein ramfs, das vom Bootloader (loadlin oder lilo) geladen und vor
|
|
dem normalen Bootvorgang als root eingehängt wird. Es wird typischerweise verwendet, um Module zu laden,
|
|
die zum Einhängen des \glqq echten\grqq{} Root"=Dateisystems benötigt werden, usw.\\
|
|
Siehe $<$file:Documentation/admin-guide/initrd.rst$>$ für Details.
|
|
Wenn die RAM"=Disk"=Unterstützung\\
|
|
(BLK\_DEV\_RAM) eben\-falls enthalten ist, aktiviert dies auch die anfängliche
|
|
RAM"=Disk"=Unterstützung (initrd) und fügt \qty{15}{\kilo\byte} (auf einigen anderen Architekturen mehr) zur Kernelgröße hinzu.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{The initial RAM filesystem is a ramfs which is loaded by the boot loader (loadlin or lilo) and that
|
|
is mounted as root before the normal boot procedure.
|
|
It is typically used to load modules needed to mount the ``real'' root file system, etc.
|
|
See $<$file:Documentation/admin-guide/initrd.rst$>$ for details.\\
|
|
If RAM disk support (BLK\_DEV\_RAM) is also included, this also enables initial RAM disk (initrd) support and adds
|
|
15~Kbytes (more on some other architectures) to the kernel size.\\
|
|
If unsure say Y.}
|
|
|
|
%1.38.1
|
|
\subsubsection{Initramfs source file(s)}
|
|
CONFIG\_INITRAMFS\_SOURCE [=] \textbf{[~]}\\
|
|
Dies kann entweder ein einzelnes cpio-Archiv mit der Endung .cpio oder eine durch Leerzeichen getrennte
|
|
Liste von Verzeichnissen und Dateien zur Erstellung des initramfs-Abbilds sein.
|
|
Ein cpio-Archiv sollte ein Dateisystemarchiv enthalten, das als initramfs-Abbild verwendet werden soll.
|
|
Verzeichnisse sollten ein Dateisystem-Layout enthalten, das in das initramfs-Abbild aufgenommen werden
|
|
soll. Die Dateien sollten Einträge in dem Format enthalten, das vom
|
|
Programm \texttt{usr/gen\_init\_cpio} im Kernelbaum beschrieben wird.
|
|
Wenn mehrere Verzeichnisse und Dateien angegeben werden, wird das initramfs-Abbild die Summe aller
|
|
dieser Verzeichnisse und Dateien sein.\\
|
|
Siehe $<$file:Documentation/driver-api/early-userspace/early\_userspace\_support.rst$>$
|
|
für weitere Details.\\
|
|
Wenn Sie sich nicht sicher sind, lassen Sie das Feld leer.\\
|
|
Symbol: INITRAMFS\_SOURCE [=]\\
|
|
Type : string (Zeichenkette)
|
|
\english{This can be either a single cpio archive with a .cpio suffix or a space-separated list of directories
|
|
and files for building the initramfs image.
|
|
A cpio archive should contain a filesystem archive to be used as an initramfs image.
|
|
Directories should contain a filesystem layout to be included in the initramfs image.
|
|
Files should contain entries according to the format described by the ``usr/gen\_init\_cpio'' program in the kernel tree.\\
|
|
When multiple directories and files are specified then the initramfs image will be the aggregate of all of them.\\
|
|
See $<$file:Documentation/driver-api/early-userspace/early\_userspace\_support.rst$>$ for more details.}
|
|
|
|
%1.38.2 Support initial ramdisk/ramfs compressed using gzip
|
|
\subsubsection{Support initial ramdisk/ramfs compressed using gzip}
|
|
CONFIG\_RD\_GZIP \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Unterstützung des Ladens eines gzip-kodierten Anfangs-Ramdisk-
|
|
oder Cpio-Puffers.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Support loading of a gzip encoded initial ramdisk or cpio buffer.
|
|
If unsure, say Y.}
|
|
\note{Seit dem Kernel 5.9 wird standardmäßig mit ZSTD komprimiert.}
|
|
|
|
|
|
\subsubsection{Support initial ramdisk/ramfs compressed using bzip2}
|
|
CONFIG\_RD\_BZIP2 \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Unterstützung des Ladens eines bzip2-kodierten Anfangs-Ramdisk-
|
|
oder Cpio-Puffers.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Support loading of a bzip2 encoded initial ramdisk or cpio buffer\\
|
|
If unsure, say N.}
|
|
\note{Seit dem Kernel 5.9 wird standardmäßig mit ZSTD komprimiert.}
|
|
|
|
|
|
\subsubsection{Support initial ramdisk/ramfs compressed using LZMA}
|
|
CONFIG\_RD\_LZMA \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Unterstützung des Ladens eines LZMA-kodierten Anfangs-Ramdisk-
|
|
oder Cpio-Puffers.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Support loading of a LZMA encoded initial ramdisk or cpio buffer\\
|
|
If unsure, say N.}
|
|
\note{Seit dem Kernel 5.9 wird standardmäßig mit ZSTD komprimiert.}
|
|
|
|
|
|
\subsubsection{Support initial ramdisk/ramfs compressed using XZ}
|
|
CONFIG\_RD\_XZ \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Unterstützung des Ladens eines XZ-kodierten Anfangs-Ramdisk-
|
|
oder Cpio-Puffers.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Support loading of a XZ encoded initial ramdisk or cpio buffer. If unsure, say N.}
|
|
\note{Seit dem Kernel 5.9 wird standardmäßig mit ZSTD komprimiert.}
|
|
|
|
|
|
\subsubsection{Support initial ramdisk/ramfs compressed using LZO}
|
|
CONFIG\_RD\_LZO \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Unterstützung des Ladens eines LZO-kodierten Anfangs-Ramdisk-
|
|
oder Cpio-Puffers.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Support loading of a LZO encoded initial ramdisk or cpio buffer\\
|
|
If unsure, say N.}
|
|
\note{Seit dem Kernel 5.9 wird standardmäßig mit ZSTD komprimiert.}
|
|
|
|
\subsubsection{Support initial ramdisk/ramfs compressed using LZ4}
|
|
CONFIG\_RD\_LZ4 \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Unterstützung des Ladens eines LZ4-kodierten Anfangs-Ramdisk-
|
|
oder Cpio-Puffers.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Support loading of a LZ4 encoded initial ramdisk or cpio buffer\\
|
|
If unsure, say N.}
|
|
\note{Seit dem Kernel 5.9 wird standardmäßig mit ZSTD komprimiert.}
|
|
|
|
%1.38.8 Support initial ramdisk/ramfs compressed using ZSTD
|
|
\subsubsection{Support initial ramdisk/ramfs compressed using ZSTD}
|
|
CONFIG\_RD\_ZSTD [=y] \textbf{[Y]}\\
|
|
Unterstützung des Ladens eines ZSTD-kodierten Anfangs-Ramdisk-
|
|
oder Cpio-Puffers.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Support loading of a ZSTD encoded initial ramdisk or cpio buffer.\\
|
|
If unsure, say N.}
|
|
|
|
%1.39 Boot config support
|
|
\subsection{Boot config support}
|
|
CONFIG\_BOOT\_CONFIG [=y] \textbf{[Y]}\\
|
|
Extra boot config ermöglicht es dem Systemadministrator, eine Konfigurationsdatei
|
|
als zusätzliche Erweiterung der Kernel-Cmdline beim Booten zu übergeben.
|
|
Die Bootkonfigurationsdatei muss am Ende von \texttt{initramfs} mit Prüfsumme, Größe und
|
|
magischem Wort angehängt werden.\\
|
|
Siehe $<$file:Documentation/admin-guide/bootconfig.rst$>$ für Details.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Extra boot config allows system admin to pass a config file as complemental extension of kernel cmdline when booting.
|
|
The boot config file must be attached at the end of initramfs with checksum, size and magic word.
|
|
See $<$file:Documentation/admin-guide/bootconfig.rst$>$ for details.
|
|
If unsure, say Y.}
|
|
|
|
\subsubsection{Force unconditional bootconfig processing}
|
|
CONFIG\_BOOT\_CONFIG\_FORCE [=n] \textbf{[N]}\\
|
|
Wenn diese Kconfig-Option gesetzt ist, wird die BOOT\_CONFIG-Verarbeitung auch dann
|
|
durchgeführt, wenn der Kernel-Boot-Parameter \texttt{bootconfig} weggelassen wird.
|
|
Tatsächlich gibt es mit dieser Kconfig-Option keine Möglichkeit, den Kernel dazu
|
|
zu bringen, die von BOOT\_CONFIG gelieferten Kernel-Boot-Parameter zu ignorieren.\\
|
|
Wenn Sie unsicher sind, sagen Sie N.
|
|
\english{With this Kconfig option set, BOOT\_CONFIG processing is carried out even when the ``bootconfig''
|
|
kernel-boot parameter is omitted.
|
|
In fact, with this Kconfig option set, there is no way to make the kernel ignore the
|
|
BOOT\_CONFIG-supplied kernel-boot parameters.\\
|
|
If unsure, say N.}
|
|
|
|
\subsubsection{Embed bootconfig file in the kernel}
|
|
CONFIG\_BOOT\_CONFIG\_EMBED [=n] \textbf{[N]}\\
|
|
Eine mit BOOT\_CONFIG\_EMBED\_FILE angegebene bootconfig-Datei in den Kernel einbetten.
|
|
Normalerweise wird die bootconfig-Datei mit dem initrd-Image geladen. Wenn das System
|
|
jedoch initrd nicht unterstützt, hilft Ihnen diese Option, indem sie eine bootconfig-Datei
|
|
beim Erstellen des Kernels einbettet.\\
|
|
Wenn Sie unsicher sind, sagen Sie N.
|
|
\english{Embed a bootconfig file given by BOOT\_CONFIG\_EMBED\_FILE in the kernel.
|
|
Usually, the bootconfig file is loaded with the initrd image.
|
|
But if the system doesn't support initrd, this option will help you by embedding a bootconfig file while building the kernel.\\
|
|
If unsure, say N}
|
|
|
|
%1.40 Preserve cpio archive mtimes in initramfs
|
|
\subsection{Preserve cpio archive mtimes in initramfs}
|
|
CONFIG\_INITRAMFS\_PRESERVE\_MTIME [=y] \textbf{[Y]}\\
|
|
Jeder Eintrag in einem initramfs cpio-Archiv enthält einen mtime-Wert.
|
|
Wenn diese Option aktiviert ist, übernehmen die extrahierten cpio-Einträge diese mtime,
|
|
wobei die mtime-Einstellung des Verzeichnisses aufgeschoben wird, bis nach der
|
|
Erstellung aller untergeordneten Einträge.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Each entry in an initramfs cpio archive carries an mtime value.
|
|
When enabled, extracted cpio items take this mtime, with directory mtime setting deferred until after creation of any child entries.\\
|
|
If unsure, say Y.}
|
|
|
|
%1.41 Compiler optimization level
|
|
\subsection{Compiler optimization level \texorpdfstring{$\rightarrow$}{->}}
|
|
Optimierungsgrad des Compilers, Auswahl aus den folgenden zwei Punkten:
|
|
|
|
\subsubsection{Optimize for performance (-O2)}
|
|
CONFIG\_CC\_OPTIMIZE\_FOR\_PERFORMANCE [=y] \textbf{[Y]}\\
|
|
Dies ist die Standardoptimierungsstufe für den Kernel, die mit dem Compiler-Flag \texttt{-O2}
|
|
erstellt wird, um die beste Leistung und die hilfreichsten Warnungen bei der
|
|
Kompilierung zu erhalten.
|
|
\english{This is the default optimization level for the kernel, building with the ``-O2'' compiler flag for best performance and most
|
|
helpful compile-time warnings.}
|
|
|
|
\subsubsection{Optimize for size (-Os)}
|
|
CONFIG\_CC\_OPTIMIZE\_FOR\_SIZE [=n] \textbf{[N]}\\
|
|
Wenn Sie diese Option wählen, wird \texttt{-Os} an Ihren Compiler übergeben,
|
|
was zu einem kleineren Kernel führt.
|
|
\english{Choosing this option will pass ``-Os'' to your compiler resulting in a smaller kernel.}
|
|
|
|
%1.42 Configure standard kernel features (expert users)
|
|
\subsection{Configure standard kernel features (expert users)}
|
|
CONFIG\_EXPERT \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\
|
|
Mit dieser Option können bestimmte Basis-Kerneloptionen und -einstellungen
|
|
deaktiviert oder optimiert werden. Dies ist für spezielle Umgebungen gedacht,
|
|
die einen \glqq Nicht-Standard\grqq{}-Kernel tolerieren können.\\
|
|
Verwenden Sie diese Option nur, wenn Sie wirklich wissen, was Sie tun.
|
|
\english{This option allows certain base kernel options and settings to be disabled or tweaked.
|
|
This is for specialized environments which can tolerate a ``non-standard'' kernel.
|
|
Only use this if you really know what you are doing.}
|
|
|
|
%1.42.1 Enable 16-bit UID system calls
|
|
\subsubsection{Enable 16-bit UID system calls}
|
|
CONFIG\_UID16 [=y] \textbf{[Y]}\\
|
|
Damit werden die alten 16-Bit-UID-Syscall-Wrapper aktiviert.
|
|
\english{This enables the legacy 16-bit UID syscall wrappers.}
|
|
|
|
%1.42.2 Multiple users, groups and capabilities support
|
|
\subsubsection{Multiple users, groups and capabilities support}
|
|
CONFIG\_MULTIUSER [=y] \textbf{[Y]}\\
|
|
Diese Option aktiviert die Unterstützung für Nicht-Root-Benutzer, -Gruppen und -Fähigkeiten.
|
|
Wenn Sie hier N angeben, werden alle Prozesse mit UID 0, GID 0 und allen möglichen Fähigkeiten ausgeführt.
|
|
Wenn Sie hier N angeben, wird auch die Unterstützung für Systemaufrufe,
|
|
die sich auf UIDs, GIDs und Fähigkeiten beziehen, wie setuid, setgid und capset,
|
|
herauskompiliert.
|
|
|
|
Wenn Sie unsicher sind, sagen Sie hier Y.
|
|
\english{This option enables support for non-root users, groups and capabilities.
|
|
If you say N here, all processes will run with UID 0, GID 0, and all
|
|
possible capabilities.
|
|
Saying N here also compiles out support for system calls related to UIDs,
|
|
GIDs, and capabilities, such as setuid, setgid, and capset.\\
|
|
If unsure, say Y here.}
|
|
\note{Dies wäre nur auf kleinen Systemen ohne Benutzer sinnvoll, auf N zu stellen.}
|
|
|
|
%1.42.3 sgetmask/ssetmask syscalls support
|
|
\subsubsection{sgetmask/ssetmask syscalls support}
|
|
CONFIG\_SGETMASK\_SYSCALL [=y] \textbf{[Y]}\\
|
|
sys\_sgetmask und sys\_ssetmask sind veraltete Systemaufrufe, die
|
|
in der libc nicht mehr unterstützt werden, aber in einigen Architekturen immer noch standardmäßig aktiviert sind.\\
|
|
Wenn Sie unsicher sind, lassen Sie die Standardoption hier.
|
|
\english{sys\_sgetmask and sys\_ssetmask are obsolete system calls no
|
|
longer supported in libc but still enabled by default in some architectures.\\
|
|
If unsure, leave the default option here.
|
|
}
|
|
\note{Eventuell könnten wir dies auf N stellen.}
|
|
|
|
%1.42.4 Sysfs syscall support
|
|
\subsubsection{Sysfs syscall support}
|
|
CONFIG\_SYSFS\_SYSCALL \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
sys\_sysfs ist ein veralteter Systemaufruf, der von der libc nicht mehr unterstützt wird.
|
|
Beachten Sie, dass die Deaktivierung dieser Option sicherer ist, aber die Kompatibilität mit einigen Systemen beeinträchtigen könnte.\\
|
|
Wenn Sie unsicher sind, sagen Sie hier Y.
|
|
\english{
|
|
\\sys\_sysfs is an obsolete system call no longer supported in libc.
|
|
Note that disabling this option is more secure but might break
|
|
compatibility with some systems.\\
|
|
If unsure, say Y here.
|
|
}
|
|
\note{Eventuell könnten wir dies auf N stellen.}
|
|
|
|
%1.42.5 open by fhandle syscalls
|
|
\subsubsection{open by fhandle syscalls}
|
|
CONFIG\_FHANDLE {[=y] \textbf{[Y]}}\\
|
|
Wenn Sie hier Y angeben, kann ein Programm auf Benutzerebene Dateinamen auf Handles
|
|
abbilden und diese Handles dann später für verschiedene Dateisystemoperationen verwenden.
|
|
Dies ist nützlich bei der Implementierung von Userspace-Dateiservern, die jetzt Dateien
|
|
über Handles anstelle von Namen verfolgen.
|
|
Das Handle bleibt gleich, auch wenn die Dateinamen umbenannt werden.
|
|
Ermöglicht open\_by\_handle\_at(2) und name\_to\_handle\_at(2) Syscalls.
|
|
\english{If you say Y here, a user level program will be able to map file names to handle and
|
|
then later use the handle for different file system operations.
|
|
This is useful in implementing userspace file servers, which now track files using handles
|
|
instead of names.
|
|
The handle would remain the same even if file names get renamed.
|
|
Enables open\_by\_handle\_at(2) and name\_to\_handle\_at(2) syscalls.}
|
|
|
|
%1.42.6 Posix Clocks \& timers
|
|
\subsubsection{Posix Clocks \& timers}
|
|
CONFIG\_POSIX\_TIMERS [=y] \textbf{[Y]}\\
|
|
Dazu gehört die native Unterstützung für POSIX-Timer im Kernel.
|
|
Einige eingebettete Systeme haben keine Verwendung für sie und können daher deaktiviert
|
|
werden, um die Größe des Kernel-Images zu verringern.\\[0.5em]
|
|
Wenn diese Option deaktiviert ist, sind die folgenden Syscalls nicht verfügbar\:
|
|
timer\_create, timer\_gettime: timer\_getoverrun, timer\_settime, timer\_delete,
|
|
clock\_adjtime, getitimer, setitimer, alarm.\\
|
|
Außerdem werden die Syscalls clock\_settime, clock\_gettime, clock\_getres und
|
|
clock\_nanosleep nur auf CLOCK\_REALTIME, CLOCK\_MONOTONIC und CLOCK\_BOOTTIME beschränkt.\\
|
|
Wenn Sie unsicher sind, sagen Sie y.
|
|
\english{This includes native support for POSIX timers to the kernel.
|
|
Some embedded systems have no use for them and therefore they
|
|
can be configured out to reduce the size of the kernel image.
|
|
When this option is disabled, the following syscalls won't be
|
|
available\: timer\_create, timer\_gettime\: timer\_getoverrun,
|
|
timer\_settime, timer\_delete, clock\_adjtime, getitimer,
|
|
setitimer, alarm.\\
|
|
Furthermore, the clock\_settime, clock\_gettime,
|
|
clock\_getres and clock\_nanosleep syscalls will be limited to\\
|
|
CLOCK\_REALTIME, CLOCK\_MONOTONIC and CLOCK\_BOOTTIME only.\\
|
|
If unsure say y.}
|
|
|
|
%1.42.7 Enable support for printk
|
|
\subsubsection{Enable support for printk}
|
|
CONFIG\_PRINTK [=y] \textbf{[Y]}\\
|
|
Diese Option aktiviert die normale printk-Unterstützung.
|
|
Wenn Sie diese Option entfernen, werden die meisten Meldungsstrings aus dem Kernel-Image entfernt
|
|
und der Kernel wird mehr oder weniger still.\\
|
|
Da dies die Diagnose von Systemproblemen sehr erschwert,
|
|
wird von der Angabe von N hier dringend abgeraten.
|
|
\english{This option enables normal printk support.
|
|
Removing it eliminates most of the message strings from the kernel image and
|
|
makes the kernel more or less silent.
|
|
As this makes it very difficult to diagnose system problems,
|
|
saying N here is strongly discouraged.}
|
|
|
|
%1.42.8 BUG() support
|
|
\subsubsection{BUG() support}
|
|
CONFIG\_BUG [=y] \textbf{[Y]}\\
|
|
Durch die Deaktivierung dieser Option wird die Unterstützung für BUG und WARN eliminiert,
|
|
wodurch die Größe Ihres Kernel-Images verringert und zahlreiche fatale Zustände
|
|
möglicherweise stillschweigend ignoriert werden.
|
|
Sie sollten die Deaktivierung dieser Option nur für eingebettete Systeme in Erwägung ziehen,
|
|
die keine Möglichkeit haben, Fehler zu melden.\\Sagen Sie einfach Y.
|
|
\english{Disabling this option eliminates support for BUG and WARN,
|
|
reducing the size of your kernel image and potentially quietly ignoring numerous fatal conditions.
|
|
You should only consider disabling this option for embedded systems
|
|
with no facilities for reporting errors.\\Just say Y.}
|
|
|
|
%1.42.9 Enable ELF core dumps
|
|
\subsubsection{Enable ELF core dumps}
|
|
CONFIG\_ELF\_CORE [=y] \textbf{[Y]}\\
|
|
Aktivieren Sie die Unterstützung für die Erzeugung von Kerndumps. Die Deaktivierung spart etwa 4k.
|
|
\english{Enable support for generating core dumps. Disabling saves about 4k.}
|
|
|
|
%1.42.10 Enable PC-Speaker support
|
|
\subsubsection{Enable PC-Speaker support}
|
|
CONFIG\_PCSPKR\_PLATFORM \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Mit dieser Option können Sie die Unterstützung des internen PC-Lautsprechers deaktivieren, um Speicherplatz zu sparen.
|
|
\english{This option allows to disable the internal PC speaker support, saving some memory.}
|
|
|
|
%1.42.11 Enable smaller-sized data structures for core (NEW)
|
|
\subsubsection{Enable smaller-sized data structures for core (NEW)}
|
|
CONFIG\_BASE\_SMALL [=n] \textbf{[N]}\\
|
|
Wenn Sie diese Option aktivieren, wird die Größe verschiedener Kernel-Datenstrukturen reduziert.
|
|
Dies spart Speicher auf kleinen Rechnern, kann aber die Leistung verringern.
|
|
\english{Enabling this option reduces the size of miscellaneous core kernel data structures.
|
|
This saves memory on small machines, but may reduce performance.}
|
|
|
|
%1.42.12 Enable futex support
|
|
\subsubsection{Enable futex support}
|
|
CONFIG\_FUTEX [=y] \textbf{[Y]}\\
|
|
Die Deaktivierung dieser Option führt dazu, dass der Kernel ohne Unterstützung für \glqq schnelle Userspace-Mutexe\grqq{}
|
|
gebaut wird.
|
|
Der resultierende Kernel führt möglicherweise glibc-basierte Anwendungen nicht korrekt aus.
|
|
\english{Disabling this option will cause the kernel to be built without support for ``fast userspace mutexes''.
|
|
The resulting kernel may not run glibc-based applications correctly.}
|
|
|
|
%1.42.13 Enable eventpoll support
|
|
\subsubsection{Enable eventpoll support}
|
|
CONFIG\_EPOLL [=y] \textbf{[Y]}\\
|
|
Die Deaktivierung dieser Option führt dazu,
|
|
dass der Kernel ohne Unterstützung für die epoll-Familie von Systemaufrufen gebaut wird.
|
|
\english{Disabling this option will cause the kernel to be built without support for epoll family of system calls.}
|
|
|
|
%1.42.14 Enable signalfd() system call
|
|
\subsubsection{Enable signalfd() system call}
|
|
CONFIG\_SIGNALFD [=y] \textbf{[Y]}\\
|
|
Aktivieren Sie den Systemaufruf signalfd(), der den Empfang von Signalen auf einem Datei\-deskriptor ermöglicht.\\[0.5em]
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Enable the signalfd() system call that allows to receive signals on a file descriptor.\\
|
|
If unsure, say Y.}
|
|
|
|
%1.42.15 Enable timerfd() system call
|
|
\subsubsection{Enable timerfd() system call}
|
|
CONFIG\_TIMERFD [=y] \textbf{[Y]}\\
|
|
Aktivieren Sie den Systemaufruf timerfd(), der den Empfang von Timer-Ereignissen auf einem Datei\-deskriptor ermöglicht.\\[0.5em]
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Enable the timerfd() system call that allows to receive timer events on a file descriptor.\\
|
|
If unsure, say Y.}
|
|
|
|
%1.42.16 Enable eventfd() system call
|
|
\subsubsection{Enable eventfd() system call}
|
|
CONFIG\_EVENTFD [=y] \textbf{[Y]}\\
|
|
Aktivieren Sie den Systemaufruf eventfd(), der es ermöglicht, sowohl Kernel-Benachrichtigungen (z. B. KAIO)
|
|
als auch Userspace-Benachrichtigungen zu empfangen.\\[0.5em]
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Enable the eventfd() system call that allows to receive both kernel notification (ie. KAIO) or userspace notifications.\\
|
|
If unsure, say Y.}
|
|
|
|
%1.42.17 Use full shmem filesystem
|
|
\subsubsection{Use full shmem filesystem}
|
|
CONFIG\_SHMEM [=y] \textbf{[Y]}\\
|
|
Das shmem ist ein internes Dateisystem, das zur Verwaltung des gemeinsamen Speichers verwendet wird.
|
|
Es wird von swap unterstützt und verwaltet Ressourcengrenzen.
|
|
Es wird auch in den Userspace als tmpfs exportiert, wenn TMPFS aktiviert ist.
|
|
Wenn Sie diese Option deaktivieren, werden shmem und tmpfs durch den viel einfacheren ramfs-Code ersetzt,
|
|
der auf kleinen Systemen ohne Swap geeignet sein kann.
|
|
\english{The shmem is an internal filesystem used to manage shared memory.
|
|
It is backed by swap and manages resource limits.
|
|
It is also exported to userspace as tmpfs if TMPFS is enabled.
|
|
Disabling this option replaces shmem and tmpfs with the much simpler ramfs code,
|
|
which may be appropriate on small systems without swap.}
|
|
|
|
%1.42.18 Enable AIO support
|
|
\subsubsection{Enable AIO support}
|
|
CONFIG\_AIO [=y] \textbf{[Y]}\\
|
|
Diese Option aktiviert die asynchrone POSIX-E/A, die von einigen Hochleistungs-Thread-Anwendungen verwendet werden kann.
|
|
Die Deaktivierung dieser Option spart etwa 7k.
|
|
\english{This option enables POSIX asynchronous I/O which may by used by some high performance threaded applications.
|
|
Disabling this option saves about 7k.}
|
|
|
|
%1.42.19 Enable IO uring support
|
|
\subsubsection{Enable IO uring support}
|
|
CONFIG\_IO\_URING [=y] \textbf{[Y]}\\
|
|
Diese Option aktiviert die Unterstützung für die io\_uring-Schnittstelle, die es Anwendungen ermöglicht,
|
|
IO über Übermittlungs- und Abschlussringe zu übermitteln und abzuschließen,
|
|
die von Kernel und Anwendung gemeinsam genutzt werden.
|
|
\english{This option enables support for the io\_uring interface, enabling applications to submit and complete IO
|
|
through submission and completion rings that are shared between the kernel and application.}
|
|
|
|
%1.43 Enable madvice/fadvise syscalls
|
|
\subsection{Enable madvise/fadvise syscalls}
|
|
CONFIG\_ADVISE\_SYSCALLS [=y] \textbf{[Y]}\\
|
|
Diese Option aktiviert die Syscalls madvise und fadvise,
|
|
die von Anwendungen verwendet werden, um den Kernel über ihre zukünftige Speicher- oder Dateinutzung
|
|
zu informieren und so die Leistung zu verbessern.
|
|
Wenn Sie ein eingebettetes System bauen, bei dem keine Anwendungen diese Syscalls verwenden,
|
|
können Sie diese Option deaktivieren, um Platz zu sparen.
|
|
\english{This option enables the madvise and fadvise syscalls,
|
|
used by applications to advise the kernel about their future memory or file usage, improving performance.
|
|
If building an embedded system where no applications use these syscalls,
|
|
you can disable this option to save space.}
|
|
|
|
%1.44 Enable membarrier() system call
|
|
\subsection{Enable membarrier() system call}
|
|
CONFIG\_MEMBARRIER [=y] \textbf{[Y]}\\
|
|
Aktivieren Sie den Systemaufruf membarrier(), der die Ausgabe von Speicherbarrieren für alle laufenden Threads ermöglicht.
|
|
Damit können die Kosten für Speicherbarrieren im Benutzerbereich asymmetrisch verteilt werden,
|
|
indem Paare von Speicherbarrieren in Paare bestehend aus membarrier() und einer Compilerbarriere umgewandelt werden.\\[.5em]
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Enable the membarrier() system call that allows issuing memory barriers across all running threads,
|
|
which can be used to distribute the cost of user-space memory barriers asymmetrically by transforming
|
|
pairs of memory barriers into pairs consisting of membarrier() and a compiler barrier.\\
|
|
If unsure, say Y.}
|
|
|
|
%1.45 Enable kcmp() system call
|
|
\subsection{Enable kcmp() system call}
|
|
CONFIG\_KCMP [=y] \textbf{[Y]}\\
|
|
Aktivieren Sie den Systemaufruf Kernel-Ressourcenvergleich.
|
|
Er bietet dem Benutzerbereich die Mög\-lich\-keit, zwei Prozesse zu vergleichen, um festzustellen,
|
|
ob sie eine gemeinsame Ressource teilen,
|
|
wie z.\,B. einen Dateideskriptor oder sogar virtuellen Speicherplatz.\\
|
|
Wenn Sie unsicher sind, sagen Sie N.
|
|
\english{Enable the kernel resource comparison system call.
|
|
It provides user-space with the ability to compare two processes to see if they share a common resource,
|
|
such as a file descriptor or even virtual memory space.\\
|
|
If unsure, say N.}
|
|
|
|
%1.46 Enable rseq() system call
|
|
\subsection{Enable rseq() system call}
|
|
CONFIG\_RSEQ [=y] \textbf{[Y]}\\
|
|
Aktivieren Sie den Systemaufruf \glqq Neustartbare Sequenzen\grqq{}.
|
|
Er bietet einen User-Space-Cache für den aktuellen CPU-Nummernwert, der das Abrufen der aktuellen CPU-Nummer
|
|
aus dem User-Space beschleunigt, sowie eine ABI zur Beschleunigung von User-Space-Operationen auf pro-CPU-Daten.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Enable the restartable sequences system call.
|
|
It provides a user-space cache for the current CPU number value, which speeds up getting the current
|
|
CPU~number from user-space, as well as an ABI to speed up user-space operations on per-CPU data.\\
|
|
If unsure, say Y.}
|
|
|
|
%1.46.1 Enable debugging of rseq() system call (NEW)
|
|
\subsubsection{Enable debugging of rseq() system call (NEW)}
|
|
CONFIG\_DEBUG\_RSEQ [=n] \textbf{[N]}\\
|
|
Aktivieren Sie zusätzliche Debugging-Prüfungen für den Systemaufruf rseq.\\[.5em]
|
|
Wenn Sie unsicher sind, sagen Sie N.
|
|
\english{Enable extra debugging checks for the rseq system call.\\
|
|
If unsure, say N.}
|
|
|
|
%1.47 Enable cachestat() system call
|
|
\subsection{Enable cachestat() system call}
|
|
CONFIG\_CACHESTAT\_SYSCALL [=y] \textbf{[Y]}\\
|
|
Aktivieren Sie den Systemaufruf cachestat, der die Seiten-Cache-Statistiken einer Datei abfragt
|
|
(Anzahl der zwischengespeicherten Seiten, schmutzige Seiten, zum Zurückschreiben markierte Seiten,
|
|
(kürzlich) entfernte Seiten).\\[.5em]
|
|
Wenn Sie unsicher sind, sagen Sie hier Y.
|
|
\english{Enable the cachestat system call, which queries the page cache statistics of a file
|
|
(number of cached pages, dirty pages, pages marked for writeback, (recently) evicted pages).\\
|
|
If unsure say Y here.}
|
|
|
|
%1.47 PC/104 support
|
|
\subsection{PC/104 support}
|
|
CONFIG\_PC104 [=n] \textbf{[N]}\\
|
|
Zeigt PC/104-Formfaktor-Gerätetreiber und Optionen zur Auswahl und Konfiguration an.
|
|
Aktivieren Sie diese Option, wenn Ihr Zielrechner über einen PC/104-Bus verfügt.
|
|
\english{Expose PC/104 form factor device drivers and options available for selection and configuration.
|
|
Enable this option if your target machine has a PC/104 bus.}
|
|
|
|
%1.49 Load all symbols for debugging/ksymoops
|
|
\subsection{Load all symbols for debugging/ksymoops}
|
|
CONFIG\_KALLSYMS [=y] \textbf{[Y]}\\
|
|
(sichtbar wenn EXPERT [=y])\\
|
|
Geben Sie hier Y ein, damit der Kernel symbolische Absturzinformationen und
|
|
symbolische Stack-Backtraces ausgibt. Dies erhöht die Größe des Kernels etwas,
|
|
da alle Symbole in das Kernel-Image geladen werden müssen.
|
|
\english{Say Y here to let the kernel print out symbolic crash information and symbolic stack backtraces.
|
|
This increases the size of the kernel somewhat, as all symbols have to be loaded into the kernel image.}
|
|
|
|
%1.49.1
|
|
\subsubsection{Test the basic functions and performance of kallsyms}
|
|
CONFIG\_KALLSYMS\_SELFTEST [=n] \textbf{[N]}\\
|
|
Testen Sie die Grundfunktionen und die Leistung einiger Schnittstellen, wie z.\,B.
|
|
\texttt{kallsyms\_lookup\_name}. Außerdem wird die Kompressionsrate des
|
|
kallsyms-Kompressionsalgorithmus für den aktuellen Symbolsatz berechnet.
|
|
Starten Sie den Selbsttest automatisch nach dem Systemstart.\\
|
|
Es wird empfohlen, \texttt{dmesg | grep kallsyms\_selftest} auszuführen,
|
|
um die Testergebnisse zu sammeln.
|
|
In der letzten Zeile wird \texttt{finish} angezeigt, was bedeutet,
|
|
dass der Test abgeschlossen ist.
|
|
\english{Test the basic functions and performance of some interfaces, such as kallsyms\_lookup\_name.
|
|
It also calculates the compression rate of the kallsyms compression algorithm for the current symbol set.\\
|
|
Start self-test automatically after system startup.
|
|
Suggest executing ``dmesg | grep kallsyms\_selftest'' to collect test results.
|
|
``finish'' is displayed in the last line, indicating that the test is complete.}
|
|
|
|
\subsubsection{Include all symbols in kallsyms}
|
|
CONFIG\_KALLSYMS\_ALL \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
|
|
Normalerweise enthält kallsyms nur die Symbole von Funktionen für schönere
|
|
OOPS-Meldungen und Backtraces (d.\,h. Symbole aus den Abschnitten text und
|
|
inittext). Dies ist für die meisten Fälle ausreichend. Nur wenn Sie Kernel-Live-Patching
|
|
oder andere weniger häufige Anwendungsfälle (z.\,B. wenn ein Debugger verwendet
|
|
wird) aktivieren wollen, sind alle Symbole erforderlich (d.\,h. die Namen von Variablen
|
|
aus den Data-Abschnitten usw.).\\
|
|
Diese Option stellt sicher, dass alle Symbole in das Kernel-Image geladen werden
|
|
(d.\,h. Symbole aus allen Sektionen), was die Kernelgröße erhöht (je nach Kernelkonfiguration
|
|
kann sie \qty{300}{\kibi\byte} oder etwas Ähnliches betragen).\\
|
|
Sagen Sie N, es sei denn, Sie brauchen wirklich alle Symbole,
|
|
oder Kernel-Live-Patching.
|
|
\english{Normally kallsyms only contains the symbols of functions for nicer OOPS messages and backtraces
|
|
(i.e., symbols from the text and inittext sections).
|
|
This is sufficient for most cases.
|
|
And only if you want to enable kernel live patching, or other less common use cases (e.g., when a debugger is used) all symbols are required
|
|
(i.e., names of variables from the data sections, etc).\\
|
|
This option makes sure that all symbols are loaded into the kernel image (i.e., symbols from all sections) in cost of increased kernel
|
|
size (depending on the kernel configuration, it may be 300KiB or something like this).\\
|
|
Say N unless you really need all symbols, or kernel live patching.}
|
|
|
|
%1.50
|
|
\subsection{Kernel Performance Events And Counters \texorpdfstring{$\rightarrow$}{->}}
|
|
Kernel"=Leistungsereignisse und -Zähler
|
|
|
|
\subsubsection{Kernel performance events and counters}
|
|
CONFIG\_PERF\_EVENTS [=y] \textbf{[Y]}\\
|
|
Aktivieren Sie die Kernel"=Unterstützung für verschiedene von Software und Hardware
|
|
bereitgestellte Leistungsereignisse.
|
|
|
|
Software-Ereignisse werden entweder integriert oder über die Verwendung von generischen
|
|
Tracepoints unterstützt.
|
|
|
|
Die meisten modernen CPUs unterstützen Leistungsereignisse über Leistungszählerregister.
|
|
Diese Register zählen die Anzahl bestimmter Arten von hw-Ereignissen: z.\,B. ausgeführte
|
|
Anweisungen, erlittene Cachemisses oder falsch vorhergesagte Verzweigungen -- ohne den
|
|
Kernel oder Anwendungen zu verlangsamen. Diese Register können auch Unterbrechungen
|
|
auslösen, wenn eine bestimmte Anzahl von Ereignissen überschritten wird -- und können so
|
|
dazu verwendet werden, ein Profil des Codes zu erstellen, der auf dieser CPU läuft.
|
|
|
|
Das Linux"=Performance"=Event"=Subsystem bietet eine Abstraktion dieser Software- und
|
|
Hardware"=Event"=Fähigkeiten, die über einen Systemaufruf zugänglich sind und von dem
|
|
Dienstprogramm \texttt{perf} in \texttt{tools/perf/} verwendet werden.
|
|
Es stellt Zähler pro Task
|
|
und pro CPU zur Verfügung und bietet darüber hinaus Ereignisfunktionen.\\
|
|
Sagen Sie Y, wenn Sie unsicher sind.
|
|
\english{Enable kernel support for various performance events provided by software and hardware.\\
|
|
Software events are supported either built-in or via the use of generic tracepoints.\\
|
|
Most modern CPUs support performance events via performance counter registers.
|
|
These registers count the number of certain types of hw events: such as instructions executed, cachemisses suffered, or branches mis-predicted --
|
|
without slowing down the kernel or applications.
|
|
These registers can also trigger interrupts when a threshold number of events have passed -- and
|
|
can thus be used to profile the code that runs on that CPU.\\
|
|
The Linux Performance Event subsystem provides an abstraction of these software and hardware event capabilities, available via a
|
|
system call and used by the ``perf'' utility in tools/perf/.
|
|
It provides per task and per CPU counters, and it provides event capabilities on top of those.\\
|
|
Say Y if unsure.}
|
|
|
|
\paragraph{Debug: use vmalloc to back perf mmap() buffers}$~$\\
|
|
CONFIG\_DEBUG\_PERF\_USE\_VMALLOC [=n] \textbf{[N]}\\
|
|
Verwendung von vmalloc-Speicher zur Sicherung von mmap()-Puffern.
|
|
Hauptsächlich nützlich zum Debuggen des vmalloc"=Codes auf Plattformen, die dies nicht erfordern.
|
|
Sagen Sie N, wenn Sie unsicher sind.
|
|
\english{Use vmalloc memory to back perf mmap() buffers.\\
|
|
Mostly useful for debugging the vmalloc code on platforms that don't require it.\\
|
|
Say N if unsure.}
|
|
|
|
%1.51
|
|
\subsection{Profiling support}
|
|
CONFIG\_PROFILING [=y] \textbf{[Y]}\\
|
|
Sagen Sie hier Y, um die erweiterten Unterstützungsmechanismen für das Profiling zu
|
|
aktivieren, die von Profilern verwendet werden.
|
|
\english{Say Y here to enable the extended profiling support mechanisms used by profilers.}
|
|
|
|
%1.52
|
|
\subsection{Rust support}
|
|
CONFIG\_RUST [=y] \textbf{[Y]}\\*
|
|
Aktiviert die Rust-Unterstützung im Kernel.\\
|
|
Dies ermöglicht die Auswahl anderer Rust-bezogener Optionen, wie z.\,B. in Rust geschriebene Treiber.\\
|
|
Es ist auch erforderlich, um externe, in Rust geschriebene Kernel-Module laden zu können.\\
|
|
Siehe \texttt{Dokumentation/rust/} für weitere Informationen.\\
|
|
Wenn Sie unsicher sind, sagen Sie N.
|
|
\english{Enables Rust support in the kernel.\\
|
|
This allows other Rust-related options, like drivers written in Rust, to be selected.\\
|
|
It is also required to be able to load external kernel modules written in Rust.\\
|
|
See \texttt{Documentation/rust/} for more information.\\
|
|
If unsure, say N.}
|
|
|
|
%1.53
|
|
\subsection{Kexec and crash features \texorpdfstring{$\rightarrow$}{->}}
|
|
\textit{Kexec und Absturzmerkmale}
|
|
|
|
\subsubsection{Enable kexec system call}
|
|
CONFIG\_KEXEC [=y] \textbf{[Y]}\\
|
|
\texttt{kexec} ist ein Systemaufruf, der die Fähigkeit implementiert, den aktuellen Kernel
|
|
herunterzufahren und einen anderen Kernel zu starten. Es ist wie ein Neustart, aber er ist
|
|
unabhängig von der System-Firmware. Und wie ein Neustart können Sie damit jeden Kernel
|
|
starten, nicht nur Linux.
|
|
Der Name kommt von der Anlehnung mit dem Systemaufruf \texttt{exec}.
|
|
Es ist ein fortlaufender Prozess, um sicher zu sein, dass die Hardware eines Rechners
|
|
ordnungsgemäß heruntergefahren wird, seien Sie also nicht überrascht, wenn dieser Code bei
|
|
Ihnen zunächst nicht funktioniert. Zum Zeitpunkt des Verfassens dieses Artikels ist die
|
|
genaue Hardwareschnittstelle noch stark im Wandel, so dass keine gute Empfehlung
|
|
ausgesprochen werden kann.
|
|
\english{kexec is a system call that implements the ability to shutdown your current kernel, and to start another kernel.
|
|
It is like a reboot but it is independent of the system firmware.
|
|
And like a reboot you can start any kernel with it, not just Linux.\\
|
|
The name comes from the similarity to the exec system call.\\
|
|
It is an ongoing process to be certain the hardware in a machine is properly shutdown, so do not be surprised if this code does not
|
|
initially work for you.
|
|
As of this writing the exact hardware interface is strongly in flux, so no good recommendation can be made.}
|
|
|
|
\subsubsection{Enable kexec file based system call}
|
|
CONFIG\_KEXEC\_FILE [=y] \textbf{[Y]}\\
|
|
(Aktivieren des dateibasierten Systemaufrufs kexec)\\
|
|
Dies ist eine neue Version des Systemaufrufs \texttt{kexec}. Dieser Systemaufruf ist dateibasiert und
|
|
nimmt Dateideskriptoren als Systemaufrufsargument für Kernel und initramfs anstelle einer Liste
|
|
von Segmenten, wie sie vom kexec-Systemaufruf akzeptiert wird.
|
|
\english{This is new version of kexec system call.
|
|
This system call is file based and takes file descriptors as system call argument for kernel and initramfs as opposed to list of segments as
|
|
accepted by kexec system call.}
|
|
|
|
\paragraph{Verify kernel signature during kexec\_file\_load() syscall}$~$\\
|
|
CONFIG\_KEXEC\_SIG [=y] \textbf{[Y]}\\
|
|
Mit dieser Option wird der Syscall \texttt{kexec\_file\_load()} auf eine gültige Signatur des
|
|
Kernel-Images geprüft. Das Image kann immer noch ohne gültige Signatur geladen werden, es sei denn,
|
|
Sie aktivieren auch KEXEC\_SIG\_FORCE, aber wenn es eine Signatur gibt, die überprüft werden kann,
|
|
dann muss sie auch gültig sein.
|
|
Zusätzlich zu dieser Option müssen Sie die Signaturprüfung für den entsprechenden Kernel"=Image"=Typ,
|
|
der geladen wird, aktivieren, damit dies funktioniert.
|
|
\english{This option makes the kexec\_file\_load() syscall check for a valid signature of the kernel image.
|
|
The image can still be loaded without a valid signature unless you also enable KEXEC\_SIG\_FORCE, though if
|
|
there's a signature that we can check, then it must be valid.\\
|
|
In addition to this option, you need to enable signature verification for the corresponding kernel image type being loaded in order for this to work.}
|
|
|
|
\subparagraph{Require a valid signature in kexec\_file\_load() syscall}$~$\\
|
|
CONFIG\_KEXEC\_SIG\_FORCE [=n] \textbf{[N]}\\
|
|
Diese Option macht die Überprüfung der Kernelsignatur für den Syscall
|
|
\texttt{kexec\_file\_load()} zwingend erforderlich.
|
|
\english{This option makes kernel signature verification mandatory for the kexec\_file\_load() syscall.}
|
|
|
|
\subparagraph{Enable bzImage signature verification support}$~$\\
|
|
CONFIG\_KEXEC\_BZIMAGE\_VERIFY\_SIG [=n] \textbf{[N]}\\
|
|
Aktivierung der Unterstützung von bzImage für die Signaturprüfung.
|
|
\english{Enable bzImage signature verification support.}
|
|
|
|
\subsubsection{kexec jump}
|
|
CONFIG\_KEXEC\_JUMP [=y] \textbf{[Y]}\\
|
|
Sprung zwischen Original-Kernel und kexeced-Kernel und Aufruf von Code im physikalischen
|
|
Adressmodus über KEXEC
|
|
\english{Jump between original kernel and kexeced kernel and invoke code in physical address mode via KEXEC}
|
|
|
|
\subsubsection{kexec crash dumps}
|
|
CONFIG\_KEXEC\_DUMP [=y] \textbf{[Y]}\\
|
|
Absturzdump (Speicherauszug) erzeugen, nachdem er von kexec gestartet wurde.
|
|
Dies sollte normalerweise nur in speziellen Crash-Dump-Kerneln gesetzt werden, die im Hauptkernel
|
|
mit kexec-tools in einen speziell reservierten Bereich geladen werden und dann später nach einem
|
|
Absturz von kdump/kexec ausgeführt werden. Der Crash-Dump-Kernel muss mit PHYSICAL\_START auf eine
|
|
Speicheradresse kompiliert werden, die nicht vom Hauptkernel oder BIOS verwendet wird, oder er muss
|
|
als relocatable image (CONFIG\_RELOCATABLE=y) erstellt werden.\\
|
|
Für weitere Details siehe Documentation/admin-guide/kdump/kdump.rst
|
|
|
|
Für s390 aktiviert diese Option auch zfcpdump.\\
|
|
Siehe auch $<$file:Documentation/s390/zfcpdump.rst$>$
|
|
\english{Generate crash dump after being started by kexec.
|
|
This should be normally only set in special crash dump kernels which are loaded in the main kernel with kexec-tools into
|
|
a specially reserved region and then later executed after a crash by kdump/kexec.
|
|
The crash dump kernel must be compiled to a memory address not used by the main kernel or BIOS using PHYSICAL\_START, or it must
|
|
be built as a relocatable image (CONFIG\_RELOCATABLE=y).
|
|
For more details see Documentation/admin-guide/kdump/kdump.rst\\
|
|
For s390, this option also enables zfcpdump.
|
|
See also $<$file:Documentation/arch/s390/zfcpdump.rst$>$}
|
|
|
|
\paragraph{Update the crash elfcorehdr on system configuration changes}$~$\\
|
|
CONFIG\_CRASH\_HOTPLUG [=y] \textbf{[Y]}\\
|
|
Aktivierung der direkten Aktualisierung der Crash-Elfcorehdr (die die Liste der CPUs und
|
|
Speicherbereiche enthält, die bei einem Absturz gelöscht werden sollen) als Reaktion auf
|
|
Hot-Plug/Unplug oder Online/Offline von CPUs oder Speicher. Dies ist ein sehr viel
|
|
fortschrittlicherer Ansatz als der Versuch dies im Userspace zu tun.\\
|
|
Wenn Sie unsicher sind, sagen Sie Y.
|
|
\english{Enable direct update to the crash elfcorehdr (which contains the list of CPUs and memory regions to be dumped upon a crash)
|
|
in response to hot plug/unplug or online/offline of CPUs or memory.
|
|
This is a much more advanced approach than userspace attempting that.\\
|
|
If unsure, say Y.}
|
|
|
|
\subparagraph{Specify the maximum number of memory regions for the elfcorehdr}$~$\\
|
|
CONFIG\_CRASH\_MAX\_MEMORY\_RANGES [=\num{8192}] \textbf{[8192]}\\
|
|
Für den Pfad des Systemaufrufs \texttt{kexec\_file\_load()} ist die maximale Anzahl
|
|
der Speicherbereiche anzugeben, die der elfcorehdr-Puffer/das elfcorehdr-Segment aufnehmen kann.
|
|
Diese Regionen werden über \texttt{walk\_system\_ram\_res()} ermittelt, z.\,B. die
|
|
'System RAM'-Einträge in /proc/iomem. Dieser Wert wird mit NR\_CPUS\_DEFAULT kombiniert und mit
|
|
\texttt{sizeof(Elf64\_Phdr)} multipliziert, um die endgültige elfcorehdr-Speicherpuffer-/Segmentgröße
|
|
zu bestimmen. Der Wert \num{8192} beispielsweise deckt ein (dünn besiedeltes) \qty{1}{\tebi\byte}-System ab,
|
|
das aus \qty{128}{\mebi\byte}-Memblöcken besteht, und führt zu einer elfcorehdr-Speicher\-puffer-/Segmentgröße
|
|
von unter \qty{1}{\mebi\byte}. Dies ist eine vernünftige Wahl, um sowohl Baremetal- als auch virtuelle
|
|
Maschinenkonfigurationen zu unterstützen.\\
|
|
Für den Syscall-Pfad \texttt{kexec\_load()}
|
|
ist CRASH\_MAX\_MEMORY\_RANGES Teil der Berechnung hinter dem Wert,
|
|
der über das Attribut /sys/kernel/crash\_elfcorehdr\_size bereitgestellt wird.
|
|
\english{For the kexec\_file\_load() syscall path, specify the maximum number of memory regions that the elfcorehdr buffer / segment can accommodate.
|
|
These regions are obtained via walk\_system\_ram\_res(); eg. the `System RAM' entries in /proc/iomem.
|
|
This value is combined with NR\_CPUS\_DEFAULT and multiplied by sizeof(Elf64\_Phdr) to determine the final elfcorehdr memory buffer/segment size.
|
|
The value 8192, for example, covers a (sparsely populated) 1TiB system consisting of 128MiB memblocks, while resulting in an elfcorehdr
|
|
memory buffer/segment size under 1MiB.
|
|
This represents a sane choice to accommodate both baremetal and virtual machine configurations.\\
|
|
For the kexec\_load() syscall path, CRASH\_MAX\_MEMORY\_RANGES is part of the computation behind the value provided through the
|
|
/sys/kernel/crash\_elfcorehdr\_size attribute.}
|