UPD configuration 12 upto 13 for Linux 6.16

This commit is contained in:
2025-08-08 20:42:12 +02:00
parent 3552e0cc97
commit eabe4c5071
7 changed files with 329 additions and 402 deletions

View File

@@ -1171,7 +1171,7 @@ CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_CMA=y CONFIG_CMA=y
CONFIG_CMA_DEBUGFS=y CONFIG_CMA_DEBUGFS=y
CONFIG_CMA_SYSFS=y CONFIG_CMA_SYSFS=y
CONFIG_CMA_AREAS=7 CONFIG_CMA_AREAS=8
CONFIG_PAGE_BLOCK_ORDER=10 CONFIG_PAGE_BLOCK_ORDER=10
CONFIG_MEM_SOFT_DIRTY=y CONFIG_MEM_SOFT_DIRTY=y
CONFIG_GENERIC_EARLY_IOREMAP=y CONFIG_GENERIC_EARLY_IOREMAP=y

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:dc1c5407477c75447f1624fd2b1db0c0b479219d9fd5e1614faf6eb59afb8b7c oid sha256:5a2857ec380971345123fa93ae913a376e84a96bc7ea743de94b0cdea217d54f
size 315542 size 766655

View File

@@ -20,10 +20,10 @@
%linux_configuration_08_virtualization, %linux_configuration_08_virtualization,
%linux_configuration_09_general_architecture-dependent_options, %linux_configuration_09_general_architecture-dependent_options,
%linux_configuration_10_enable_loadable_module_support, %linux_configuration_10_enable_loadable_module_support,
linux_configuration_11_enable_the_block_layer, %linux_configuration_11_enable_the_block_layer,
%linux_configuration_12_executable_file_formats, %linux_configuration_12_executable_file_formats,
%linux_configuration_13_memory_management_options, %linux_configuration_13_memory_management_options,
%linux_configuration_14_networking_support, linux_configuration_14_networking_support,
%linux_configuration_15_device_drivers, %linux_configuration_15_device_drivers,
%linux_configuration_16_file_systems, %linux_configuration_16_file_systems,
%linux_configuration_17_security_options, %linux_configuration_17_security_options,

View File

@@ -1533,7 +1533,7 @@ If unsure, say Y here.}
%1.42 Configure standard kernel features (expert users) %1.42 Configure standard kernel features (expert users)
\subsection{Configure standard kernel features (expert users)} \subsection{Configure standard kernel features (expert users)}
CONFIG\_EXPERT \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\ \label{CONFIG_EXPERT}CONFIG\_EXPERT \colorbox{yellow!80}{[=n] \textbf{[Y]}}\\
Mit dieser Option können bestimmte Basis-Kerneloptionen und -einstellungen deaktiviert oder optimiert werden. 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.\\ 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. Verwenden Sie diese Option nur, wenn Sie wirklich wissen, was Sie tun.

View File

@@ -1,107 +1,94 @@
% since Linux 6.14
% linux_configuration_12_executable_file_formats.tex % linux_configuration_12_executable_file_formats.tex
% since Linux 6.16
\section{Executable file formats \texorpdfstring{$\rightarrow$}{->}} \section{Executable file formats \texorpdfstring{$\rightarrow$}{->}}
(Ausführbare Dateiformate) (Ausführbare Dateiformate)
%12.1
\subsection{Kernel support for ELF binaries} \subsection{Kernel support for ELF binaries}
CONFIG\_BINFMT\_ELF [=y] \textbf{[Y]}\\ CONFIG\_BINFMT\_ELF [=y] \textbf{[Y]}\\
ELF (Executable and Linkable Format) ist ein Format für Bibliotheken und ausführbare Dateien, ELF (Executable and Linkable Format) ist ein Format für Bibliotheken und ausführbare Dateien, das auf verschiedenen Architekturen und Betriebssystemen verwendet wird.
das auf verschiedenen Architekturen und Betriebssystemen verwendet wird.
Wenn Sie hier Y angeben, kann Ihr Kernel ELF-Binärdateien ausführen und wird um etwa \qty{13}{\kilo\byte} vergrößert. Wenn Sie hier Y angeben, kann Ihr Kernel ELF-Binärdateien ausführen und wird um etwa \qty{13}{\kilo\byte} vergrößert.
Die ELF-Unterstützung unter Linux hat inzwischen die traditionellen Linux a.out-Formate (QMAGIC und ZMAGIC) Die ELF-Unterstützung unter Linux hat inzwischen die traditionellen Linux a.out-Formate (QMAGIC und ZMAGIC) fast vollständig ersetzt, da es portabel ist (was jedoch *nicht* bedeutet, dass Sie ausführbare Dateien von verschiedenen Architekturen oder Betriebssystemen ausführen können) und die Erstellung von Laufzeitbibliotheken sehr einfach macht.
fast vollständig ersetzt, da es portabel ist (was jedoch *nicht* bedeutet, dass Sie ausführbare Dateien Viele neue ausführbare Dateien werden ausschließlich im ELF-Format vertrieben.
von verschiedenen Architekturen oder Betriebssystemen ausführen können) und die Erstellung von Hier sollten Sie unbedingt Y sagen.
Laufzeitbibliotheken sehr einfach macht. Viele neue ausführbare Dateien werden ausschließlich im Informationen über ELF sind im ELF HOWTO enthalten, das unter \url{http://www.tldp.org/docs.html#howto} verfügbar ist.
ELF-Format vertrieben. Hier sollten Sie unbedingt Y sagen. Informationen über ELF sind im ELF HOWTO Wenn Sie feststellen, dass Sie nach dem Upgrade von Linux-Kernel 1.2 und der Angabe von Y hier immer noch keine ELF-Binärdateien ausführen können (sie stürzen einfach ab), dann müssen Sie die neuesten ELF-Laufzeitbibliotheken installieren, einschließlich \texttt{ld.so} (überprüfen Sie die Datei $<$file:Documentation/Changes$>$ für den Ort und die neueste Version).
enthalten, das unter \url{http://www.tldp.org/docs.html#howto} verfügbar ist.
Wenn Sie feststellen, dass Sie nach dem Upgrade von Linux-Kernel 1.2 und der Angabe von Y hier immer
noch keine ELF-Binärdateien ausführen können (sie stürzen einfach ab), dann müssen Sie die neuesten
ELF-Laufzeitbibliotheken installieren, einschließlich \texttt{ld.so} (überprüfen Sie die Datei
$<$file:Documentation/Changes$>$ für den Ort und die neueste Version).
\english{ELF (Executable and Linkable Format) is a format for libraries and executables used across different architectures and operating systems. \english{ELF (Executable and Linkable Format) is a format for libraries and executables used across different architectures and operating systems.
Saying Y here will enable your kernel to run ELF binaries and enlarge it by about 13 KB. Saying Y here will enable your kernel to run ELF binaries and enlarge it by about 13 KB.
ELF support under Linux has now all but replaced the traditional Linux a.out formats (QMAGIC and ZMAGIC) because it is portable ELF support under Linux has now all but replaced the traditional Linux a.out formats (QMAGIC and ZMAGIC) because it is portable (this does *not* mean that you will be able to run executables from different architectures or operating systems however) and makes building run-time libraries very easy.
(this does *not* mean that you will be able to run executables from different architectures or operating systems however) and makes
building run-time libraries very easy.
Many new executables are distributed solely in ELF format. Many new executables are distributed solely in ELF format.
You definitely want to say Y here.\\ You definitely want to say Y here.\\
Information about ELF is contained in the ELF HOWTO available from \url{http://www.tldp.org/docs.html\#howto}.\\ Information about ELF is contained in the ELF HOWTO available from \url{http://www.tldp.org/docs.html\#howto}.\\
If you find that after upgrading from Linux kernel 1.2 and saying Y here, you still can't run any ELF binaries (they just crash), If you find that after upgrading from Linux kernel 1.2 and saying Y here, you still can't run any ELF binaries (they just crash), then you'll have to install the newest ELF runtime libraries, including ld.so (check the file $<$file:Documentation/Changes$>$ for location and latest version).}
then you'll have to install the newest ELF runtime libraries, including ld.so (check the file $<$file:Documentation/Changes$>$ for location and latest version).}
%12.2
\subsection{Write ELF core dumps with partial segments} \subsection{Write ELF core dumps with partial segments}
CONFIG\_CORE\_DUMP\_DEFAULT\_ELF\_HEADERS [=y] \textbf{[Y]}\\ CONFIG\_CORE\_DUMP\_DEFAULT\_ELF\_HEADERS [=y] \textbf{[Y]}\\
ELF-Core-Dump-Dateien beschreiben jede Speicherabbildung des abgestürzten Prozesses und können den ELF-Core-Dump-Dateien beschreiben jede Speicherabbildung des abgestürzten Prozesses und können den Speicherinhalt jedes einzelnen Prozesses enthalten oder auslassen.
Speicherinhalt jedes einzelnen Prozesses enthalten oder auslassen. Der Inhalt eines unveränderten Der Inhalt eines unveränderten Text-Mappings wird standardmäßig weggelassen.
Text-Mappings wird standardmäßig weggelassen. Bei einem unveränderten Text-Mapping eines ELF-Objekts Bei einem unveränderten Text-Mapping eines ELF-Objekts ermöglicht die Aufnahme nur der ersten Seite der Datei in einen Core-Dump die Identifizierung der Build-ID-Bits in der Datei, ohne dass die E/A-Kosten und der Plattenplatz für das Dump des gesamten Textes anfallen.
ermöglicht die Aufnahme nur der ersten Seite der Datei in einen Core-Dump die Identifizierung der Versionen von GDB vor 6.7 werden jedoch von ELF-Core-Dump-Dateien in diesem Format verwirrt.
Build-ID-Bits in der Datei, ohne dass die E/A-Kosten und der Plattenplatz für das Dump des gesamten Das Verhalten des Kerndumps kann pro Prozess mit der Pseudodatei \texttt{/proc/PID/coredump\_filter} gesteuert werden; diese Einstellung wird vererbt.
Textes anfallen. Versionen von GDB vor 6.7 werden jedoch von ELF-Core-Dump-Dateien in diesem Format Siehe \texttt{Dokumentation/filesystems/proc.rst} für Details.
verwirrt. Das Verhalten des Kerndumps kann pro Prozess mit der Pseudodatei /proc/PID/coredump\_filter Diese Konfigurationsoption ändert die Standardeinstellung von \texttt{coredump\_filter}, die beim Booten zu sehen ist.
gesteuert werden; diese Einstellung wird vererbt.
Siehe Dokumentation/filesystems/proc.rst für Details.
Diese Konfigurationsoption ändert die Standardeinstellung von coredump\_filter, die beim Booten zu
sehen ist.
Wenn Sie unsicher sind, sagen Sie Y. Wenn Sie unsicher sind, sagen Sie Y.
\english{ELF core dump files describe each memory mapping of the crashed process, and can contain or omit the memory contents of each one. \english{ELF core dump files describe each memory mapping of the crashed process, and can contain or omit the memory contents of each one.
The contents of an unmodified text mapping are omitted by default.\\ The contents of an unmodified text mapping are omitted by default.\\
For an unmodified text mapping of an ELF object, including just the first page of the file in a core dump makes it possible to identify the For an unmodified text mapping of an ELF object, including just the first page of the file in a core dump makes it possible to identify the build ID bits in the file, without paying the i/o cost and disk space to dump all the text.
build ID bits in the file, without paying the i/o cost and disk space to dump all the text.
However, versions of GDB before 6.7 are confused by ELF core dump files in this format.\\
The core dump behavior can be controlled per process using the /proc/PID/coredump\_filter pseudo-file; this setting is inherited.
See Documentation/filesystems/proc.rst for details.\\
This config option changes the default setting of coredump\_filter seen at boot time. If unsure, say Y.}
\subsection{Kernel support for scripts starting with \#!}
CONFIG\_BINFMT\_SCRIPT [=y] \textbf{[Y]}\\
(Kernel-Unterstützung für Skripte, die mit \#!, dem Shebang, anfangen)
Geben Sie hier Y an, wenn Sie interpretierte Skripte ausführen wollen, die mit \#! beginnen,
gefolgt von dem Pfad zu einem Interpreter. Sie können diese Unterstützung als Modul bauen; bis dieses
Modul jedoch geladen ist, können Sie keine Skripte ausführen.
Wenn Sie also dieses Modul aus einem initramfs laden wollen, darf der Teil des initramfs vor dem Laden
dieses Moduls nur aus kompilierten Binärdateien bestehen. Die meisten Systeme werden nicht booten,
wenn Sie hier M oder N angeben. Wenn Sie unsicher sind, sagen Sie Y.
\english{ELF core dump files describe each memory mapping of the crashed process, and can contain or omit the memory contents of each one.
The contents of an unmodified text mapping are omitted by default.\\
For an unmodified text mapping of an ELF object, including just the first page of the file in a core dump makes it possible to
identify the build ID bits in the file, without paying the i/o cost and disk space to dump all the text.
However, versions of GDB before 6.7 are confused by ELF core dump files in this format.\\ However, versions of GDB before 6.7 are confused by ELF core dump files in this format.\\
The core dump behavior can be controlled per process using the /proc/PID/coredump\_filter pseudo-file; this setting is inherited. The core dump behavior can be controlled per process using the /proc/PID/coredump\_filter pseudo-file; this setting is inherited.
See Documentation/filesystems/proc.rst for details.\\ See Documentation/filesystems/proc.rst for details.\\
This config option changes the default setting of coredump\_filter seen at boot time. This config option changes the default setting of coredump\_filter seen at boot time.
If unsure, say Y.} If unsure, say Y.}
%12.3
\subsection{Kernel support for scripts starting with \#!}
CONFIG\_BINFMT\_SCRIPT [=y] \textbf{[Y]}\\
(Kernel-Unterstützung für Skripte, die mit \#!, dem Shebang, anfangen)
Geben Sie hier Y an, wenn Sie interpretierte Skripte ausführen wollen, die mit \#! beginnen, gefolgt von dem Pfad zu einem Interpreter.
Sie können diese Unterstützung als Modul bauen; bis dieses Modul jedoch geladen ist, können Sie keine Skripte ausführen.
Wenn Sie also dieses Modul aus einem initramfs laden wollen, darf der Teil des initramfs vor dem Laden dieses Moduls nur aus kompilierten Binärdateien bestehen.
Die meisten Systeme werden nicht booten, wenn Sie hier M oder N angeben.
Wenn Sie unsicher sind, sagen Sie Y.
\english{ELF core dump files describe each memory mapping of the crashed process, and can contain or omit the memory contents of each one.
The contents of an unmodified text mapping are omitted by default.\\
For an unmodified text mapping of an ELF object, including just the first page of the file in a core dump makes it possible to identify the build ID bits in the file, without paying the i/o cost and disk space to dump all the text.
However, versions of GDB before 6.7 are confused by ELF core dump files in this format.\\
The core dump behavior can be controlled per process using the /proc/PID/coredump\_filter pseudo-file; this setting is inherited.
See Documentation/filesystems/proc.rst for details.\\
This config option changes the default setting of coredump\_filter seen at boot time.
If unsure, say Y.}
%12.4
\subsection{Kernel support for MISC binaries} \subsection{Kernel support for MISC binaries}
CONFIG\_BINFMT\_MISC [=y] \textbf{[Y]}\\ CONFIG\_BINFMT\_MISC [=y] \textbf{[Y]}\\
Wenn Sie hier Y sagen, wird es möglich sein, Wrapper-gesteuerte Binärformate in den Kernel einzubinden. Wenn Sie hier Y sagen, wird es möglich sein, Wrapper-gesteuerte Binärformate in den Kernel einzubinden.
Dies ist vor allem dann sinnvoll, wenn Sie Programme verwenden, die einen Interpreter benötigen, wie Dies ist vor allem dann sinnvoll, wenn Sie Programme verwenden, die einen Interpreter benötigen, wie Java, Python, .NET oder Emacs-Lisp.
Java, Python, .NET oder Emacs-Lisp. Es ist auch nützlich, wenn Sie häufig DOS-Programme unter dem Es ist auch nützlich, wenn Sie häufig DOS-Programme unter dem Linux-DOS-Emulator DOSEMU ausführen (lesen Sie das DOSEMU-HOWTO, verfügbar unter \url{http://www.tldp.org/docs.html#howto}). Sobald Sie eine solche Binärklasse beim Kernel registriert haben, können Sie eines dieser Programme einfach starten, indem Sie seinen Namen an einer Shell-Eingabeaufforderung eingeben;
Linux-DOS-Emulator DOSEMU ausführen (lesen Sie das DOSEMU-HOWTO, verfügbar unter Linux wird es automatisch an den richtigen Interpreter weiterleiten.
\url{http://www.tldp.org/docs.html#howto}). Sobald Sie eine solche Binärklasse beim Kernel registriert
haben, können Sie eines dieser Programme einfach starten, indem Sie seinen Namen an einer
Shell-Eingabeaufforderung eingeben; Linux wird es automatisch an den richtigen Interpreter weiterleiten.
Sie können auch andere nette Dinge tun.\\ Sie können auch andere nette Dinge tun.\\
Lesen Sie die Datei $<$file:Documentation/admin-guide/binfmt-misc.rst$>$, Lesen Sie die Datei $<$file:Documentation/admin-guide/binfmt-misc.rst$>$, um zu erfahren, wie Sie diese Funktion nutzen können, $<$file:Documentation/admin-guide/java.rst$>$, um zu erfahren, wie Sie Java-Unterstützung einbinden können, und $<$file:Documentation/admin-guide/mono.rst$>$, um zu erfahren, wie Sie Mono-basierte .NET-Unterstützung einbinden können.
um zu erfahren, wie Sie diese Funktion nutzen können, Um \texttt{binfmt\_misc} zu verwenden, müssen Sie es mounten: \texttt{mount binfmt\_misc -t binfmt\_misc /proc/sys/fs/binfmt\_misc}
$<$file:Documentation/admin-guide/java.rst$>$, um zu erfahren, wie Sie Java-Unterstützung einbinden Sie können hier M für Modulunterstützung sagen und später das Modul laden, wenn Sie es brauchen; das Modul heißt \texttt{binfmt\_misc}.
können, und $<$file:Documentation/admin-guide/mono.rst$>$, um zu erfahren, wie Sie Mono-basierte Wenn Sie nicht wissen, was Sie an dieser Stelle antworten sollen, sagen Sie Y.
.NET-Unterstützung einbinden können.
Um binfmt\_misc zu verwenden, müssen Sie es mounten:
\texttt{mount binfmt\_misc -t binfmt\_misc /proc/sys/fs/binfmt\_misc}
Sie können hier M für Modulunterstützung sagen und später das Modul laden, wenn Sie es brauchen;
das Modul heißt \texttt{binfmt\_misc}. Wenn Sie nicht wissen, was Sie an dieser Stelle antworten sollen,
sagen Sie Y.
\english{If you say Y here, it will be possible to plug wrapper-driven binary formats into the kernel. \english{If you say Y here, it will be possible to plug wrapper-driven binary formats into the kernel.
You will like this especially when you use programs that need an interpreter to run like Java, Python, .NET or Emacs-Lisp. You will like this especially when you use programs that need an interpreter to run like Java, Python, .NET or Emacs-Lisp.
It's also useful if you often run DOS executables under the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from It's also useful if you often run DOS executables under the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from \url{http://www.tldp.org/docs.html\#howto}).
\url{http://www.tldp.org/docs.html\#howto}).
Once you have registered such a binary class with the kernel, you can start one of those programs simply by typing in its name at a shell prompt; Once you have registered such a binary class with the kernel, you can start one of those programs simply by typing in its name at a shell prompt;
Linux will automatically feed it to the correct interpreter.\\ Linux will automatically feed it to the correct interpreter.\\
You can do other nice things, too. Read the file $<$file:Documentation/admin-guide/binfmt-misc.rst$>$ to learn how to use this feature, You can do other nice things, too. Read the file $<$file:Documentation/admin-guide/binfmt-misc.rst$>$ to learn how to use this feature, $<$file:Documentation/admin-guide/java.rst$>$ for information about how to include Java support. and $<$file:Documentation/admin-guide/mono.rst$>$ for information about how to include Mono-based .NET support.\\
$<$file:Documentation/admin-guide/java.rst$>$ for information about how to include Java support. To use binfmt\_misc, you will need to mount it:\\\texttt{mount binfmt\_misc -t binfmt\_misc /proc/sys/fs/binfmt\_misc}\\
and $<$file:Documentation/admin-guide/mono.rst$>$ for information about how to include Mono-based .NET support.\\
To use binfmt\_misc, you will need to mount it:\\
\texttt{mount binfmt\_misc -t binfmt\_misc /proc/sys/fs/binfmt\_misc}\\
You may say M here for module support and later load the module when you have use for it; the module is called \texttt{binfmt\_misc}. You may say M here for module support and later load the module when you have use for it; the module is called \texttt{binfmt\_misc}.
If you don't know what to answer at this point, say Y.} If you don't know what to answer at this point, say Y.}
%12.5
\subsection{Enable core dump support}
CONFIG\_COREDUMP [=y] \textbf{[Y]}\\*
Diese Option aktiviert die Unterstützung für die Durchführung von Core-Dumps.
Hier sollten Sie mit ziemlicher Sicherheit Y eingeben.
Nicht erforderlich auf Systemen, die niemals debuggt werden müssen oder nur fehlerfreien Code ausführen.
\english{This option enables support for performing core dumps.
You almost certainly want to say Y here.
Not necessary on systems that never need debugging or only ever run flawless code.}
\note{Wird nur angezeigt, wenn CONFIG\_EXPERT (Seite \pageref{CONFIG_EXPERT}) eingeschaltet ist.}

View File

@@ -1,5 +1,5 @@
% since Linux 6.14
% linux_configuration_13_memory_management_options.tex % linux_configuration_13_memory_management_options.tex
% since Linux 6.16
% 13. % 13.
\section{Memory Management options \texorpdfstring{$\rightarrow$}{->}} \section{Memory Management options \texorpdfstring{$\rightarrow$}{->}}
@@ -8,32 +8,24 @@
%13.1 %13.1
\subsection{Support for paging of anonymous memory (swap) \texorpdfstring{$\rightarrow$}{->}} \subsection{Support for paging of anonymous memory (swap) \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_SWAP [=y] \textbf{[Y]}\\ CONFIG\_SWAP [=y] \textbf{[Y]}\\
Mit dieser Option können Sie wählen, ob Sie Unterstützung für so genannte Swap-Geräte oder Mit dieser Option können Sie wählen, ob Sie Unterstützung für so genannte Swap-Geräte oder Swap-Dateien in Ihrem Kernel haben möchten, die dazu dienen, mehr virtuellen Speicher als den tatsächlichen Arbeitsspeicher in Ihrem Computer bereitzustellen.
Swap-Dateien in Ihrem Kernel haben möchten, die dazu dienen, mehr virtuellen Speicher als
den tatsächlichen Arbeitsspeicher in Ihrem Computer bereitzustellen.
Wenn Sie unsicher sind, sagen Sie Y. Wenn Sie unsicher sind, sagen Sie Y.
\english{This option allows you to choose whether you want to have support for so called swap devices or swap files \english{This option allows you to choose whether you want to have support for so called swap devices or swap files in your kernel that are used to provide more virtual memory than the actual RAM present in your computer.
in your kernel that are used to provide more virtual memory than the actual RAM present in your computer.
If unsure say Y.} If unsure say Y.}
\subsubsection{Compressed cache for swap pages} \subsubsection{Compressed cache for swap pages}
CONFIG\_ZSWAP [=y] \textbf{[Y]}\\ CONFIG\_ZSWAP [=y] \textbf{[Y]}\\
Ein leichtgewichtiger komprimierter Cache für Auslagerungsseiten. Ein leichtgewichtiger komprimierter Cache für Auslagerungsseiten.
Er nimmt Seiten, die gerade ausgelagert werden, und versucht, sie in einem dynamisch zugewiesenen RAM-basierten Speicherpool zu komprimieren. Er nimmt Seiten, die gerade ausgelagert werden, und versucht, sie in einem dynamisch zugewiesenen RAM-basierten Speicherpool zu komprimieren.
Dies kann zu einer erheblichen E/A-Reduzierung auf dem Swap-Gerät führen und in dem Fall, in dem die Dies kann zu einer erheblichen E/A-Reduzierung auf dem Swap-Gerät führen und in dem Fall, in dem die Dekomprimierung aus dem RAM schneller ist als das Lesen aus dem Swap-Gerät, auch die Arbeitslastleistung verbessern.
Dekomprimierung aus dem RAM schneller ist als das Lesen aus dem Swap-Gerät, auch die Arbeitslastleistung
verbessern.
\english{A lightweight compressed cache for swap pages. \english{A lightweight compressed cache for swap pages.
It takes pages that are in the process of being swapped out and attempts to It takes pages that are in the process of being swapped out and attempts to compress them into a dynamically allocated RAM-based memory pool.
compress them into a dynamically allocated RAM-based memory pool. This can result in a significant I/O reduction on swap device and, in the case where decompressing from RAM is faster than swap device reads, can also improve workload performance.}
This can result in a significant I/O reduction on swap device and, in the case where decompressing from RAM is faster than swap device reads,
can also improve workload performance.}
\paragraph{Enable the compressed cache for swap pages by default}$~$\\ \paragraph{Enable the compressed cache for swap pages by default}$~$\\
CONFIG\_ZSWAP\_DEFAULT\_ON [=y] \textbf{[Y]}\\ CONFIG\_ZSWAP\_DEFAULT\_ON [=y] \textbf{[Y]}\\
Wenn diese Option ausgewählt ist, wird der komprimierte Cache für Auslagerungsseiten beim Booten aktiviert, Wenn diese Option ausgewählt ist, wird der komprimierte Cache für Auslagerungsseiten beim Booten aktiviert, andernfalls wird er deaktiviert.
andernfalls wird er deaktiviert. Die hier getroffene Auswahl kann mit der Kernel-Kommando\-zei\-len\-option Die hier getroffene Auswahl kann mit der Kernel-Kommandozeilenoption \texttt{zswap.enabled=} überschrieben werden.
\texttt{zswap.enabled=} überschrieben werden.
\english{If selected, the compressed cache for swap pages will be enabled at boot, otherwise it will be disabled. \english{If selected, the compressed cache for swap pages will be enabled at boot, otherwise it will be disabled.
The selection made here can be overridden by using the kernel command line `zswap.enabled=' option.} The selection made here can be overridden by using the kernel command line `zswap.enabled=' option.}
@@ -48,26 +40,18 @@ The selection made here can be overridden by using the kernel command line `zswa
\paragraph{Shrink the zswap pool on memory pressure}\mbox{}\\ \paragraph{Shrink the zswap pool on memory pressure}\mbox{}\\
CONFIG\_ZSWAP\_SHRINKER\_DEFAULT\_ON [=y] \textbf{[Y]}\\* CONFIG\_ZSWAP\_SHRINKER\_DEFAULT\_ON [=y] \textbf{[Y]}\\*
Wenn diese Option ausgewählt ist, wird der zswap-Shrinker aktiviert, und die im zswap-Pool gespeicherten Seiten werden bei Speicherdruck Wenn diese Option ausgewählt ist, wird der zswap-Shrinker aktiviert, und die im zswap-Pool gespeicherten Seiten werden bei Speicherdruck für die Rückforderung verfügbar (d.\,h. sie werden auf das rückwärtige Swap-Gerät zurückgeschrieben).
für die Rückforderung verfügbar (d.\,h. sie werden auf das rückwärtige Swap-Gerät zurückgeschrieben). Dies bedeutet, dass das Zurückschreiben von Seiten in den zswap-Pool auch dann erfolgen kann, wenn der Pool noch nicht voll ist oder das cgroup zswap-Limit noch nicht erreicht wurde, wodurch die Wahrscheinlichkeit verringert wird, dass kalte Seiten im zswap-Pool verbleiben und unbegrenzt Speicher verbrauchen.
Dies bedeutet, dass das Zurückschreiben von Seiten in den zswap-Pool auch dann erfolgen kann, wenn der Pool noch nicht voll ist \english{If selected, the zswap shrinker will be enabled, and the pages stored in the zswap pool will become available for reclaim (i.e written back to the backing swap device) on memory pressure.\\
oder das cgroup zswap-Limit noch nicht erreicht wurde, wodurch die Wahrscheinlichkeit verringert wird, dass kalte Seiten im zswap-Pool This means that zswap writeback could happen even if the pool is not yet full, or the cgroup zswap limit has not been reached, reducing the chance that cold pages will reside in the zswap pool and consume memory indefinitely.}
verbleiben und unbegrenzt Speicher verbrauchen.
\english{If selected, the zswap shrinker will be enabled, and the pages stored in the zswap pool will become available for reclaim
(i.e written back to the backing swap device) on memory pressure.\\
This means that zswap writeback could happen even if the pool is not yet full, or the cgroup zswap limit has not been reached,
reducing the chance that cold pages will reside in the zswap pool and consume memory indefinitely.}
\paragraph{Default compressor () \texorpdfstring{$\rightarrow$}{->}}\mbox{}\\ \paragraph{Default compressor () \texorpdfstring{$\rightarrow$}{->}}\mbox{}\\
Wählt den Standardkomprimierungsalgorithmus für den komprimierten Cache für Auslagerungsseiten aus. Wählt den Standardkomprimierungsalgorithmus für den komprimierten Cache für Auslagerungsseiten aus.
Einen Überblick darüber, welche Leistung von einem bestimmten Kompressionsalgorithmus erwartet werden kann, Einen Überblick darüber, welche Leistung von einem bestimmten Kompressionsalgorithmus erwartet werden kann, finden Sie in den Benchmarks auf der folgenden LWN-Seite: \url{https://lwn.net/Articles/751795/}\\
finden Sie in den Benchmarks auf der folgenden LWN-Seite: \url{https://lwn.net/Articles/751795/}\\
Im Zweifelsfall wählen Sie \texttt{LZO}. Im Zweifelsfall wählen Sie \texttt{LZO}.
Die hier getroffene Auswahl kann durch Verwendung der Kernel-Befehls\-zeilen\-option Die hier getroffene Auswahl kann durch Verwendung der Kernel"=Befehlszeilenoption \texttt{zswap.compressor=} überschrieben werden.
\texttt{zswap.compressor=} überschrieben werden.
\english{Selects the default compression algorithm for the compressed cache for swap pages.\\ \english{Selects the default compression algorithm for the compressed cache for swap pages.\\
For an overview what kind of performance can be expected from a particular compression algorithm please refer to the benchmarks For an overview what kind of performance can be expected from a particular compression algorithm please refer to the benchmarks available at the following LWN page:\\
available at the following LWN page:\\
\url{https://lwn.net/Articles/751795/}\\ \url{https://lwn.net/Articles/751795/}\\
If in doubt, select `LZO'.\\ If in doubt, select `LZO'.\\
The selection made here can be overridden by using the kernel command line `zswap.compressor=' option.} The selection made here can be overridden by using the kernel command line `zswap.compressor=' option.}
@@ -103,82 +87,81 @@ Verwenden Sie den zstd-Algorithmus als Standard-Komprimierungsalgorithmus.
\english{Use the zstd algorithm as the default compression algorithm.} \english{Use the zstd algorithm as the default compression algorithm.}
\paragraph{Default allocator () \texorpdfstring{$\rightarrow$}{->}}$~$\\ \paragraph{Default allocator () \texorpdfstring{$\rightarrow$}{->}}$~$\\
Wählt den Standardzuweiser für den komprimierten Cache für Auslagerungsseiten aus. Die Voreinstellung ist Wählt den Standardzuweiser für den komprimierten Cache für Auslagerungsseiten aus.
aus Kompatibilitätsgründen \glqq zbud\grqq{}, aber lesen Sie bitte die Beschreibung der einzelnen Zuweiser Die Voreinstellung ist aus Kompatibilitätsgründen \glqq zbud\grqq{}, aber lesen Sie bitte die Beschreibung der einzelnen Zuweiser unten, bevor Sie die richtige Wahl treffen.
unten, bevor Sie die richtige Wahl treffen. Die hier getroffene Auswahl kann mit der Die hier getroffene Auswahl kann mit der Kernel"=Kommandozeilenoption \texttt{zswap.zpool=} überschrieben werden.
Kernel-Kommandozeilenoption \texttt{zswap.zpool=} überschrieben werden.
\english{Selects the default allocator for the compressed cache for swap pages. \english{Selects the default allocator for the compressed cache for swap pages.
The default is `zbud' for compatibility, however please do read the description of each of the allocators below before making a right choice.\\ The default is `zbud' for compatibility, however please do read the description of each of the allocators below before making a right choice.\\
The selection made here can be overridden by using the kernel command line `zswap.zpool=' option.} The selection made here can be overridden by using the kernel command line `zswap.zpool=' option.}
\subparagraph{zbud}$~$\\ {\color{gray}
\subparagraph*{zbud \tiny{bis 6.14}}$~$\\
CONFIG\_ZSWAP\_ZPOOL\_DEFAULT\_ZBUD [=n] \textbf{[N]}\\ CONFIG\_ZSWAP\_ZPOOL\_DEFAULT\_ZBUD [=n] \textbf{[N]}\\
Verwendung des zbud-Allokators als Standard-Allokator. Verwendung des zbud-Allokators als Standard-Allokator.
\english{Use the zbud allocator as the default allocator.} \english{Use the zbud allocator as the default allocator.}
}
\subparagraph{z3foldi (DEPRECATED) \tiny{seit 6.12}}$~$\\ {\color{gray}
\subparagraph*{z3foldi (DEPRECATED) \tiny{seit 6.12 bis 6.14}}$~$\\
CONFIG\_ZSWAP\_ZPOOL\_DEFAULT\_Z3FOLD\_DEPRECATED [=n] \textbf{[N]}\\ CONFIG\_ZSWAP\_ZPOOL\_DEFAULT\_Z3FOLD\_DEPRECATED [=n] \textbf{[N]}\\
Verwenden Sie den z3fold-Allokator als Standard-Allokator. Veraltet und soll in ein paar Zyklen entfernt werden, siehe CONFIG\_Z3FOLD\_DEPRECATED. Verwenden Sie den z3fold-Allokator als Standard-Allokator. Veraltet und soll in ein paar Zyklen entfernt werden, siehe CONFIG\_Z3FOLD\_DEPRECATED.
\english{Use the z3fold allocator as the default allocator.\\ \english{Use the z3fold allocator as the default allocator.\\
Deprecated and scheduled for removal in a few cycles, see CONFIG\_Z3FOLD\_DEPRECATED.} Deprecated and scheduled for removal in a few cycles, see CONFIG\_Z3FOLD\_DEPRECATED.}
}
\subparagraph{zsmalloc}$~$\\ \subparagraph{zsmalloc}$~$\\
CONFIG\_ZSWAP\_ZPOOL\_DEFAULT\_ZSMALLOC [=y] \textbf{[Y]}\\ CONFIG\_ZSWAP\_ZPOOL\_DEFAULT\_ZSMALLOC [=y] \textbf{[Y]}\\
Verwendung des zsmalloc-Allokators als Standard-Allokator. Verwendung des zsmalloc-Allokators als Standard-Allokator.
\english{Use the zsmalloc allocator as the default allocator.} \english{Use the zsmalloc allocator as the default allocator.}
\paragraph{2:1 compression allocator (zbud)}$~$\\ {\color{gray}
\paragraph*{2:1 compression allocator (zbud) \tiny{bis 6.14}}$~$\\
CONFIG\_ZBUD [=m] \textbf{[M]}\\ CONFIG\_ZBUD [=m] \textbf{[M]}\\
Ein spezieller Allokator für die Speicherung komprimierter Seiten. Er ist für die Speicherung von bis zu zwei Ein spezieller Allokator für die Speicherung komprimierter Seiten.
komprimierten Seiten pro physischer Seite ausgelegt. Er ist für die Speicherung von bis zu zwei komprimierten Seiten pro physischer Seite ausgelegt.
Dieses Design schränkt zwar die Speicherdichte ein, hat aber einfache und deterministische Dieses Design schränkt zwar die Speicherdichte ein, hat aber einfache und deterministische Rückgewinnungseigenschaften, die es einem Ansatz mit höherer Dichte vorziehen, wenn die Rückgewinnung verwendet wird.
Rückgewinnungseigenschaften, die es einem Ansatz mit höherer Dichte vorziehen, wenn die Rückgewinnung
verwendet wird.
\english{A special purpose allocator for storing compressed pages. \english{A special purpose allocator for storing compressed pages.
It is designed to store up to two compressed pages per physical page. It is designed to store up to two compressed pages per physical page.
While this design limits storage density, it has simple and deterministic reclaim properties that make it preferable to a higher While this design limits storage density, it has simple and deterministic reclaim properties that make it preferable to a higher density approach when reclaim will be used.}
density approach when reclaim will be used.} }
\paragraph{3:1 compression allocator (z3fold) DEPRECATED}$~$\\ {\color{gray}
\paragraph*{3:1 compression allocator (z3fold) DEPRECATED \tiny{bis 6.14}}$~$\\
CONFIG\_Z3FOLD [=n] \textbf{[N]}\\ CONFIG\_Z3FOLD [=n] \textbf{[N]}\\
Veraltet und soll in ein paar Zyklen entfernt werden. Veraltet und soll in ein paar Zyklen entfernt werden.
Wenn Sie einen guten Grund für die Verwendung von Z3FOLD anstelle von ZSMALLOC haben, wenden Sie sich bitte an linux-mm@kvack.org und die zswap-Maintainer. Wenn Sie einen guten Grund für die Verwendung von Z3FOLD anstelle von ZSMALLOC haben, wenden Sie sich bitte an linux-mm@kvack.org und die zswap-Maintainer.
Ein spezieller Allokator für die Speicherung komprimierter Seiten. Er ist für die Speicherung von bis zu drei Ein spezieller Allokator für die Speicherung komprimierter Seiten.
komprimierten Seiten pro physischer Seite ausgelegt. Er ist für die Speicherung von bis zu drei komprimierten Seiten pro physischer Seite ausgelegt.
Es handelt sich um ein ZBUD-Derivat, so dass die Einfachheit und der Determinismus weiterhin gegeben sind. Es handelt sich um ein ZBUD-Derivat, so dass die Einfachheit und der Determinismus weiterhin gegeben sind.
\english{Deprecated and scheduled for removal in a few cycles. \english{Deprecated and scheduled for removal in a few cycles.
If you have a good reason for using Z3FOLD over ZSMALLOC, please contact linux-mm@kvack.org and the zswap maintainers.\\ If you have a good reason for using Z3FOLD over ZSMALLOC, please contact linux-mm@kvack.org and the zswap maintainers.\\
A special purpose allocator for storing compressed pages. A special purpose allocator for storing compressed pages.
It is designed to store up to three compressed pages per physical page. It is designed to store up to three compressed pages per physical page.
It is a ZBUD derivative so the simplicity and determinism are still there.} It is a ZBUD derivative so the simplicity and determinism are still there.}
}
%13.2 %13.2
\subsection{N:1 compression allocator (zsmalloc) \texorpdfstring{$\rightarrow$}{->}} \subsection{N:1 compression allocator (zsmalloc) \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_ZSMALLOC [=y] \textbf{[Y]}\\ CONFIG\_ZSMALLOC [=y] \textbf{[Y]}\\
zsmalloc ist ein Slab-basierter Speicherallokator, der für die effiziente Speicherung von Seiten zsmalloc ist ein Slab-basierter Speicherallokator, der für die effiziente Speicherung von Seiten verschiedener Komprimierungsstufen entwickelt wurde.
verschiedener Komprimierungsstufen entwickelt wurde. Er erreicht die höchste Speicherdichte mit der Er erreicht die höchste Speicherdichte mit der geringsten Fragmentierung.
geringsten Fragmentierung.
\english{zsmalloc is a slab-based memory allocator designed to store pages of various compression levels efficiently. \english{zsmalloc is a slab-based memory allocator designed to store pages of various compression levels efficiently.
It achieves the highest storage density with the least amount of fragmentation.} It achieves the highest storage density with the least amount of fragmentation.}
\subsubsection{Export zsmalloc statistics} \subsubsection{Export zsmalloc statistics}
CONFIG\_ZSMALLOC\_STAT [=n] \textbf{[N]}\\ CONFIG\_ZSMALLOC\_STAT \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Diese Option ermöglicht es dem Code in zsmalloc, verschiedene Statistiken über die Vorgänge in zsmalloc zu Diese Option ermöglicht es dem Code in zsmalloc, verschiedene Statistiken über die Vorgänge in zsmalloc zu sammeln und diese Informationen über debugfs in den Userspace zu exportieren.
sammeln und diese Informationen über debugfs in den Userspace zu exportieren. Wenn Sie unsicher sind, Wenn Sie unsicher sind, sagen Sie N.
sagen Sie N. \english{This option enables code in the zsmalloc to collect various statistics about what's happening in zsmalloc and exports that information to userspace via debugfs.
\english{This option enables code in the zsmalloc to collect various statistics about what's happening in zsmalloc and exports that
information to userspace via debugfs.
If unsure, say N.} If unsure, say N.}
\note{Wir schalten hier Statistiken aus, deshalb N.}
\subsubsection{Maximum number of physical pages per-zspage}$~$\\ \subsubsection{Maximum number of physical pages per-zspage}%$~$\\
CONFIG\_ZSMALLOC\_CHAIN\_SIZE [=8] \textbf{[8]}\\* CONFIG\_ZSMALLOC\_CHAIN\_SIZE [=8] \textbf{[8]}\\*
Diese Option legt die Obergrenze für die Anzahl der physischen Seiten fest, aus denen eine zmalloc-Seite Diese Option legt die Obergrenze für die Anzahl der physischen Seiten fest, aus denen eine zmalloc-Seite (zspage) bestehen kann.
(zspage) bestehen kann. Die optimale zspage-Kettengröße wird für jede Größenklasse während der Die optimale zspage-Kettengröße wird für jede Größenklasse während der Initialisierung des Pools berechnet.\\
Initialisierung des Pools berechnet.\\ Eine Änderung dieser Option kann die Eigenschaften der Größenklassen verändern, z.\,B. die Anzahl der Seiten pro zspage und die Anzahl der Objekte pro zspage.
Eine Änderung dieser Option kann die Eigenschaften der Größenklassen Dies kann auch zu unterschiedlichen Konfigurationen des Pools führen, da zsmalloc Größenklassen mit ähnlichen Eigenschaften zusammenführt.\\
verändern, z.\,B. die Anzahl der Seiten pro zspage und die Anzahl der Objekte pro zspage.
Dies kann auch zu unterschiedlichen Konfigurationen des Pools führen, da zsmalloc Größenklassen mit
ähnlichen Eigenschaften zusammenführt.\\
Weitere Informationen finden Sie in der Dokumentation zu zsmalloc. Weitere Informationen finden Sie in der Dokumentation zu zsmalloc.
\english{This option sets the upper limit on the number of physical pages that a zmalloc page (zspage) can consist of. \english{This option sets the upper limit on the number of physical pages that a zmalloc page (zspage) can consist of.
The optimal zspage chain size is calculated for each size class during the initialization of the pool.\\ The optimal zspage chain size is calculated for each size class during the initialization of the pool.\\
@@ -205,27 +188,23 @@ Dies ermöglicht die Auswahl eines Slab-Allokators.
%von Objekt-Warteschlangen realisiert. SLUB kann den Speicher effizient nutzen und verfügt über verbesserte %von Objekt-Warteschlangen realisiert. SLUB kann den Speicher effizient nutzen und verfügt über verbesserte
%Diagnosefunktionen. SLUB ist die Standardwahl für einen Slab-Allokator. %Diagnosefunktionen. SLUB ist die Standardwahl für einen Slab-Allokator.
\subsubsection{Configure for minimal memory footprint \tiny{seit 6.8}} \subsubsection{Configure for minimal memory footprint \tiny{seit 6.2}}
CONFIG\_SLUB\_TINY [=n] \textbf{[N]}\\* CONFIG\_SLUB\_TINY [=n] \textbf{[N]}\\*
Konfiguriert den Slab-Allokator so, dass ein minimaler Speicherbedarf erreicht wird, was zu Lasten der Skalierbarkeit, der Fehlersuche und anderer Funktionen geht. Konfiguriert den Slab-Allokator so, dass ein minimaler Speicherbedarf erreicht wird, was zu Lasten der Skalierbarkeit, der Fehlersuche und anderer Funktionen geht.
Dies ist nur für das kleinste System gedacht, das die SLOB-Zuweisung verwendet hat, und wird für Systeme mit mehr als 16 MB RAM nicht empfohlen. Dies ist nur für das kleinste System gedacht, das die SLOB-Zuweisung verwendet hat, und wird für Systeme mit mehr als \qty{16}{\mega\byte} RAM nicht empfohlen.
Wenn Sie unsicher sind, sagen Sie N. Wenn Sie unsicher sind, sagen Sie N.
\english{Configures the slab allocator in a way to achieve minimal memory footprint, sacrificing scalability, debugging and other features. \english{Configures the slab allocator in a way to achieve minimal memory footprint, sacrificing scalability, debugging and other features.
This is intended only for the smallest system that had used the SLOB allocator and is not recommended for systems with more than 16MB RAM.\\ This is intended only for the smallest system that had used the SLOB allocator and is not recommended for systems with more than 16MB RAM.\\
If unsure, say N.} If unsure, say N.}
\subsubsection{Allow slab caches to be merged} \subsubsection{Allow slab caches to be merged}
CONFIG\_SLAB\_MERGE\_DEFAULT [=y] \textbf{[Y]}\\ CONFIG\_SLAB\_MERGE\_DEFAULT [=y] \textbf{[Y]}\\*
Um die Fragmentierung des Kernspeichers zu verringern, können Slab-Caches zusammengelegt werden, wenn sie Um die Fragmentierung des Kernspeichers zu verringern, können Slab-Caches zusammengelegt werden, wenn sie die gleiche Größe und andere Merkmale aufweisen.
die gleiche Größe und andere Merkmale aufweisen. Dies birgt das Risiko, dass Kernel-Heap-Überläufe Objekte Dies birgt das Risiko, dass Kernel-Heap-Überläufe Objekte aus zusammengeführten Caches überschreiben können (und das Cache-Layout leichter zu kontrollieren ist), wodurch solche Heap-Angriffe von Angreifern leichter ausgenutzt werden können.
aus zusammengeführten Caches überschreiben können (und das Cache-Layout leichter zu kontrollieren ist), Wenn die Caches nicht gemischt werden, können diese Arten von Angriffen normalerweise nur Objekte im selben Cache beschädigen.
wodurch solche Heap-Angriffe von Angreifern leichter ausgenutzt werden können. Wenn die Caches nicht gemischt Um die Zusammenführung zur Laufzeit zu deaktivieren, kann \texttt{slab\_nomerge} in der Kernel-Befehlszeile übergeben werden.
werden, können diese Arten von Angriffen normalerweise nur Objekte im selben Cache beschädigen. Um die
Zusammenführung zur Laufzeit zu deaktivieren, kann \texttt{slab\_nomerge} in der Kernel-Befehlszeile
übergeben werden.
\english{For reduced kernel memory fragmentation, slab caches can be merged when they share the same size and other characteristics. \english{For reduced kernel memory fragmentation, slab caches can be merged when they share the same size and other characteristics.
This carries a risk of kernel heap overflows being able to overwrite objects from merged caches (and more easily control cache layout), This carries a risk of kernel heap overflows being able to overwrite objects from merged caches (and more easily control cache layout), which makes such heap attacks easier to exploit by attackers.
which makes such heap attacks easier to exploit by attackers.
By keeping caches unmerged, these kinds of exploits can usually only damage objects in the same cache. By keeping caches unmerged, these kinds of exploits can usually only damage objects in the same cache.
To disable merging at runtime, ``slab\_nomerge'' can be passed on the kernel command line.} To disable merging at runtime, ``slab\_nomerge'' can be passed on the kernel command line.}
@@ -239,8 +218,7 @@ This security feature reduces the predictability of the kernel slab allocator ag
\subsubsection{Harden slab freelist metadata} \subsubsection{Harden slab freelist metadata}
CONFIG\_SLAB\_FREELIST\_HARDENED [=y] \textbf{[Y]}\\ CONFIG\_SLAB\_FREELIST\_HARDENED [=y] \textbf{[Y]}\\
Viele Kernel-Heap-Angriffe zielen auf Slab-Cache-Metadaten und andere Infrastrukturen ab. Viele Kernel-Heap-Angriffe zielen auf Slab-Cache-Metadaten und andere Infrastrukturen ab.
Diese Optionen bringen geringfügige Leistungseinbußen mit sich, um den Kernel-Slab-Allokator gegen gängige Diese Optionen bringen geringfügige Leistungseinbußen mit sich, um den Kernel-Slab-Allokator gegen gängige Freelist-Angriffsmethoden zu härten.
Freelist-Angriffsmethoden zu härten.
{\color{gray}Einige Slab-Implementierungen haben mehr Sanity-Checking als andere. {\color{gray}Einige Slab-Implementierungen haben mehr Sanity-Checking als andere.
Diese Option ist am effektivsten mit CONFIG\_SLUB.} Diese Option ist am effektivsten mit CONFIG\_SLUB.}
\english{Many kernel heap attacks try to target slab cache metadata and other infrastructure. \english{Many kernel heap attacks try to target slab cache metadata and other infrastructure.
@@ -248,27 +226,21 @@ This options makes minor performance sacrifices to harden the kernel slab alloca
\subsubsection{Support allocation from separate kmalloc buckets \tiny{seit 6.11}} \subsubsection{Support allocation from separate kmalloc buckets \tiny{seit 6.11}}
CONFIG\_SLAB\_BUCKETS [=y] \textbf{[Y]}\\* CONFIG\_SLAB\_BUCKETS [=y] \textbf{[Y]}\\*
Angriffe auf den Kernel-Heap hängen häufig davon ab, dass man in der Lage ist, speziell dimensionierte Zuweisungen mit benutzergesteuertem Inhalt zu erstellen, Angriffe auf den Kernel-Heap hängen häufig davon ab, dass man in der Lage ist, speziell dimensionierte Zuweisungen mit benutzergesteuertem Inhalt zu erstellen, die in denselben kmalloc-Bucket wie ein Zielobjekt zugewiesen werden.
die in denselben kmalloc-Bucket wie ein Zielobjekt zugewiesen werden. Um die gemeinsame Nutzung dieser Zuweisungsbereiche zu vermeiden, sollte ein explizit getrennter Satz von Bereichen für benutzergesteuerte Zuweisungen bereitgestellt werden.
Um die gemeinsame Nutzung dieser Zuweisungsbereiche zu vermeiden, sollte ein explizit getrennter Satz von Bereichen Dies kann die Speicherfragmentierung geringfügig erhöhen, obwohl es sich in der Praxis nur um eine Handvoll zusätzlicher Seiten handelt, da der Großteil der benutzergesteuerten Zuweisungen relativ langlebig ist.\\
für benutzergesteuerte Zuweisungen bereitgestellt werden.
Dies kann die Speicherfragmentierung geringfügig erhöhen, obwohl es sich in der Praxis nur um eine Handvoll zusätzlicher Seiten handelt,
da der Großteil der benutzergesteuerten Zuweisungen relativ langlebig ist.\\
Wenn Sie unsicher sind, sagen Sie Y. Wenn Sie unsicher sind, sagen Sie Y.
\english{Kernel heap attacks frequently depend on being able to create specifically-sized allocations with user-controlled contents \english{Kernel heap attacks frequently depend on being able to create specifically-sized allocations with user-controlled contents that will be allocated into the same kmalloc bucket as a target object.
that will be allocated into the same kmalloc bucket as a target object.
To avoid sharing these allocation buckets, provide an explicitly separated set of buckets to be used for user-controlled allocations. To avoid sharing these allocation buckets, provide an explicitly separated set of buckets to be used for user-controlled allocations.
This may very slightly increase memory fragmentation, though in practice it's only a handful of extra pages since the bulk of user-controlled This may very slightly increase memory fragmentation, though in practice it's only a handful of extra pages since the bulk of user-controlled allocations are relatively long-lived.\\
allocations are relatively long-lived.\\
If unsure, say Y.} If unsure, say Y.}
\subsubsection{Enable performance statistics} \subsubsection{Enable performance statistics}
CONFIG\_SLUB\_STATS [=n] \textbf{[N]}\\ CONFIG\_SLUB\_STATS [=n] \textbf{[N]}\\
SLUB-Statistiken sind nützlich, um das Zuweisungsverhalten von SLUBs zu debuggen und Wege zur Optimierung SLUB-Statistiken sind nützlich, um das Zuweisungsverhalten von SLUBs zu debuggen und Wege zur Optimierung der Zuweisungsfunktion zu finden.
der Zuweisungsfunktion zu finden. Diese Funktion sollte niemals für den produktiven Einsatz aktiviert werden, Diese Funktion sollte niemals für den produktiven Einsatz aktiviert werden, da die Führung von Statistiken die Zuweisungsfunktion um einige Prozentpunkte verlangsamt.
da die Führung von Statistiken die Zuweisungsfunktion um einige Prozentpunkte verlangsamt. Der Befehl \texttt{slabinfo} unterstützt die Ermittlung der aktivsten Slabs, um herauszufinden, welche Slabs für eine bestimmte Last relevant sind.
Der Befehl \texttt{slabinfo} unterstützt die Ermittlung der aktivsten Slabs, um herauszufinden, Versuchen Sie Folgendes: \texttt{slabinfo -DA}
welche Slabs für eine bestimmte Last relevant sind. Versuchen Sie Folgendes: \texttt{slabinfo -DA}
\english{The statistics are useful to debug slab allocation behavior in order find ways to optimize the allocator. \english{The statistics are useful to debug slab allocation behavior in order find ways to optimize the allocator.
This should never be enabled for production use since keeping statistics slows down the allocator by a few percentage points. This should never be enabled for production use since keeping statistics slows down the allocator by a few percentage points.
The slabinfo command supports the determination of the most active slabs to figure out which slabs are relevant to a particular load. The slabinfo command supports the determination of the most active slabs to figure out which slabs are relevant to a particular load.
@@ -276,48 +248,33 @@ Try running: \texttt{slabinfo -DA}}
\subsubsection{Enable per cpu partial caches} \subsubsection{Enable per cpu partial caches}
CONFIG\_SLUB\_CPU\_PARTIAL [=y] \textbf{[Y]}\\ CONFIG\_SLUB\_CPU\_PARTIAL [=y] \textbf{[Y]}\\
Partielle Zwischenspeicher pro CPU beschleunigen die Zuweisung und Freigabe von Objekten, die lokal auf einem Prozessor-spezifische Teil-Caches beschleunigen die Zuweisung und Freigabe von Objekten, die lokal auf einen Prozessor beschränkt sind, allerdings auf Kosten einer höheren Unbestimmtheit hinsichtlich der Latenz der Freigabe.
Prozessor liegen, zum Preis einer größeren Unbestimmtheit bei der Latenzzeit der Freigabe. Bei Überlauf Bei einem Überlauf werden diese Caches gelöscht, was das Setzen von Sperren erfordert, was zu Latenzspitzen führen kann.
werden diese Caches geleert, was das Einnehmen von Sperren erfordert, die Latenzspitzen verursachen können. In der Regel würde man sich bei einem Echtzeitsystem gegen diese Option entscheiden.
Normalerweise würde man sich bei einem Echtzeitsystem für nein entscheiden. \english{Per cpu partial caches accelerate objects allocation and freeing that is local to a processor at the price of more indeterminism in the latency of the free.
\english{Per cpu partial caches accelerate objects allocation and freeing that is local to a processor at the price of more indeterminism
in the latency of the free.
On overflow these caches will be cleared which requires the taking of locks that may cause latency spikes. On overflow these caches will be cleared which requires the taking of locks that may cause latency spikes.
Typically one would choose no for a realtime system.} Typically one would choose no for a realtime system.}
\subsubsection{Randomize slab caches for normal kmalloc} \subsubsection{Randomize slab caches for normal kmalloc}
CONFIG\_RANDOM\_KMALLOC\_CACHES [=n] \textbf{[N]}\\ CONFIG\_RANDOM\_KMALLOC\_CACHES [=n] \textbf{[N]}\\
Eine Härtungsfunktion, die mehrere Kopien von Slab-Caches für die normale kmalloc-Allokation erstellt und Eine Härtungsfunktion, die mehrere Kopien von Slab-Caches für die normale kmalloc-Zuweisung erstellt und kmalloc veranlasst, basierend auf der Codeadresse zufällig eine auszuwählen, wodurch es für Angreifer schwieriger wird, anfällige Speicherobjekte auf dem Heap zu verteilen, um Speicherlücken auszunutzen.
kmalloc veranlasst, eine zufällig auf der Grundlage der Code-Adresse auszuwählen, was es Angreifern Gegenwärtig ist die Anzahl der Kopien auf 16 festgelegt, ein angemessen großer Wert, der die für verschiedene Subsysteme oder Module zugewiesenen Speicherobjekte effektiv in verschiedene Caches aufteilt, und zwar auf Kosten eines begrenzten Grades an Speicher- und CPU-Overhead, der mit der Hardware und der Systemauslastung zusammenhängt.
erschwert, verwundbare Speicherobjekte auf den Heap zu sprühen, um Speicherschwachstellen auszunutzen. \english{A hardening feature that creates multiple copies of slab caches for normal kmalloc allocation and makes kmalloc randomly pick one based on code address, which makes the attackers more difficult to spray vulnerable memory objects on the heap for the purpose of exploiting memory vulnerabilities.\\
Gegenwärtig ist die Anzahl der Kopien auf 16 festgelegt, ein angemessen großer Wert, der die für verschiedene Currently the number of copies is set to 16, a reasonably large value that effectively diverges the memory objects allocated for different subsystems or modules into different caches, at the expense of a limited degree of memory and CPU overhead that relates to hardware and system workload.}
Subsysteme oder Module zugewiesenen Speicherobjekte effektiv in verschiedene Caches aufteilt, und zwar auf
Kosten eines begrenzten Grades an Speicher- und CPU-Overhead, der mit der Hardware und der Systemauslastung
zusammenhängt.
\english{A hardening feature that creates multiple copies of slab caches for normal kmalloc allocation and makes kmalloc randomly pick one based on code address,
which makes the attackers more difficult to spray vulnerable memory objects on the heap for the purpose of exploiting memory vulnerabilities.\\
Currently the number of copies is set to 16, a reasonably large value that effectively diverges the memory objects allocated for different
subsystems or modules into different caches, at the expense of a limited degree of memory and CPU overhead that relates to hardware and system workload.}
%13.4 %13.4
\subsection{Page allocator randomization} \subsection{Page allocator randomization}
CONFIG\_SHUFFLE\_PAGE\_ALLOCATOR [=y] \textbf{[Y]}\\ CONFIG\_SHUFFLE\_PAGE\_ALLOCATOR [=y] \textbf{[Y]}\\
Die Randomisierung der Seitenzuweisung verbessert die durchschnittliche Auslastung eines direkt abgebildeten Die Randomisierung der Seitenzuweisung verbessert die durchschnittliche Auslastung eines direkt abgebildeten Memory-Side-Cache.
Memory-Side-Cache. In Abschnitt 5.2.27 Heterogeneous Memory Attribute Table (HMAT) der ACPI 6.2a-Spezifikation In Abschnitt 5.2.27 Heterogeneous Memory Attribute Table (HMAT) der ACPI 6.2a-Spezifikation finden Sie ein Beispiel dafür, wie eine Plattform das Vorhandensein eines speicherseitigen Cache anzeigt.
finden Sie ein Beispiel dafür, wie eine Plattform das Vorhandensein eines speicherseitigen Cache anzeigt. Es gibt auch zufällige Sicherheitsvorteile, da es die Vorhersagbarkeit von Seitenzuweisungen reduziert, um SLAB\_FREELIST\_RANDOM zu ergänzen, aber die Standardgranularität des Shufflings auf MAX\_ORDER, d.\,h. die 10.~Reihenfolge der Seiten wird auf der Grundlage der Cache-Nutzung auf x86 ausgewählt.
Es gibt auch zufällige Sicherheitsvorteile, da es die Vorhersagbarkeit von Seitenzuweisungen reduziert, um Die Randomisierung verbessert zwar die Cache-Nutzung, kann sich aber auf Plattformen ohne Cache negativ auf die Arbeitslast auswirken.
SLAB\_FREELIST\_RANDOM zu ergänzen, aber die Standardgranularität des Shufflings auf MAX\_ORDER, Aus diesem Grund wird die Randomisierung standardmäßig nur aktiviert, wenn zur Laufzeit ein direkt zugeordneter Memory-Side-Cache erkannt wird.
d.\,h. die 10. Reihenfolge der Seiten wird auf der Grundlage der Cache-Nutzung auf x86 ausgewählt. Andernfalls kann die Randomisierung mit dem Kernel-Befehlszeilenparameter \texttt{page\_alloc.shuffle} zwangsweise aktiviert werden.
Die Randomisierung verbessert zwar die Cache-Nutzung, kann sich aber auf Plattformen ohne Cache negativ auf
die Arbeitslast auswirken. Aus diesem Grund wird die Randomisierung standardmäßig nur aktiviert, wenn zur
Laufzeit ein direkt zugeordneter Memory-Side-Cache erkannt wird. Andernfalls kann die Randomisierung mit dem
Kernel-Befehlszeilenparameter \texttt{page\_alloc.shuffle} zwangsweise aktiviert werden.
Sagen Sie Y, wenn Sie unsicher sind. Sagen Sie Y, wenn Sie unsicher sind.
\english{Randomization of the page allocator improves the average utilization of a direct-mapped memory-side-cache. \english{Randomization of the page allocator improves the average utilization of a direct-mapped memory-side-cache.
See section 5.2.27 Heterogeneous Memory Attribute Table (HMAT) in the ACPI 6.2a specification for an example of how a platform advertises See section 5.2.27 Heterogeneous Memory Attribute Table (HMAT) in the ACPI 6.2a specification for an example of how a platform advertises the presence of a memory-side-cache.
the presence of a memory-side-cache. There are also incidental security benefits as it reduces the predictability of page allocations to compliment SLAB\_FREELIST\_RANDOM, but the default granularity of shuffling on the MAX\_PAGE\_ORDER i.e, 10th order of pages is selected based on cache utilization benefits on x86.\\
There are also incidental security benefits as it reduces the predictability of page allocations to compliment SLAB\_FREELIST\_RANDOM, but the default
granularity of shuffling on the MAX\_PAGE\_ORDER i.e, 10th order of pages is selected based on cache utilization benefits on x86.\\
While the randomization improves cache utilization it may negatively impact workloads on platforms without a cache. While the randomization improves cache utilization it may negatively impact workloads on platforms without a cache.
For this reason, by default, the randomization is not enabled even if SHUFFLE\_PAGE\_ALLOCATOR=y. For this reason, by default, the randomization is not enabled even if SHUFFLE\_PAGE\_ALLOCATOR=y.
The randomization may be force enabled with the `page\_alloc.shuffle' kernel command line parameter.\\ The randomization may be force enabled with the `page\_alloc.shuffle' kernel command line parameter.\\
@@ -326,22 +283,18 @@ Say Y if unsure.}
%13.5 %13.5
\subsection{Disable heap randomization} \subsection{Disable heap randomization}
CONFIG\_COMPAT\_BRK [=n] \textbf{[N]}\\ CONFIG\_COMPAT\_BRK [=n] \textbf{[N]}\\
Die Randomisierung der Heap-Platzierung macht Heap-Exploits schwieriger, aber sie macht auch alte Die Randomisierung der Heap-Platzierung macht Heap-Exploits schwieriger, aber sie macht auch alte Binärdateien (einschließlich aller libc5-basierten) kaputt.
Binärdateien (einschließlich aller libc5-basierten) kaputt. Diese Option ändert die Standardeinstellung beim Diese Option ändert die Standardeinstellung beim Booten auf Heap-Randomisierung deaktiviert und kann zur Laufzeit überschrieben werden, indem \texttt{/proc/sys/kernel/randomize\_va\_space} auf 2 gesetzt wird.
Booten auf Heap-Randomisierung deaktiviert und kann zur Laufzeit überschrieben werden, indem Auf nicht-alten Distributionen (nach 2000) ist N normalerweise eine sichere Wahl.
/proc/sys/kernel/randomize\_va\_space auf 2 gesetzt wird. Auf nicht-alten Distributionen (nach 2000)
ist N normalerweise eine sichere Wahl.
\english{Randomizing heap placement makes heap exploits harder, but it also breaks ancient binaries (including anything libc5 based). \english{Randomizing heap placement makes heap exploits harder, but it also breaks ancient binaries (including anything libc5 based).
This option changes the bootup default to heap randomization disabled, and can be overridden at runtime by setting This option changes the bootup default to heap randomization disabled, and can be overridden at runtime by setting \texttt{/proc/sys/kernel/randomize\_va\_space} to 2.\\
\texttt{/proc/sys/kernel/randomize\_va\_space} to 2.\\
On non-ancient distros (post-2000 ones) N is usually a safe choice.} On non-ancient distros (post-2000 ones) N is usually a safe choice.}
%13.6 %13.6
\subsection{Sparse Memory virtual memmap} \subsection{Sparse Memory virtual memmap}
CONFIG\_SPARSEMEM\_VMEMMAP [=y] \textbf{[Y]}\\ CONFIG\_SPARSEMEM\_VMEMMAP [=y] \textbf{[Y]}\\
SPARSEMEM\_VMEMMAP verwendet eine virtuell gemappte Memmap, um texttt{pfn\_to\_page} und\\ \texttt{SPARSEMEM\_VMEMMAP} verwendet eine virtuell zugeordnete memmap, um die Operationen \texttt{pfn\_to\_page} und \texttt{page\_to\_pfn} zu optimieren.
\texttt{page\_to\_pfn} Operationen zu optimieren. Dies ist die effizienteste Option, wenn genügend Kernel"=Ressourcen verfügbar sind.
Dies ist die effizienteste Option, wenn genügend Kernel-Res\-sour\-cen verfügbar sind.
\english{SPARSEMEM\_VMEMMAP uses a virtually mapped memmap to optimise pfn\_to\_page and page\_to\_pfn operations. \english{SPARSEMEM\_VMEMMAP uses a virtually mapped memmap to optimise pfn\_to\_page and page\_to\_pfn operations.
This is the most efficient option when sufficient kernel resources are available.} This is the most efficient option when sufficient kernel resources are available.}
@@ -391,21 +344,19 @@ This memory may be utilized for kernel data.}
\paragraph{kernel}\mbox{}\\ \paragraph{kernel}\mbox{}\\
CONFIG\_MHP\_DEFAULT\_ONLINE\_TYPE\_ONLINE\_KERNEL [=n] \textbf{[N]}\\ CONFIG\_MHP\_DEFAULT\_ONLINE\_TYPE\_ONLINE\_KERNEL [=n] \textbf{[N]}\\
Wählen Sie diese Option, wenn Sie möchten, dass der Kernel automatisch Hotplugged-Speicher in eine Zone online stellt, Wählen Sie diese Option, wenn Sie möchten, dass der Kernel automatisch Hotplugged-Speicher in eine Zone online stellt, die für Kernel-Daten verwendet werden kann.
die für Kernel-Daten verwendet werden kann.
Dies bedeutet normalerweise ZONE\_NORMAL. Dies bedeutet normalerweise ZONE\_NORMAL.
\english{Select this if you want the kernel to automatically online hotplugged memory into a zone capable of being used for kernel data. \english{Select this if you want the kernel to automatically online hotplugged memory into a zone capable of being used for kernel data.
This typically means ZONE\_NORMAL.} This typically means ZONE\_NORMAL.}
\paragraph{movable}\mbox{}\\ \paragraph{movable}\mbox{}\\
CONFIG\_MHP\_DEFAULT\_ONLINE\_TYPE\_ONLINE\_MOVABLE [=n] \textbf{[N]}\\ CONFIG\_MHP\_DEFAULT\_ONLINE\_TYPE\_ONLINE\_MOVABLE [=n] \textbf{[N]}\\
Wählen Sie diese Option, wenn Sie möchten, dass der Kernel automatisch Hotplug-Speicher in ZONE\_MOVABLE online stellt. Wählen Sie diese Option, wenn Sie möchten, dass der Kernel den Speicher automatisch online in \texttt{ZONE\_MOVABLE} einbindet.
Dieser Speicher wird in der Regel nicht für Kernel-Daten verwendet.\\ Dieser Speicher wird in der Regel nicht für Kernel-Daten verwendet.
Diese Option sollte nur verwendet werden, wenn der Administrator weiß, dass genügend ZONE\_NORMAL"=Speicher verfügbar ist, um den Hotplug-Speicher zu beschreiben, Diese Option sollte nur verwendet werden, wenn der Administrator weiß, dass genügend \texttt{ZONE\_NORMAL}"=Speicher verfügbar ist, um den Hotplug-Speicher zu beschreiben, da sonst der Hotplug-Speicher möglicherweise nicht online geschaltet werden kann.
da sonst der Hotplug-Speicher möglicher\-weise nicht online geschaltet werden kann. Beispielsweise muss ausreichend kernel-fähiger Speicher (\texttt{ZONE\_NORMAL}) verfügbar sein, um Seitenstrukturen zur Beschreibung von \texttt{ZONE\_MOVABLE} zuzuweisen.
Beispielsweise muss ausreichend kernel-fähiger Speicher (ZONE\_NORMAL) verfügbar sein, um Seitenstrukturen zur Beschreibung von ZONE\_MOVABLE zuzuweisen.
\english{Select this if you want the kernel to automatically online hotplug memory into ZONE\_MOVABLE. \english{Select this if you want the kernel to automatically online hotplug memory into ZONE\_MOVABLE.
This memory will generally not be utilized for kernel data.\\ This memory will generally not be utilized for kernel data.
This should only be used when the admin knows sufficient ZONE\_NORMAL memory is available to describe hotplug memory, otherwise hotplug memory may fail to online. This should only be used when the admin knows sufficient ZONE\_NORMAL memory is available to describe hotplug memory, otherwise hotplug memory may fail to online.
For example, sufficient kernel-capable memory (ZONE\_NORMAL) must be available to allocate page structs to describe ZONE\_MOVABLE.} For example, sufficient kernel-capable memory (ZONE\_NORMAL) must be available to allocate page structs to describe ZONE\_MOVABLE.}
@@ -414,58 +365,46 @@ CONFIG\_MEMORY\_HOTREMOVE [=y] \textbf{[Y]}\\
Für diese Option ist keine Hilfe verfügbar. Für diese Option ist keine Hilfe verfügbar.
\english{There is no help available for this option.} \english{There is no help available for this option.}
%13.8
\subsection{Allow for balloon memory compaction/migration} \subsection{Allow for balloon memory compaction/migration}
CONFIG\_BALLOON\_COMPACTION [=y] \textbf{[Y]}\\ CONFIG\_BALLOON\_COMPACTION [=y] \textbf{[Y]}\\
Die durch das Ballooning verursachte Speicherfragmentierung kann die Anzahl der zusammenhängenden Die durch Ballooning verursachte Speicherfragmentierung kann die Anzahl der zusammenhängenden 2-MB-Speicherblöcke, die innerhalb eines Gastsystems verwendet werden können, erheblich reduzieren, was zu Leistungseinbußen aufgrund der geringeren Anzahl transparenter großer Seiten führt, die vom Gastsystem verwendet werden können.
2-MB-Speicher\-blöcke, die in einem Gastsystem verwendet werden können, erheblich verringern, was zu Durch die Komprimierung und Migration von Speicherseiten, die als Teil von Speicher-Ballon-Geräten registriert sind, wird das oben genannte Szenario vermieden und die Speicherdefragmentierung verbessert.
Leistungseinbußen aufgrund der geringeren Anzahl transparenter großer Seiten führt, die vom Gastsystem \english{Memory fragmentation introduced by ballooning might reduce significantly the number of 2MB contiguous memory blocks that can be used within a guest, thus imposing performance penalties associated with the reduced number of transparent huge pages that could be used by the guest workload.
verwendet werden können. Das Zulassen der Verdichtung und Migration für Speicherseiten, die als Teil von Allowing the compaction \& migration for memory pages enlisted as being part of memory balloon devices avoids the scenario aforementioned and helps improving memory defragmentation.}
Speicher-Ballon-Geräten eingetragen sind, vermeidet das oben beschriebene Szenario und trägt zur Verbesserung
der Speicherdefragmentierung bei.
\english{Memory fragmentation introduced by ballooning might reduce significantly the number of 2MB contiguous memory blocks that
can be used within a guest, thus imposing performance penalties associated with the reduced number of transparent huge pages that
could be used by the guest workload.
Allowing the compaction \& migration for memory pages enlisted as being part of memory balloon devices avoids the
scenario aforementioned and helps improving memory defragmentation.}
%13.9
\subsection{Allow for memory compaction} \subsection{Allow for memory compaction}
CONFIG\_COMPACTION [=y] \textbf{[Y]}\\ CONFIG\_COMPACTION [=y] \textbf{[Y]}\\
Die Verdichtung ist die einzige Speicherverwaltungskomponente, die zuverlässig Speicherblöcke hoher Ordnung Die Komprimierung ist die einzige Komponente der Speicherverwaltung, die zuverlässig Speicherblöcke höherer Ordnung (größere, physisch zusammenhängende Blöcke) bildet.
(größere, physisch zusammenhängende Blöcke) bildet. Die Seitenzuweisung ist in hohem Maße auf die Verdichtung Der Seitenzuordner ist stark auf die Komprimierung angewiesen, und das Fehlen dieser Funktion kann zu unerwarteten OOM-Killer-Aufrufen für Speicheranforderungen höherer Ordnung führen.
angewiesen, und das Fehlen dieser Funktion kann bei Speicheranforderungen hoher Ordnung zu unerwarteten Sie sollten diese Option nicht deaktivieren, es sei denn, es gibt wirklich einen triftigen Grund dafür, und dann wären wir sehr daran interessiert, diesen unter \href{mailto:linux-mm@kvack.org}{linux-mm@kvack.org} zu erfahren.
OOM-Killer-Aufrufen führen. Sie sollten diese Option nicht deaktivieren, es sei denn, es gibt wirklich einen
triftigen Grund dafür, und dann wären wir sehr daran interessiert, diesen unter
\href{mailto:linux-mm@kvack.org}{linux-mm@kvack.org} zu erfahren.
\english{Compaction is the only memory management component to form high order (larger physically contiguous) memory blocks reliably. \english{Compaction is the only memory management component to form high order (larger physically contiguous) memory blocks reliably.
The page allocator relies on compaction heavily and the lack of the feature can lead to unexpected OOM killer invocations The page allocator relies on compaction heavily and the lack of the feature can lead to unexpected OOM killer invocations for high order memory requests.
for high order memory requests. You shouldn't disable this option unless there really is a strong reason for it and then we would be really interested to hear about that at linux-mm@kvack.org.}
You shouldn't disable this option unless there really is a strong reason for it and then we would be really interested
to hear about that at linux-mm@kvack.org.}
%13.10
\subsection{Free page reporting} \subsection{Free page reporting}
CONFIG\_PAGE\_REPORTING [=y] \textbf{[Y]}\\ CONFIG\_PAGE\_REPORTING [=y] \textbf{[Y]}\\
Die Meldung freier Seiten ermöglicht die inkrementelle Erfassung freier Seiten vom Buddy-Allokator mit Die Meldung freier Seiten ermöglicht die inkrementelle Erfassung freier Seiten vom Buddy-Allokator mit dem Ziel, diese Seiten einer anderen Einheit, z.\,B. einem Hypervisor, zu melden, damit der Speicher innerhalb des Hosts für andere Zwecke freigegeben werden kann.
dem Ziel, diese Seiten einer anderen Einheit, z.\,B. einem Hypervisor, zu melden, damit der Speicher \english{Free page reporting allows for the incremental acquisition of free pages from the buddy allocator for the purpose of reporting those pages to another entity, such as a hypervisor, so that the memory can be freed within the host for other uses.}
innerhalb des Hosts für andere Zwecke freigegeben werden kann.
\english{Free page reporting allows for the incremental acquisition of free pages from the buddy allocator for the purpose
of reporting those pages to another entity, such as a hypervisor, so that the memory can be freed within the host for other uses.}
%13.11
\subsection{Page migration} \subsection{Page migration}
CONFIG\_MIGRATION [=y] \textbf{[Y]}\\ CONFIG\_MIGRATION [=y] \textbf{[Y]}\\
Ermöglicht die Migration des physischen Standorts von Seiten von Prozessen, während die virtuellen Ermöglicht die Migration des physischen Standorts von Seiten von Prozessen, während die virtuellen Adressen nicht geändert werden.
Adressen nicht geändert werden. Dies ist in zwei Situationen nützlich. Erstens auf NUMA-Systemen, um Dies ist in zwei Situationen nützlich. Erstens auf NUMA-Systemen, um Seiten näher an die zugreifenden Prozessoren zu bringen.
Seiten näher an die zugreifenden Prozessoren zu bringen. Zweitens bei der Zuweisung großer Seiten, Zweitens bei der Zuweisung großer Seiten, da durch die Migration Seiten verlagert werden können, um eine große Seitenzuweisung zu erfüllen, anstatt sie zurückzufordern.
da durch die Migration Seiten verlagert werden können, um eine große Seitenzuweisung zu erfüllen,
anstatt sie zurückzufordern.
\english{Allows the migration of the physical location of pages of processes while the virtual addresses are not changed. \english{Allows the migration of the physical location of pages of processes while the virtual addresses are not changed.
This is useful in two situations. This is useful in two situations.
The first is on NUMA systems to put pages nearer to the processors accessing. The first is on NUMA systems to put pages nearer to the processors accessing.
The second is when allocating huge pages as migration can relocate pages to satisfy a huge page allocation instead of reclaiming.} The second is when allocating huge pages as migration can relocate pages to satisfy a huge page allocation instead of reclaiming.}
%13.12
\subsection{Maximum scale factor of PCP (Per-CPU pageset) batch allocate/free \tiny{seit 6.7}} \subsection{Maximum scale factor of PCP (Per-CPU pageset) batch allocate/free \tiny{seit 6.7}}
CONFIG\_PCP\_BATCH\_SCALE\_MAX [=5] \textbf{[5]}\\* CONFIG\_PCP\_BATCH\_SCALE\_MAX [=5] \textbf{[5]}\\*
Bei der Seitenzuweisung wird der PCP (Per-CPU pageset) in Chargen aufgefüllt und entleert. Bei der Seitenzuweisung wird der PCP (Per-CPU pageset) in Chargen aufgefüllt und entleert.
Die Anzahl der Stapel wird automatisch skaliert, um den Durchsatz bei der Seitenzuweisung/befreien zu verbessern. Die Anzahl der Stapel wird automatisch skaliert, um den Durchsatz bei der Seitenzuweisung/Freigabe zu verbessern.
Ein zu großer Skalierungsfaktor kann jedoch die Latenz beeinträchtigen. Ein zu großer Skalierungsfaktor kann jedoch die Latenz beeinträchtigen.
Mit dieser Option wird die Obergrenze des Skalierungsfaktors festgelegt, um die maximale Latenz zu begrenzen. Mit dieser Option wird die Obergrenze des Skalierungsfaktors festgelegt, um die maximale Latenz zu begrenzen.
\english{In page allocator, PCP (Per-CPU pageset) is refilled and drained in batches. \english{In page allocator, PCP (Per-CPU pageset) is refilled and drained in batches.
@@ -473,50 +412,45 @@ The batch number is scaled automatically to improve page allocation/free through
But too large scale factor may hurt latency. But too large scale factor may hurt latency.
This option sets the upper limit of scale factor to limit the maximum latency.} This option sets the upper limit of scale factor to limit the maximum latency.}
%13.13
\subsection{Enable KSM for page merging} \subsection{Enable KSM for page merging}
CONFIG\_KSM [=y] \textbf{[Y]}\\ CONFIG\_KSM [=y] \textbf{[Y]}\\
Aktivieren Sie Kernel Samepage Merging: KSM scannt in regelmäßigen Abständen die Bereiche des Adressraums Aktivieren Sie Kernel Samepage Merging: KSM scannt in regelmäßigen Abständen die Bereiche des Adressraums einer Anwendung, die laut einer Anwendung zusammengeführt werden können.
einer Anwendung, die laut einer Anwendung zusammengeführt werden können. Wenn er Seiten mit identischem Wenn er Seiten mit identischem Inhalt findet, ersetzt er die vielen Instanzen durch eine einzige Seite mit diesem Inhalt und spart so Speicher, bis eine oder eine andere Anwendung den Inhalt ändern muss.
Inhalt findet, ersetzt er die vielen Instanzen durch eine einzige Seite mit diesem Inhalt und spart so Empfohlen für die Verwendung mit KVM oder mit anderen doppelten Anwendungen.\\
Speicher, bis eine oder eine andere Anwendung den Inhalt ändern muss. Empfohlen für die Verwendung mit KVM Siehe Documentation/mm/ksm.rst für weitere Informationen: KSM ist inaktiv, bis ein Programm festgestellt hat, dass ein Bereich MADV\_MERGEABLE ist, und root /sys/kernel/mm/ksm/run auf 1 gesetzt hat
oder mit anderen doppelten Anwendungen.\\
Siehe Documentation/mm/ksm.rst für weitere Informationen: KSM ist inaktiv, bis ein Programm festgestellt hat,
dass ein Bereich MADV\_MERGEABLE ist, und root /sys/kernel/mm/ksm/run auf 1 gesetzt hat
(wenn CONFIG\_SYSFS gesetzt ist). (wenn CONFIG\_SYSFS gesetzt ist).
\english{Enable Kernel Samepage Merging: KSM periodically scans those areas of an application's address space that an app \english{Enable Kernel Samepage Merging: KSM periodically scans those areas of an application's address space that an app has advised may be mergeable.
has advised may be mergeable. When it finds pages of identical content, it replaces the many instances by a single page with that content, so saving memory until one or another app needs to modify the content.
When it finds pages of identical content, it replaces the many instances by a single page with that content, so
saving memory until one or another app needs to modify the content.
Recommended for use with KVM, or with other duplicative applications. Recommended for use with KVM, or with other duplicative applications.
See Documentation/mm/ksm.rst for more information: KSM is inactive until a program has madvised that an area is MADV\_MERGEABLE, See Documentation/mm/ksm.rst for more information: KSM is inactive until a program has madvised that an area is MADV\_MERGEABLE, and root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG\_SYSFS is set).}
and root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG\_SYSFS is set).}
%13.14
\subsection{Low address space to protect from user allocation} \subsection{Low address space to protect from user allocation}
CONFIG\_DEFAULT\_MMAP\_MIN\_ADDR [=65536] \textbf{[65536]}\\ CONFIG\_DEFAULT\_MMAP\_MIN\_ADDR [=65536] \textbf{[65536]}\\
Dies ist der Teil des niedrigen virtuellen Speichers, der vor der Zuweisung an den Benutzerraum geschützt werden Dies ist der Teil des niedrigen virtuellen Speichers, der vor der Zuweisung an den Benutzerraum geschützt werden sollte.
sollte. Wenn ein Benutzer davon abgehalten wird, auf niedrige Seiten zu schreiben, kann dies dazu beitragen, die Wenn ein Benutzer davon abgehalten wird, auf niedrige Seiten zu schreiben, kann dies dazu beitragen, die Auswirkungen von NULL-Zeiger-Fehlern im Kernel zu verringern.
Auswirkungen von NULL-Zeiger-Fehlern im Kernel zu verringern. Für die meisten ia64-, ppc64- und x86-Benutzer mit Für die meisten ia64-, ppc64- und x86-Benutzer mit viel Adressraum ist ein Wert von \num{65536} angemessen und sollte keine Probleme verursachen.
viel Adressraum ist ein Wert von 65536 angemessen und sollte keine Probleme verursachen. Auf Arm und anderen Architekturen sollte er nicht höher als \num{32768} sein.
Auf Arm und anderen Architekturen sollte er nicht höher als 32768 sein. Programme, die die vm86-Funktionalität nutzen oder Programme, die die vm86-Funktionalität nutzen oder diesen niedrigen Adressraum abbilden müssen, benötigen CAP\_SYS\_RAWIO oder deaktivieren diesen Schutz, indem sie den Wert auf 0 setzen.
diesen niedrigen Adressraum abbilden müssen, benötigen CAP\_SYS\_RAWIO oder deaktivieren diesen Schutz, Dieser Wert kann nach dem Booten mit dem Parameter \texttt{/proc/sys/vm/mmap\_min\_addr} geändert werden.
indem sie den Wert auf 0 setzen. Dieser Wert kann nach dem Booten mit dem Parameter /proc/sys/vm/mmap\_min\_addr
geändert werden.
\english{This is the portion of low virtual memory which should be protected from userspace allocation. \english{This is the portion of low virtual memory which should be protected from userspace allocation.
Keeping a user from writing to low pages can help reduce the impact of kernel NULL pointer bugs.\\ Keeping a user from writing to low pages can help reduce the impact of kernel NULL pointer bugs.\\
For most arm64, ppc64 and x86 users with lots of address space a value of 65536 is reasonable and should cause no problems. For most arm64, ppc64 and x86 users with lots of address space a value of 65536 is reasonable and should cause no problems.
On arm and other archs it should not be higher than 32768. On arm and other archs it should not be higher than 32768.
Programs which use vm86 functionality or have some need to map this low address space will need CAP\_SYS\_RAWIO or disable Programs which use vm86 functionality or have some need to map this low address space will need CAP\_SYS\_RAWIO or disable this protection by setting the value to 0.\\
this protection by setting the value to 0.\\
This value can be changed after boot using the /proc/sys/vm/mmap\_min\_addr tunable.} This value can be changed after boot using the /proc/sys/vm/mmap\_min\_addr tunable.}
%13.15
\subsection{Enable recovery from hardware memory errors} \subsection{Enable recovery from hardware memory errors}
CONFIG\_MEMORY\_FAILURE [=y] \textbf{[Y]}\\ CONFIG\_MEMORY\_FAILURE \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Ermöglicht die Wiederherstellung von Code nach einigen Speicherfehlern auf Systemen mit MCA"=Wiederherstellung. Ermöglicht die Wiederherstellung von Code nach einigen Speicherfehlern auf Systemen mit MCA"=Wiederherstellung.
Dadurch kann ein System auch dann weiterlaufen, wenn ein Teil des Speichers unkorrigierte Fehler aufweist. Dadurch kann ein System auch dann weiterlaufen, wenn ein Teil des Speichers unkorrigierte Fehler aufweist.
Dies erfordert spezielle Hardwareunterstützung und in der Regel ECC-Speicher. Dies erfordert spezielle Hardwareunterstützung und in der Regel ECC-Speicher.
\english{Enables code to recover from some memory failures on systems with MCA recovery. \english{Enables code to recover from some memory failures on systems with MCA recovery.
This allows a system to continue running even when some of its memory has uncorrected errors. This allows a system to continue running even when some of its memory has uncorrected errors.
This requires special hardware support and typically ECC memory.} This requires special hardware support and typically ECC memory.}
\note{Typischerweise haben wir bei uns keine ECC-Speicherbausteine, deshalb N.}
\subsubsection{HWPoison pages injector} \subsubsection{HWPoison pages injector}
CONFIG\_HWPOISON\_INJECT [=m] \textbf{[M]}\\ CONFIG\_HWPOISON\_INJECT [=m] \textbf{[M]}\\
@@ -525,14 +459,11 @@ CONFIG\_HWPOISON\_INJECT [=m] \textbf{[M]}\\
\subsection{Transparent Hugepage Support \texorpdfstring{$\rightarrow$}{->}} \subsection{Transparent Hugepage Support \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_TRANSPARENT\_HUGEPAGE [=y] \textbf{[Y]}\\ CONFIG\_TRANSPARENT\_HUGEPAGE [=y] \textbf{[Y]}\\
Transparent Hugepages erlaubt es dem Kernel, große Seiten und große tlb transparent für die Anwendungen zu Transparent Hugepage erlaubt es dem Kernel, große Seiten und große tlb transparent für die Anwendungen zu verwenden, wann immer dies möglich ist.
verwenden, wann immer dies möglich ist. Diese Funktion kann die Rechenleistung bestimmter Anwendungen verbessern, Diese Funktion kann die Rechenleistung bestimmter Anwendungen verbessern, indem sie Seitenfehler bei der Speicherzuweisung beschleunigt, die Anzahl der tlb-Misses verringert und das Durchlaufen der Seitentabelle beschleunigt.
indem sie Seitenfehler bei der Speicherzuweisung beschleunigt, die Anzahl der tlb-Misses verringert und das
Durchlaufen der Seitentabelle beschleunigt.
Wenn der Speicher bei eingebetteten Systemen begrenzt ist, können Sie N angeben. Wenn der Speicher bei eingebetteten Systemen begrenzt ist, können Sie N angeben.
\english{Transparent Hugepages allows the kernel to use huge pages and huge tlb transparently to the applications whenever possible. \english{Transparent Hugepages allows the kernel to use huge pages and huge tlb transparently to the applications whenever possible.
This feature can improve computing performance to certain applications by speeding up page faults during memory allocation, This feature can improve computing performance to certain applications by speeding up page faults during memory allocation, by reducing the number of tlb misses and by speeding up the pagetable walking.\\
by reducing the number of tlb misses and by speeding up the pagetable walking.\\
If memory constrained on embedded, you may want to say N.} If memory constrained on embedded, you may want to say N.}
\subsubsection{Transparent Hugepage Support sysfs defaults () \texorpdfstring{$\rightarrow$}{->}} \subsubsection{Transparent Hugepage Support sysfs defaults () \texorpdfstring{$\rightarrow$}{->}}
@@ -541,47 +472,52 @@ Wählt die sysfs-Vorgaben für die transparente Hugepage-Unterstützung aus.
\paragraph{always}$~$\\ \paragraph{always}$~$\\
CONFIG\_TRANSPARENT\_HUGEPAGE\_ALWAYS [=y] \textbf{[Y]}\\ CONFIG\_TRANSPARENT\_HUGEPAGE\_ALWAYS [=y] \textbf{[Y]}\\
Die ständige Aktivierung von Transparent Hugepage kann den Speicherbedarf von Anwendungen erhöhen, ohne dass Die ständige Aktivierung von Transparent Hugepage kann den Speicherbedarf von Anwendungen erhöhen, ohne dass dies einen garantierten Nutzen hat, aber es funktioniert automatisch für alle Anwendungen.
dies einen garantierten Nutzen hat, aber es funktioniert automatisch für alle Anwendungen. \english{Enabling Transparent Hugepage always, can increase the memory footprint of applications without a guaranteed benefit but it will work automatically for all applications.}
\english{Enabling Transparent Hugepage always, can increase the memory footprint of applications without a guaranteed
benefit but it will work automatically for all applications.}
\paragraph{madvise}$~$\\ \paragraph{madvise}$~$\\
CONFIG\_TRANSPARENT\_HUGEPAGE\_MADVISE [=n] \textbf{[N]}\\ CONFIG\_TRANSPARENT\_HUGEPAGE\_MADVISE [=n] \textbf{[N]}\\
Die Aktivierung von Transparent Hugepage madvise bringt nur eine Leistungsverbesserung für die Anwendungen, die Die Aktivierung von Transparent Hugepage madvise bringt nur eine Leistungsverbesserung für die Anwendungen, die madvise(MADV\_HUGEPAGE) verwenden, aber es besteht nicht die Gefahr, dass der Speicherbedarf von Anwendungen ohne garantierten Nutzen erhöht wird.
madvise(MADV\_HUGEPAGE) verwenden, aber es besteht nicht die Gefahr, dass der Speicherbedarf von Anwendungen \english{Enabling Transparent Hugepage madvise, will only provide a performance improvement benefit to the applications using madvise(MADV\_HUGEPAGE) but it won't risk to increase the memory footprint of applications without a guaranteed benefit.}
ohne garantierten Nutzen erhöht wird.
\english{Enabling Transparent Hugepage madvise, will only provide a performance improvement benefit to the applications using
madvise(MADV\_HUGEPAGE) but it won't risk to increase the memory footprint of applications without a guaranteed benefit.}
\subsubsection{Read-only THP for filesystems (EXPERIMENTAL)} \subsubsection{Read-only THP for filesystems (EXPERIMENTAL) \tiny{seit 5.4}}
CONFIG\_READ\_ONLY\_THP\_FOR\_FS [=y] \textbf{[Y]}\\ CONFIG\_READ\_ONLY\_THP\_FOR\_FS [=y] \textbf{[Y]}\\
Erlaubt khugepaged, schreibgeschützte Seiten in THP zu speichern. Dies ist als experimentell gekennzeichnet, da Erlaubt khugepaged, schreibgeschützte Seiten in THP zu speichern.
es sich um eine neue Funktion handelt. Schreibunterstützung für Datei-THPs wird in den nächsten Release-Zyklen Dies ist als experimentell gekennzeichnet, da es sich um eine neue Funktion handelt.
entwickelt werden. Schreibunterstützung für Datei-THPs wird in den nächsten Release-Zyklen entwickelt werden.
\english{Allow khugepaged to put read-only file-backed pages in THP.\\ \english{Allow khugepaged to put read-only file-backed pages in THP.\\
This is marked experimental because it is a new feature. This is marked experimental because it is a new feature.
Write support of file THPs will be developed in the next few release cycles.} Write support of file THPs will be developed in the next few release cycles.}
\subsubsection{No per-page mapcount (EXPERIMENTAL) \tiny{seit 6.15}}
CONFIG\_NO\_PAGE\_MAPCOUNT [=n] \textbf{[N]}\\*
Verwenden Sie keine Seiten-Zuordnungsanzahlen (per-page mapcounts) für Seiten, die Teil größerer Zuweisungen sind, wie z.\,B. transparente riesige Seiten.
Wenn diese Konfigurationsoption aktiviert ist, verwenden einige Schnittstellen, die sich auf diese Informationen stützen, stattdessen weniger genaue Informationen pro Zuweisung:
Beispielsweise wird in einer so großen Zuweisung die durchschnittliche Seiten-Zuordnungsanzahl anstelle der Seiten-Zuordnungsanzahl verwendet.
EXPERIMENTELL, da die Auswirkungen einiger Änderungen noch unklar sind.
\english{Do not maintain per-page mapcounts for pages part of larger allocations, such as transparent huge pages.
When this config option is enabled, some interfaces that relied on this information will rely on less-precise per-allocation information instead:
for example, using the average per-page mapcount in such a large allocation instead of the per-page mapcount.
EXPERIMENTAL because the impact of some changes is still unclear.}
\note{Derzeit (2025) wird davon abgeraten, diese Option zu aktivieren, da zwar eine Leistungssteigerung zu erwarten ist, jedoch die Stabilität und Zuverlässigkeit der Speicherverwaltung beeinträchtigt werden können.}
\subsection{Contiguous Memory Allocator} \subsection{Contiguous Memory Allocator}
CONFIG\_CMA [=y] \textbf{[Y]}\\ CONFIG\_CMA [=y] \textbf{[Y]}\\
Dadurch wird der Contiguous Memory Allocator aktiviert, der es anderen Subsystemen ermöglicht, große, physisch Dadurch wird der Contiguous Memory Allocator aktiviert, der es anderen Subsystemen ermöglicht, große, physisch zusammenhängende Speicherblöcke zuzuweisen.
zusammenhängende Speicherblöcke zuzuweisen. CMA reserviert einen Speicherbereich und erlaubt nur die Zuweisung CMA reserviert einen Speicherbereich und erlaubt nur die Zuweisung beweglicher Seiten aus diesem Bereich.
beweglicher Seiten aus diesem Bereich. Auf diese Weise kann der Kernel den Speicher als Pagecache verwenden, Auf diese Weise kann der Kernel den Speicher als Pagecache verwenden, und wenn ein Subsystem einen zusammenhängenden Bereich anfordert, werden die zugewiesenen Seiten verschoben, um die zusammenhängende Anforderung zu bedienen.
und wenn ein Subsystem einen zusammenhängenden Bereich anfordert, werden die zugewiesenen Seiten verschoben, Wenn Sie unsicher sind, sagen Sie N für nein.
um die zusammenhängende Anforderung zu bedienen. Wenn Sie unsicher sind, sagen Sie N für nein.
\english{This enables the Contiguous Memory Allocator which allows other subsystems to allocate big physically-contiguous blocks of memory. \english{This enables the Contiguous Memory Allocator which allows other subsystems to allocate big physically-contiguous blocks of memory.
CMA reserves a region of memory and allows only movable pages to be allocated from it. CMA reserves a region of memory and allows only movable pages to be allocated from it.
This way, the kernel can use the memory for pagecache and when a subsystem requests for contiguous area, This way, the kernel can use the memory for pagecache and when a subsystem requests for contiguous area, the allocated pages are migrated away to serve the contiguous request.\\
the allocated pages are migrated away to serve the contiguous request.\\
If unsure, say ``n''.} If unsure, say ``n''.}
{\color{gray} {\color{gray}
\subsubsection*{CMA debug messages (DEVELOPMENT) \tiny{bis 6.8}} \subsubsection*{CMA debug messages (DEVELOPMENT) \tiny{bis 6.8}}
CONFIG\_CMA\_DEBUG [=n] \textbf{[N]}\\ CONFIG\_CMA\_DEBUG [=n] \textbf{[N]}\\
Schaltet Debug-Meldungen in CMA ein. Dies erzeugt KERN\_DEBUG-Meldungen für jeden CMA-Aufruf sowie verschiedene Schaltet Debug-Meldungen in CMA ein.
Meldungen während der Verarbeitung von Aufrufen wie dma\_alloc\_from\_contiguous(). Diese Option hat keinen Dies erzeugt KERN\_DEBUG-Meldungen für jeden CMA-Aufruf sowie verschiedene Meldungen während der Verarbeitung von Aufrufen wie dma\_alloc\_from\_contiguous().
Einfluss auf Warn- und Fehlermeldungen. Diese Option hat keinen Einfluss auf Warn- und Fehlermeldungen.
\english{Turns on debug messages in CMA. \english{Turns on debug messages in CMA.
This produces KERN\_DEBUG messages for every CMA call as well as various messages while processing calls such as dma\_alloc\_from\_contiguous(). This produces KERN\_DEBUG messages for every CMA call as well as various messages while processing calls such as dma\_alloc\_from\_contiguous().
This option does not affect warning and error messages.}} This option does not affect warning and error messages.}}
@@ -597,77 +533,94 @@ Diese Option legt einige sysfs-Attribute offen, um Informationen von CMA zu erha
\english{This option exposes some sysfs attributes to get information from CMA.} \english{This option exposes some sysfs attributes to get information from CMA.}
\subsubsection{Maximum count of the CMA areas} \subsubsection{Maximum count of the CMA areas}
CONFIG\_CMA\_AREAS [=7] \textbf{[7]}\\ CONFIG\_CMA\_AREAS \colorbox{yellow!80}{[=7] \textbf{[8]}}\\
CMA ermöglicht es, CMA-Bereiche für bestimmte Zwecke zu erstellen, die hauptsächlich als privater Bereich des CMA ermöglicht es, CMA-Bereiche für bestimmte Zwecke zu erstellen, die hauptsächlich als privater Bereich des Geräts verwendet werden.
Geräts verwendet werden. Mit diesem Parameter wird die maximale Anzahl von CMA-Bereichen im System festgelegt. Mit diesem Parameter wird die maximale Anzahl von CMA-Bereichen im System festgelegt.
Wenn Sie unsicher sind, belassen Sie den Standardwert \glqq 7\grqq{} bei UMA und Wenn Sie unsicher sind, belassen Sie den Standardwert \glqq 8\grqq{} bei UMA und \glqq 20\grqq{} bei NUMA.
\glqq 19\grqq{} bei NUMA.
\english{CMA allows to create CMA areas for particular purpose, mainly, used as device private area. \english{CMA allows to create CMA areas for particular purpose, mainly, used as device private area.
This parameter sets the maximum number of CMA area in the system.\\ This parameter sets the maximum number of CMA area in the system.\\
If unsure, leave the default value ``8'' in UMA and ``20'' in NUMA.} If unsure, leave the default value ``8'' in UMA and ``20'' in NUMA.}
\note{Set to default value of 8.}
%13.18
\subsection{Page Block Order \tiny{seit 6.16}}
CONFIG\_PAGE\_BLOCK\_ORDER [=10] \textbf{[10]}\\*
Die Seitenblockreihenfolge bezieht sich auf die Zweierpotenz der Anzahl physisch zusammenhängender Seiten, denen ein Migrationstyp zugeordnet werden kann.
Die maximale Größe der Seitenblockreihenfolge wird durch ARCH\_FORCE\_MAX\_ORDER begrenzt.
Diese Konfiguration ermöglicht es, die Standard-Seitenblockreihenfolge zu überschreiben, wenn die Seitenblockreihenfolge kleiner als ARCH\_FORCE\_MAX\_ORDER oder MAX\_PAGE\_ORDER sein muss.
Eine Verringerung der Seitenblockreihenfolge kann sich negativ auf die Erfolgsrate der THP-Generierung auswirken.
Wenn Ihre Workloads THP intensiv nutzen, verwenden Sie diese Option bitte mit Vorsicht.
Ändern Sie sie nicht, wenn Sie sich nicht sicher sind.
\english{The page block order refers to the power of two number of pages that are physically contiguous and can have a migrate type associated to them.
The maximum size of the page block order is limited by ARCH\_FORCE\_MAX\_ORDER.
This config allows overriding the default page block order when the page block order is required to be smaller than ARCH\_FORCE\_MAX\_ORDER or MAX\_PAGE\_ORDER.
Reducing pageblock order can negatively impact THP generation success rate.
If your workloads uses THP heavily, please use this option with caution.
Don't change if unsure.}
%13.19
\subsection{Track memory changes} \subsection{Track memory changes}
CONFIG\_MEM\_SOFT\_DIRTY [=y] \textbf{[Y]}\\ CONFIG\_MEM\_SOFT\_DIRTY [=y] \textbf{[Y]}\\
Diese Option ermöglicht die Verfolgung von Speicheränderungen durch Einführung eines Soft-Dirty-Bits auf Diese Option ermöglicht die Verfolgung von Speicheränderungen durch Einführung eines Soft-Dirty-Bits auf pte-s.
pte-s. Dieses Bit wird gesetzt, wenn jemand in eine Seite schreibt, genau wie das reguläre Dirty Bit, aber Dieses Bit wird gesetzt, wenn jemand in eine Seite schreibt, genau wie das reguläre Dirty Bit, aber im Gegensatz zu letzterem kann es von Hand gelöscht werden.
im Gegensatz zu letzterem kann es von Hand gelöscht werden. Siehe Documentation/admin-guide/mm/soft-dirty.rst Siehe Documentation/admin-guide/mm/soft-dirty.rst für weitere Details.
für weitere Details.
\english{This option enables memory changes tracking by introducing a soft-dirty bit on pte-s. \english{This option enables memory changes tracking by introducing a soft-dirty bit on pte-s.
This bit it set when someone writes into a page just as regular dirty bit, but unlike the latter it can be cleared by hands.\\ This bit it set when someone writes into a page just as regular dirty bit, but unlike the latter it can be cleared by hands.\\
See Documentation/admin-guide/mm/soft-dirty.rst for more details.} See Documentation/admin-guide/mm/soft-dirty.rst for more details.}
%13.20
\subsection{Defer initialisation of struct pages to kthreads} \subsection{Defer initialisation of struct pages to kthreads}
CONFIG\_DEFERRED\_STRUCT\_PAGE\_INIT [=n] \textbf{[N]}\\ CONFIG\_DEFERRED\_STRUCT\_PAGE\_INIT [=n] \textbf{[N]}\\
Normalerweise werden alle Strukturseiten beim Frühstart in einem einzigen Thread initialisiert. Auf sehr Normalerweise werden alle Strukturseiten beim Frühstart in einem einzigen Thread initialisiert.
großen Rechnern kann dies sehr viel Zeit in Anspruch nehmen. Wenn diese Option gesetzt ist, wird bei großen Auf sehr großen Rechnern kann dies sehr viel Zeit in Anspruch nehmen.
Maschinen eine Teilmenge der memmap beim Booten aufgerufen und der Rest parallel initialisiert. Dies kann Wenn diese Option gesetzt ist, wird bei großen Maschinen eine Teilmenge der memmap beim Booten aufgerufen und der Rest parallel initialisiert.
sich auf die Leistung von Aufgaben auswirken, die zu Beginn der Lebensdauer des Systems ausgeführt werden, Dies kann sich auf die Leistung von Aufgaben auswirken, die zu Beginn der Lebensdauer des Systems ausgeführt werden, bis diese kthreads die Initialisierung abgeschlossen haben.
bis diese kthreads die Initialisierung abgeschlossen haben.
\english{Ordinarily all struct pages are initialised during early boot in a single thread. \english{Ordinarily all struct pages are initialised during early boot in a single thread.
On very large machines this can take a considerable amount of time. On very large machines this can take a considerable amount of time.
If this option is set, large machines will bring up a subset of memmap at boot and then initialise the rest in parallel. If this option is set, large machines will bring up a subset of memmap at boot and then initialise the rest in parallel.
This has a potential performance impact on tasks running early in the lifetime of the system until these kthreads finish the initialisation.} This has a potential performance impact on tasks running early in the lifetime of the system until these kthreads finish the initialisation.}
%13.21
\subsection{Enable idle page tracking} \subsection{Enable idle page tracking}
CONFIG\_IDLE\_PAGE\_TRACKING [=y] \textbf{[Y]}\\ CONFIG\_IDLE\_PAGE\_TRACKING [=y] \textbf{[Y]}\\
Diese Funktion ermöglicht es, die Anzahl der Benutzerseiten zu schätzen, die in einem bestimmten Zeitraum Diese Funktion ermöglicht es, die Anzahl der Benutzerseiten zu schätzen, die in einem bestimmten Zeitraum nicht berührt wurden.
nicht berührt wurden. Diese Information kann nützlich sein, um die Grenzen der Speichergruppen und/oder die Diese Information kann nützlich sein, um die Grenzen der Speichergruppen und/oder die Platzierung von Aufträgen innerhalb eines Rechenclusters zu optimieren.\\
Platzierung von Aufträgen innerhalb eines Rechenclusters zu optimieren.\\
Siehe Documentation/admin-guide/mm/idle\_page\_tracking.rst für weitere Einzelheiten. Siehe Documentation/admin-guide/mm/idle\_page\_tracking.rst für weitere Einzelheiten.
\english{This feature allows to estimate the amount of user pages that have not been touched during a given period of time. \english{This feature allows to estimate the amount of user pages that have not been touched during a given period of time.
This information can be useful to tune memory cgroup limits and/or for job placement within a compute cluster.\\ This information can be useful to tune memory cgroup limits and/or for job placement within a compute cluster.\\
See Documentation/admin-guide/mm/idle\_page\_tracking.rst for more details.} See Documentation/admin-guide/mm/idle\_page\_tracking.rst for more details.}
%13.22
\subsection{Support DMA zone} \subsection{Support DMA zone}
CONFIG\_ZONE\_DMA [=y] \textbf{[Y]}\\* CONFIG\_ZONE\_DMA [=y] \textbf{[Y]}\\*
\textit{Für diese Option gibt es keine Hilfe.} \textit{Für diese Option gibt es keine Hilfe.}
\english{There is no help available for this option.} \english{There is no help available for this option.}
%13.23
\subsection{Support DMA32 zone} \subsection{Support DMA32 zone}
CONFIG\_ZONE\_DMA32 [=y] \textbf{[Y]}\\* CONFIG\_ZONE\_DMA32 [=y] \textbf{[Y]}\\*
\textit{Für diese Option gibt es keine Hilfe.} \textit{Für diese Option gibt es keine Hilfe.}
\english{There is no help available for this option.} \english{There is no help available for this option.}
%13.24
\subsection{Device memory (pmem, HMM, etc\dots) hotplug support} \subsection{Device memory (pmem, HMM, etc\dots) hotplug support}
CONFIG\_ZONE\_DEVICE [=y] \textbf{[Y]}\\ CONFIG\_ZONE\_DEVICE [=y] \textbf{[Y]}\\
Die Hotplug-Unterstützung für Gerätespeicher ermöglicht es, pmem oder andere vom Gerätetreiber entdeckte Die Hotplug-Unterstützung für Gerätespeicher ermöglicht es, pmem oder andere vom Gerätetreiber entdeckte Speicherregionen in der Memmap zu etablieren.
Speicherregionen in der Memmap zu etablieren. Dies ermöglicht pfn\_to\_page()-Lookups von ansonsten Dies ermöglicht pfn\_to\_page()-Lookups von ansonsten \glqq gerätephysikalischen\grqq{} Adressen, was unter anderem für die Verwendung einer DAX-Zuordnung in einer O\_DIRECT-Operation erforderlich ist.
\glqq gerätephysikalischen\grqq{} Adressen, was unter anderem für die Verwendung einer DAX-Zuordnung Wenn FS\_DAX aktiviert ist, dann sagen Sie Y.
in einer O\_DIRECT-Operation erforderlich ist. Wenn FS\_DAX aktiviert ist, dann sagen Sie Y.
\english{Device memory hotplug support allows for establishing pmem, or other device driver discovered memory regions, in the memmap. \english{Device memory hotplug support allows for establishing pmem, or other device driver discovered memory regions, in the memmap.
This allows pfn\_to\_page() lookups of otherwise ``device-physical'' addresses which is needed for using a DAX mapping in an This allows pfn\_to\_page() lookups of otherwise ``device-physical'' addresses which is needed for using a DAX mapping in an O\_DIRECT operation, among other things.\\
O\_DIRECT operation, among other things.\\
If FS\_DAX is enabled, then say Y.} If FS\_DAX is enabled, then say Y.}
%13.25
\subsection{Unaddressable device memory (GPU memory, \dots)} \subsection{Unaddressable device memory (GPU memory, \dots)}
CONFIG\_DEVICE\_PRIVATE [=y] \textbf{[Y]}\\ CONFIG\_DEVICE\_PRIVATE [=y] \textbf{[Y]}\\
Ermöglicht die Erstellung von Strukturseiten zur Darstellung von nicht adressierbarem Gerätespeicher, Ermöglicht die Erstellung von Strukturseiten zur Darstellung von nicht adressierbarem Gerätespeicher, d.\,h. Speicher, auf den nur vom Gerät (oder einer Gruppe von Geräten) aus zugegriffen werden kann.
d.\,h. Speicher, auf den nur vom Gerät (oder einer Gruppe von Geräten) aus zugegriffen werden kann.
Wahrscheinlich sollten Sie auch HMM\_MIRROR auswählen. Wahrscheinlich sollten Sie auch HMM\_MIRROR auswählen.
\english{Allows creation of struct pages to represent unaddressable device memory; \english{Allows creation of struct pages to represent unaddressable device memory; i.e., memory that is only accessible from the device (or group of devices).
i.e., memory that is only accessible from the device (or group of devices).
You likely also want to select HMM\_MIRROR.} You likely also want to select HMM\_MIRROR.}
%13.26
\subsection{Enable VM event counters for /proc/vmstat} \subsection{Enable VM event counters for /proc/vmstat}
CONFIG\_VM\_EVENT\_COUNTERS [=y] \textbf{[Y]}\\ CONFIG\_VM\_EVENT\_COUNTERS [=y] \textbf{[Y]}\\
VM-Ereigniszähler werden für die Anzeige von Ereigniszählungen benötigt. VM-Ereigniszähler werden für die Anzeige von Ereigniszählungen benötigt.
@@ -677,82 +630,73 @@ Diese Option ermöglicht die Deaktivierung der VM-Ereigniszähler auf EXPERT-Sys
This option allows the disabling of the VM event counters on EXPERT systems. This option allows the disabling of the VM event counters on EXPERT systems.
/proc/vmstat will only show page counts if VM event counters are disabled.} /proc/vmstat will only show page counts if VM event counters are disabled.}
%13.27
\subsection{Collect percpu memory statistics} \subsection{Collect percpu memory statistics}
CONFIG\_PERCPU\_STATS [=n] \textbf{[N]}\\ CONFIG\_PERCPU\_STATS [=n] \textbf{[N]}\\
Diese Funktion sammelt Statistiken und stellt sie über debugfs zur Verfügung. Die Informationen umfassen Diese Funktion sammelt Statistiken und stellt sie über debugfs zur Verfügung.
globale und pro Chunk-Statistiken, die dazu beitragen können, die Speichernutzung der CPU zu verstehen. Die Informationen umfassen globale und pro Chunk-Statistiken, die dazu beitragen können, die Speichernutzung der CPU zu verstehen.
\english{This feature collects and exposes statistics via debugfs. \english{This feature collects and exposes statistics via debugfs.
The information includes global and per chunk statistics, which can be used to help understand percpu memory usage.} The information includes global and per chunk statistics, which can be used to help understand percpu memory usage.}
%13.28
\subsection{Enable infrastructure for get\_user\_pages()-related unit tests} \subsection{Enable infrastructure for get\_user\_pages()-related unit tests}
CONFIG\_GUP\_TEST [=n] \textbf{[N]}\\ CONFIG\_GUP\_TEST [=n] \textbf{[N]}\\
Stellt \texttt{/sys/kernel/debug/gup\_test} zur Verfügung, das wiederum eine Möglichkeit bietet, ioctl-Aufrufe zu Stellt \texttt{/sys/kernel/debug/gup\_test} zur Verfügung, das wiederum eine Möglichkeit bietet, ioctl-Aufrufe zu machen, die kernelbasierte Unit-Tests für die get\_user\_pages*()- und pin\_user\_pages*()-Familie von API-Aufrufen starten können.
machen, die kernelbasierte Unit-Tests für die get\_user\_pages*()- und pin\_user\_pages*()-Familie von Diese Tests umfassen Benchmark-Tests für die schnellen Varianten von get\_user\_pages*() und pin\_user\_pages*() sowie Smoke-Tests für die nicht schnellen Varianten.
API-Aufrufen starten können. Diese Tests umfassen Benchmark-Tests für die schnellen Varianten von Es gibt auch einen Untertest, der die Ausführung von dump\_page() auf bis zu acht Seiten (ausgewählt durch Befehlszeilen-Args) innerhalb des Bereichs der User-Space-Adressen ermöglicht.
get\_user\_pages*() und pin\_user\_pages*() sowie Smoke-Tests für die nicht schnellen Varianten. Diese Seiten werden entweder über pin\_user\_pages*() oder über get\_user\_pages*() angeheftet, wie durch andere Befehlszeilenargumente angegeben.\\
Es gibt auch einen Untertest, der die Ausführung von dump\_page() auf bis zu acht Seiten
(ausgewählt durch Befehlszeilen-Args) innerhalb des Bereichs der User-Space-Adressen ermöglicht.
Diese Seiten werden entweder über pin\_user\_pages*() oder über get\_user\_pages*() angeheftet, wie durch
andere Befehlszeilenargumente angegeben.\\
Siehe \texttt{tools/testing/selftests/mm/gup\_test.c} Siehe \texttt{tools/testing/selftests/mm/gup\_test.c}
\english{Provides /sys/kernel/debug/gup\_test, which in turn provides a way to make ioctl calls that \english{Provides /sys/kernel/debug/gup\_test, which in turn provides a way to make ioctl calls that can launch kernel-based unit tests for the get\_user\_pages*() and pin\_user\_pages*() family of API calls.\\
can launch kernel-based unit tests for the get\_user\_pages*() and pin\_user\_pages*() family of API calls.\\ These tests include benchmark testing of the \_fast variants of get\_user\_pages*() and pin\_user\_pages*(), as well as smoke tests of the non-\_fast variants.\\
These tests include benchmark testing of the \_fast variants of get\_user\_pages*() and pin\_user\_pages*(), There is also a sub-test that allows running dump\_page() on any of up to eight pages (selected by command line args) within the range of user-space addresses.
as well as smoke tests of the non-\_fast variants.\\ These pages are either pinned via pin\_user\_pages*(), or pinned via get\_user\_pages*(), as specified by other command line arguments.\\
There is also a sub-test that allows running dump\_page() on any of up to eight pages (selected by command line args)
within the range of user-space addresses. These pages are either pinned via pin\_user\_pages*(), or pinned
via get\_user\_pages*(), as specified by other command line arguments.\\
See tools/testing/selftests/mm/gup\_test.c} See tools/testing/selftests/mm/gup\_test.c}
%13.29
\subsection{Enable a module to run time tests on dma\_pool} \subsection{Enable a module to run time tests on dma\_pool}
CONFIG\_DMAPOOL\_TEST [=n] \textbf{[N]}\\ CONFIG\_DMAPOOL\_TEST [=n] \textbf{[N]}\\
Stellt ein Testmodul zur Verfügung, das viele Blöcke unterschiedlicher Größe alloziert und freigibt und Stellt ein Testmodul zur Verfügung, das viele Blöcke unterschiedlicher Größe alloziert und freigibt und berichtet, wie lange es dauert.
berichtet, wie lange es dauert. Damit soll ein konsistenter Weg gefunden werden, um zu messen, wie sich Damit soll ein konsistenter Weg gefunden werden, um zu messen, wie sich Änderungen an den dma\_pool\_alloc/free-Routinen auf die Leistung auswirken.
Änderungen an den dma\_pool\_alloc/free-Routinen auf die Leistung auswirken.
\english{Provides a test module that will allocate and free many blocks of various sizes and report how long it takes. \english{Provides a test module that will allocate and free many blocks of various sizes and report how long it takes.
This is intended to provide a consistent way to measure how changes to the dma\_pool\_alloc/free routines affect performance.} This is intended to provide a consistent way to measure how changes to the dma\_pool\_alloc/free routines affect performance.}
%13.30
\subsection{Enable memfd\_create() system call} \subsection{Enable memfd\_create() system call}
CONFIG\_MEMFD\_CREATE [=y] \textbf{[Y]}\\* CONFIG\_MEMFD\_CREATE [=y] \textbf{[Y]}\\*
\textit{Für diese Option gibt es keine Hilfe.} \textit{Für diese Option gibt es keine Hilfe.}
\english{There is no help available for this option.} \english{There is no help available for this option.}
%13.31
\subsection{Enable memfd\_secret() system call} \subsection{Enable memfd\_secret() system call}
CONFIG\_SECRETMEM [=y] \textbf{[Y]}\\* CONFIG\_SECRETMEM [=y] \textbf{[Y]}\\*
Aktivieren Sie den Systemaufruf memfd\_secret() mit der Möglichkeit, Speicherbereiche zu erstellen, die nur im Kontext des Aktivieren Sie den Systemaufruf memfd\_secret() mit der Möglichkeit, Speicherbereiche zu erstellen, die nur im Kontext des besitzenden Prozesses sichtbar sind und nicht auf andere Prozesse und andere Kernel-Seitentabellen abgebildet werden.
besitzenden Prozesses sichtbar sind und nicht auf andere Prozesse und andere Kernel-Seitentabellen abgebildet werden. \english{Enable the memfd\_secret() system call with the ability to create memory areas visible only in the context of the owning process and not mapped to other processes and other kernel page tables.}
\english{Enable the memfd\_secret() system call with the ability to create memory areas visible only in the context
of the owning process and not mapped to other processes and other kernel page tables.}
%13.32
\subsection{Anonymous VMS name support} \subsection{Anonymous VMS name support}
CONFIG\_ANON\_VMA\_NAME [=y] \textbf{[Y]}\\ CONFIG\_ANON\_VMA\_NAME [=y] \textbf{[Y]}\\
Erlaubt die Benennung anonymer virtueller Speicherbereiche. Mit dieser Funktion können virtuellen Erlaubt die Benennung anonymer virtueller Speicherbereiche. Mit dieser Funktion können virtuellen Speicherbereichen Namen zugewiesen werden.\\
Speicherbereichen Namen zugewiesen werden.\\ Die zugewiesenen Namen können später aus \texttt{/proc/pid/maps} und \texttt{/proc/pid/smaps} abgerufen werden und helfen bei der Identifizierung einzelner anonymer Speicherbereiche.
Die zugewiesenen Namen können später aus /proc/pid/maps und Die Zuweisung eines Namens für einen anonymen virtuellen Speicherbereich kann verhindern, dass dieser Bereich aufgrund des unterschiedlichen Namens mit benachbarten virtuellen Speicherbereichen zusammengelegt wird.
/proc/pid/smaps abgerufen werden und helfen bei der Identifizierung einzelner anonymer Speicherbereiche.
Die Zuweisung eines Namens für einen anonymen virtuellen Speicherbereich kann verhindern, dass dieser
Bereich aufgrund des unterschiedlichen Namens mit benachbarten virtuellen Speicherbereichen zusammengelegt
wird.
\english{Allow naming anonymous virtual memory areas.\\ \english{Allow naming anonymous virtual memory areas.\\
This feature allows assigning names to virtual memory areas. This feature allows assigning names to virtual memory areas.
Assigned names can be later retrieved from /proc/pid/maps and /proc/pid/smaps and help identifying individual anonymous memory areas. Assigned names can be later retrieved from /proc/pid/maps and /proc/pid/smaps and help identifying individual anonymous memory areas.
Assigning a name to anonymous virtual memory area might prevent that area from being merged with adjacent virtual memory areas Assigning a name to anonymous virtual memory area might prevent that area from being merged with adjacent virtual memory areas due to the difference in their name.}
due to the difference in their name.}
%13.33
\subsection{Enable userfaultfd() system call \texorpdfstring{$\rightarrow$}{->}} \subsection{Enable userfaultfd() system call \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_USERFAULTFD [=y] \textbf{[Y]}\\ CONFIG\_USERFAULTFD [=y] \textbf{[Y]}\\
Aktivieren Sie den Systemaufruf userfaultfd(), der das Abfangen und Behandeln von Seitenfehlern im Aktivieren Sie den Systemaufruf \texttt{userfaultfd()}, der das Abfangen und Behandeln von Seitenfehlern im Userland ermöglicht.
Userland ermöglicht.
\english{Enable the userfaultfd() system call that allows to intercept and handle page faults in userland.} \english{Enable the userfaultfd() system call that allows to intercept and handle page faults in userland.}
\subsubsection{Userfaultfd write protection support for shmem/hugetlbfs} \subsubsection{Userfaultfd write protection support for shmem/hugetlbfs}
CONFIG\_PTE\_MARKER\_UFFD\_WP [=y] \textbf{[Y]}\\ CONFIG\_PTE\_MARKER\_UFFD\_WP [=y] \textbf{[Y]}\\
Ermöglicht die Erstellung von Marker-PTEs für den Userfaultfd-Schreibschutz. Ermöglicht die Erstellung von Marker-PTEs für den Userfaultfd-Schreibschutz.
Sie ist erforderlich, um den userfaultfd-Schreibschutz für dateigebundene Speichertypen wie shmem Sie ist erforderlich, um den userfaultfd-Schreibschutz für dateigebundene Speichertypen wie \texttt{shmem} und \texttt{hugetlbfs} zu aktivieren.
und hugetlbfs zu aktivieren.
\english{Allows to create marker PTEs for userfaultfd write protection purposes. \english{Allows to create marker PTEs for userfaultfd write protection purposes.
It is required to enable userfaultfd write protection on file-backed memory types like shmem and hugetlbfs.} It is required to enable userfaultfd write protection on file-backed memory types like shmem and hugetlbfs.}
%13.34
\subsection{Multi-Gen LRU} \subsection{Multi-Gen LRU}
CONFIG\_LRU\_GEN [=y] \textbf{[Y]}\\ CONFIG\_LRU\_GEN [=y] \textbf{[Y]}\\
Eine hochleistungsfähige LRU-Implementierung zur Überbelegung von Speicher.\\ Eine hochleistungsfähige LRU-Implementierung zur Überbelegung von Speicher.\\
@@ -773,7 +717,7 @@ Diese Option hat einen Speicher-Overhead pro memcg und pro Knoten.
\english{Do not enable this option unless you plan to look at historical stats from evicted generations for debugging purpose.\\ \english{Do not enable this option unless you plan to look at historical stats from evicted generations for debugging purpose.\\
This option has a per-memcg and per-node memory overhead.} This option has a per-memcg and per-node memory overhead.}
%13.34 NUMA emulation %13.35 NUMA emulation
% this moved from linux_configuration_03_processor_type_and_features to here: % this moved from linux_configuration_03_processor_type_and_features to here:
\subsection{NUMA emulation} \subsection{NUMA emulation}
CONFIG\_NUMA\_EMU [=n] \textbf{[N]}\\ CONFIG\_NUMA\_EMU [=n] \textbf{[N]}\\
@@ -784,75 +728,71 @@ Dies ist nur für die Fehlersuche nützlich.
A flat machine will be split into virtual nodes when booted with "numa=fake=N", where N is the number of nodes. A flat machine will be split into virtual nodes when booted with "numa=fake=N", where N is the number of nodes.
This is only useful for debugging.} This is only useful for debugging.}
%13.27 %13.36 reclaim empty user page table pages
\subsection{reclaim empty user page table pages} \subsection{reclaim empty user page table pages}
CONFIG\_PT\_RECLAIM [=y] \textbf{[Y]}\\ CONFIG\_PT\_RECLAIM [=y] \textbf{[Y]}\\
Versuchen Sie, leere Benutzerseitentabellen-Seiten in anderen Pfaden als \texttt{munmap} und \texttt{exit\_mmap} Versuchen Sie, leere Benutzerseitentabellen-Seiten in anderen Pfaden als \texttt{munmap} und \texttt{exit\_mmap} zurückzugewinnen.\\
zurück\-zu\-gewinnen.\\ Hinweis: Jetzt werden nur noch leere Benutzer-PTE"=Seitentabellen"=Seiten zurückverlangt.
Hinweis: Jetzt werden nur noch leere Benutzer-PTE-Seitentabellen-Seiten zurückverlangt.
\english{Try to reclaim empty user page table pages in paths other than munmap and exit\_mmap path.\\ \english{Try to reclaim empty user page table pages in paths other than munmap and exit\_mmap path.\\
Note: now only empty user PTE page table pages will be reclaimed.} Note: now only empty user PTE page table pages will be reclaimed.}
%13.28 %13.37
\subsection{Data Access Monitoring \texorpdfstring{$\rightarrow$}{->}} \subsection{Data Access Monitoring \texorpdfstring{$\rightarrow$}{->}}
\textit{Überwachung des Datenzugriffs} \textit{Überwachung des Datenzugriffs}
\subsubsection{DAMON: Data Access Monitoring Framework} \subsubsection{DAMON: Data Access Monitoring Framework}
CONFIG\_DAMON [=y] \textbf{[Y]}\\ CONFIG\_DAMON [=y] \textbf{[Y]}\\
Damit wird ein Rahmen geschaffen, der es den Kernel-Subsystemen ermöglicht, die Zugriffshäufigkeit der Damit wird ein Rahmen geschaffen, der es den Kernel-Subsystemen ermöglicht, die Zugriffshäufigkeit der einzelnen Speicherbereiche zu überwachen.
einzelnen Speicherbereiche zu überwachen. Diese Informationen können für eine leistungsorientierte Diese Informationen können für eine leistungsorientierte Speicherverwaltung auf DRAM-Ebene nützlich sein.
Speicherverwaltung auf DRAM-Ebene nützlich sein. Weitere Informationen finden Sie unter\\\url{https://damonitor.github.io/doc/html/latest-damon/index.html}.
Weitere Informationen finden Sie unter\\
\url{https://damonitor.github.io/doc/html/latest-damon/index.html}.
\english{This builds a framework that allows kernel subsystems to monitor access frequency of each memory region. \english{This builds a framework that allows kernel subsystems to monitor access frequency of each memory region.
The information can be useful for performance-centric DRAM level memory management.\\ The information can be useful for performance-centric DRAM level memory management.\\
See \url{https://www.kernel.org/doc/html/latest/mm/damon/index.html} for more information.} See \url{https://www.kernel.org/doc/html/latest/mm/damon/index.html} for more information.}
\paragraph{Data access monitoring operations for virtual address spaces}$~$\\ \paragraph{Data access monitoring operations for virtual address spaces}$~$\\
CONFIG\_DAMON\_VADDR [=y] \textbf{[Y]}\\ CONFIG\_DAMON\_VADDR [=y] \textbf{[Y]}\\
Damit werden die Standardoperationen zur Überwachung des Datenzugriffs für DAMON erstellt, die Damit werden die Standardoperationen zur Überwachung des Datenzugriffs für DAMON erstellt, die für virtuelle Adressräume funktionieren.
für virtuelle Adressräume funktionieren.
\english{This builds the default data access monitoring operations for DAMON that work for virtual address spaces.} \english{This builds the default data access monitoring operations for DAMON that work for virtual address spaces.}
\paragraph{Data access monitoring operations for the physical address space}$~$\\ \paragraph{Data access monitoring operations for the physical address space}$~$\\
CONFIG\_DAMON\_PADDR [=y] \textbf{[Y]}\\ CONFIG\_DAMON\_PADDR [=y] \textbf{[Y]}\\
Damit werden die Standardvorgänge zur Datenzugriffsüberwachung für DAMON erstellt, Damit werden die Standardvorgänge zur Datenzugriffsüberwachung für DAMON erstellt, die für den physischen Adressraum funktionieren.
die für den physischen Adressraum funktionieren.
\english{This builds the default data access monitoring operations for DAMON that works for the physical address space.} \english{This builds the default data access monitoring operations for DAMON that works for the physical address space.}
\subsubsection{DAMON sysfs interface} \subsubsection{DAMON sysfs interface}
CONFIG\_DAMON\_SYSFS [=y] \textbf{[Y]}\\ CONFIG\_DAMON\_SYSFS [=y] \textbf{[Y]}\\
Dies bildet die sysfs-Schnittstelle für DAMON. Der Benutzerbereich kann die Schnittstelle für Dies bildet die sysfs-Schnittstelle für DAMON.
die Überwachung beliebiger Datenzugriffe verwenden. Der Benutzerbereich kann die Schnittstelle für die Überwachung beliebiger Datenzugriffe verwenden.
\english{This builds the sysfs interface for DAMON. \english{This builds the sysfs interface for DAMON.
The user space can use the interface for arbitrary data access monitoring.} The user space can use the interface for arbitrary data access monitoring.}
{\color{gray} {\color{gray}
\subsubsection*{DAMON debugfs interface (DEPRECATED!)} \subsubsection*{DAMON debugfs interface (DEPRECATED!)}
CONFIG\_DAMON\_DBGFS [=y] \textbf{[N]}\\ CONFIG\_DAMON\_DBGFS [=y] \textbf{[N]}\\
Damit wird die debugfs-Schnittstelle für DAMON erstellt. Die Benutzerraum-Administratoren können Damit wird die debugfs-Schnittstelle für DAMON erstellt.
die Schnittstelle für die Überwachung beliebiger Datenzugriffe verwenden. Wenn Sie unsicher sind, Die Benutzerraum-Administratoren können die Schnittstelle für die Überwachung beliebiger Datenzugriffe verwenden.
sagen Sie N.\\ Wenn Sie unsicher sind, sagen Sie N.\\
Dies ist veraltet, daher sollten Benutzer auf die sysfs-Schnittstelle (DAMON\_SYSFS) umsteigen. Dies ist veraltet, daher sollten Benutzer auf die sysfs-Schnittstelle (DAMON\_SYSFS) umsteigen.
Wenn Sie auf diese Schnittstelle angewiesen sind und nicht umsteigen können, melden Sie bitte Wenn Sie auf diese Schnittstelle angewiesen sind und nicht umsteigen können, melden Sie bitte Ihren Anwendungsfall an damon@lists.linux.dev und linux-mm@kvack.org.
Ihren Anwendungsfall an damon@lists.linux.dev und linux-mm@kvack.org. \english{This builds the debugfs interface for DAMON.
The user space admins can use the interface for arbitrary data access monitoring.
If unsure, say N.
This is deprecated, so users should move to the sysfs interface (DAMON\_SYSFS).
If you depend on this and cannot move, please report your usecase to damon@lists.linux.dev and linux-mm@kvack.org.}
} }
\subsubsection{Build DAMON-based reclaim (DAMON\_RECLAIM)} \subsubsection{Build DAMON-based reclaim (DAMON\_RECLAIM)}
CONFIG\_DAMON\_RECLAIM [=y] \textbf{[Y]}\\ CONFIG\_DAMON\_RECLAIM [=y] \textbf{[Y]}\\
Damit wird das DAMON-basierte Reklamationssubsystem aufgebaut. Es findet Seiten, auf die lange Damit wird das DAMON-basierte Reklamationssubsystem aufgebaut.
Zeit nicht mehr mit DAMON zugegriffen wurde (Cold) und fordert diese zurück. Dies wird als Es findet Seiten, auf die lange Zeit nicht mehr mit DAMON zugegriffen wurde (Cold) und fordert diese zurück.
proaktive und leichtgewichtige Rückgewinnung bei geringem Speicherdruck vorgeschlagen, während Dies wird als proaktive und leichtgewichtige Rückgewinnung bei geringem Speicherdruck vorgeschlagen, während die traditionelle, auf Seitenscans basierende Rückgewinnung bei hohem Druck verwendet wird.
die traditionelle, auf Seitenscans basierende Rückgewinnung bei hohem Druck verwendet wird.
\english{This builds the DAMON-based reclamation subsystem. \english{This builds the DAMON-based reclamation subsystem.
It finds pages that not accessed for a long time (cold) using DAMON and reclaim those.\\ It finds pages that not accessed for a long time (cold) using DAMON and reclaim those.\\
This is suggested to be used as a proactive and lightweight reclamation under light memory pressure, This is suggested to be used as a proactive and lightweight reclamation under light memory pressure, while the traditional page scanning-based reclamation is used for heavy pressure.}
while the traditional page scanning-based reclamation is used for heavy pressure.}
\subsubsection{Build DAMON-based LRU-lists sorting (DAMON\_LRU\_SORT)} \subsubsection{Build DAMON-based LRU-lists sorting (DAMON\_LRU\_SORT)}
CONFIG\_DAMON\_LRU\_SORT [=y] \textbf{[Y]}\\ CONFIG\_DAMON\_LRU\_SORT [=y] \textbf{[Y]}\\
Damit wird das DAMON-basierte LRU-Listensortier-Subsystem aufgebaut. Es versucht, häufig Damit wird das DAMON-basierte LRU-Listensortier-Subsystem aufgebaut.
zugegriffene (heiße) Seiten zu schützen, während selten zugegriffene (kalte) Seiten unter Es versucht, häufig zugegriffene (heiße) Seiten zu schützen, während selten zugegriffene (kalte) Seiten unter Speicherdruck zuerst zurückgefordert werden.
Speicherdruck zuerst zurückgefordert werden.
\english{This builds the DAMON-based LRU-lists sorting subsystem. \english{This builds the DAMON-based LRU-lists sorting subsystem.
It tries to protect frequently accessed (hot) pages while rarely accessed (cold) pages reclaimed first under memory pressure.} It tries to protect frequently accessed (hot) pages while rarely accessed (cold) pages reclaimed first under memory pressure.}

View File

@@ -1,5 +1,5 @@
% since Linux 6.14
% linux_configuration_14_networking_support.tex % linux_configuration_14_networking_support.tex
% since Linux 6.16
% 14. % 14.
\section{Networking support \texorpdfstring{$\rightarrow$}{->}} \section{Networking support \texorpdfstring{$\rightarrow$}{->}}