diff --git a/config-6.16 b/config-6.16 index 80f1aac..4dd942f 100644 --- a/config-6.16 +++ b/config-6.16 @@ -1171,7 +1171,7 @@ CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_CMA=y CONFIG_CMA_DEBUGFS=y CONFIG_CMA_SYSFS=y -CONFIG_CMA_AREAS=7 +CONFIG_CMA_AREAS=8 CONFIG_PAGE_BLOCK_ORDER=10 CONFIG_MEM_SOFT_DIRTY=y CONFIG_GENERIC_EARLY_IOREMAP=y diff --git a/documentation/linux_configuration.pdf b/documentation/linux_configuration.pdf index a737644..bc27f4b 100644 --- a/documentation/linux_configuration.pdf +++ b/documentation/linux_configuration.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc1c5407477c75447f1624fd2b1db0c0b479219d9fd5e1614faf6eb59afb8b7c -size 315542 +oid sha256:5a2857ec380971345123fa93ae913a376e84a96bc7ea743de94b0cdea217d54f +size 766655 diff --git a/documentation/linux_configuration.tex b/documentation/linux_configuration.tex index a314aae..15fb0d7 100644 --- a/documentation/linux_configuration.tex +++ b/documentation/linux_configuration.tex @@ -20,10 +20,10 @@ %linux_configuration_08_virtualization, %linux_configuration_09_general_architecture-dependent_options, %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_13_memory_management_options, - %linux_configuration_14_networking_support, + linux_configuration_14_networking_support, %linux_configuration_15_device_drivers, %linux_configuration_16_file_systems, %linux_configuration_17_security_options, diff --git a/documentation/linux_configuration_01_general_setup.tex b/documentation/linux_configuration_01_general_setup.tex index 33055e9..6b655dc 100644 --- a/documentation/linux_configuration_01_general_setup.tex +++ b/documentation/linux_configuration_01_general_setup.tex @@ -1533,7 +1533,7 @@ If unsure, say Y here.} %1.42 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. 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. diff --git a/documentation/linux_configuration_12_executable_file_formats.tex b/documentation/linux_configuration_12_executable_file_formats.tex index 5f09e46..d85a76a 100644 --- a/documentation/linux_configuration_12_executable_file_formats.tex +++ b/documentation/linux_configuration_12_executable_file_formats.tex @@ -1,107 +1,94 @@ -% since Linux 6.14 % linux_configuration_12_executable_file_formats.tex +% since Linux 6.16 \section{Executable file formats \texorpdfstring{$\rightarrow$}{->}} (Ausführbare Dateiformate) +%12.1 \subsection{Kernel support for ELF binaries} CONFIG\_BINFMT\_ELF [=y] \textbf{[Y]}\\ -ELF (Executable and Linkable Format) ist ein Format für Bibliotheken und ausführbare Dateien, -das auf verschiedenen Architekturen und Betriebssystemen verwendet wird. +ELF (Executable and Linkable Format) ist ein Format für Bibliotheken und ausführbare Dateien, 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. -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. Viele neue ausführbare Dateien werden ausschließlich im -ELF-Format vertrieben. Hier sollten Sie unbedingt Y sagen. Informationen über ELF sind im ELF HOWTO -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). +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. +Viele neue ausführbare Dateien werden ausschließlich im ELF-Format vertrieben. +Hier sollten Sie unbedingt Y sagen. +Informationen über ELF sind im ELF HOWTO 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. 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 -(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. +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. Many new executables are distributed solely in ELF format. 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}.\\ -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).} +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).} +%12.2 \subsection{Write ELF core dumps with partial segments} CONFIG\_CORE\_DUMP\_DEFAULT\_ELF\_HEADERS [=y] \textbf{[Y]}\\ -ELF-Core-Dump-Dateien beschreiben jede Speicherabbildung des abgestürzten Prozesses und können den -Speicherinhalt jedes einzelnen Prozesses enthalten oder auslassen. Der Inhalt eines unveränderten -Text-Mappings wird standardmäßig weggelassen. 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. Versionen von GDB vor 6.7 werden jedoch von ELF-Core-Dump-Dateien in diesem Format -verwirrt. Das Verhalten des Kerndumps kann pro Prozess mit der Pseudodatei /proc/PID/coredump\_filter -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. +ELF-Core-Dump-Dateien beschreiben jede Speicherabbildung des abgestürzten Prozesses und können den Speicherinhalt jedes einzelnen Prozesses enthalten oder auslassen. +Der Inhalt eines unveränderten Text-Mappings wird standardmäßig weggelassen. +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. +Versionen von GDB vor 6.7 werden jedoch von ELF-Core-Dump-Dateien in diesem Format verwirrt. +Das Verhalten des Kerndumps kann pro Prozess mit der Pseudodatei \texttt{/proc/PID/coredump\_filter} gesteuert werden; diese Einstellung wird vererbt. +Siehe \texttt{Dokumentation/filesystems/proc.rst} für Details. +Diese Konfigurationsoption ändert die Standardeinstellung von \texttt{coredump\_filter}, die beim Booten zu sehen ist. 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.} - -\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. +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.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} CONFIG\_BINFMT\_MISC [=y] \textbf{[Y]}\\ 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 -Java, Python, .NET oder Emacs-Lisp. 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 wird es automatisch an den richtigen Interpreter weiterleiten. +Dies ist vor allem dann sinnvoll, wenn Sie Programme verwenden, die einen Interpreter benötigen, wie Java, Python, .NET oder Emacs-Lisp. +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 wird es automatisch an den richtigen Interpreter weiterleiten. Sie können auch andere nette Dinge tun.\\ -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 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. +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 \texttt{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. 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 -\url{http://www.tldp.org/docs.html\#howto}). +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}). 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.\\ -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.\\ -To use binfmt\_misc, you will need to mount it:\\ -\texttt{mount binfmt\_misc -t binfmt\_misc /proc/sys/fs/binfmt\_misc}\\ +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.\\ +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}. 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.} diff --git a/documentation/linux_configuration_13_memory_management_options.tex b/documentation/linux_configuration_13_memory_management_options.tex index 779dbba..a5e4907 100644 --- a/documentation/linux_configuration_13_memory_management_options.tex +++ b/documentation/linux_configuration_13_memory_management_options.tex @@ -1,5 +1,5 @@ -% since Linux 6.14 % linux_configuration_13_memory_management_options.tex +% since Linux 6.16 % 13. \section{Memory Management options \texorpdfstring{$\rightarrow$}{->}} @@ -8,32 +8,24 @@ %13.1 \subsection{Support for paging of anonymous memory (swap) \texorpdfstring{$\rightarrow$}{->}} 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 -Swap-Dateien in Ihrem Kernel haben möchten, die dazu dienen, mehr virtuellen Speicher als -den tatsächlichen Arbeitsspeicher in Ihrem Computer bereitzustellen. +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. 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 -in your kernel that are used to provide more virtual memory than the actual RAM present in your computer. +\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. If unsure say Y.} \subsubsection{Compressed cache for swap pages} CONFIG\_ZSWAP [=y] \textbf{[Y]}\\ 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. -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. +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. \english{A lightweight compressed cache for swap pages. -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. -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.} +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. +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}$~$\\ CONFIG\_ZSWAP\_DEFAULT\_ON [=y] \textbf{[Y]}\\ -Wenn diese Option ausgewählt ist, wird der komprimierte Cache für Auslagerungsseiten beim Booten aktiviert, -andernfalls wird er deaktiviert. Die hier getroffene Auswahl kann mit der Kernel-Kommando\-zei\-len\-option -\texttt{zswap.enabled=} überschrieben werden. +Wenn diese Option ausgewählt ist, wird der komprimierte Cache für Auslagerungsseiten beim Booten aktiviert, andernfalls wird er deaktiviert. +Die hier getroffene Auswahl kann mit der Kernel-Kommandozeilenoption \texttt{zswap.enabled=} überschrieben werden. \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.} @@ -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{}\\ 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 -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. -\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.} +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). +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. +\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{}\\ 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, -finden Sie in den Benchmarks auf der folgenden LWN-Seite: \url{https://lwn.net/Articles/751795/}\\ +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/}\\ Im Zweifelsfall wählen Sie \texttt{LZO}. -Die hier getroffene Auswahl kann durch Verwendung der Kernel-Befehls\-zeilen\-option -\texttt{zswap.compressor=} überschrieben werden. +Die hier getroffene Auswahl kann durch Verwendung der Kernel"=Befehlszeilenoption \texttt{zswap.compressor=} überschrieben werden. \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 -available at the following LWN page:\\ +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:\\ \url{https://lwn.net/Articles/751795/}\\ If in doubt, select `LZO'.\\ 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.} \paragraph{Default allocator () \texorpdfstring{$\rightarrow$}{->}}$~$\\ -Wählt den Standardzuweiser für den komprimierten Cache für Auslagerungsseiten aus. 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. Die hier getroffene Auswahl kann mit der -Kernel-Kommandozeilenoption \texttt{zswap.zpool=} überschrieben werden. +Wählt den Standardzuweiser für den komprimierten Cache für Auslagerungsseiten aus. +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. +Die hier getroffene Auswahl kann mit der Kernel"=Kommandozeilenoption \texttt{zswap.zpool=} überschrieben werden. \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 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]}\\ Verwendung des zbud-Allokators als Standard-Allokator. \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]}\\ 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.\\ Deprecated and scheduled for removal in a few cycles, see CONFIG\_Z3FOLD\_DEPRECATED.} +} \subparagraph{zsmalloc}$~$\\ CONFIG\_ZSWAP\_ZPOOL\_DEFAULT\_ZSMALLOC [=y] \textbf{[Y]}\\ Verwendung des zsmalloc-Allokators als Standard-Allokator. \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]}\\ -Ein spezieller Allokator für die Speicherung komprimierter Seiten. 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 -Rückgewinnungseigenschaften, die es einem Ansatz mit höherer Dichte vorziehen, wenn die Rückgewinnung -verwendet wird. +Ein spezieller Allokator für die Speicherung komprimierter Seiten. +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 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. 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 -density approach when reclaim will be used.} +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.} +} -\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]}\\ 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. -Ein spezieller Allokator für die Speicherung komprimierter Seiten. Er ist für die Speicherung von bis zu drei -komprimierten Seiten pro physischer Seite ausgelegt. +Ein spezieller Allokator für die Speicherung komprimierter Seiten. +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. \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.\\ A special purpose allocator for storing compressed pages. 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.} +} %13.2 \subsection{N:1 compression allocator (zsmalloc) \texorpdfstring{$\rightarrow$}{->}} CONFIG\_ZSMALLOC [=y] \textbf{[Y]}\\ -zsmalloc ist ein Slab-basierter Speicherallokator, der für die effiziente Speicherung von Seiten -verschiedener Komprimierungsstufen entwickelt wurde. Er erreicht die höchste Speicherdichte mit der -geringsten Fragmentierung. +zsmalloc ist ein Slab-basierter Speicherallokator, der für die effiziente Speicherung von Seiten verschiedener Komprimierungsstufen entwickelt wurde. +Er erreicht die höchste Speicherdichte mit der geringsten Fragmentierung. \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.} \subsubsection{Export zsmalloc statistics} -CONFIG\_ZSMALLOC\_STAT [=n] \textbf{[N]}\\ -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. Wenn Sie unsicher sind, -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. +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 sammeln und diese Informationen über debugfs in den Userspace zu exportieren. +Wenn Sie unsicher sind, 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. 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]}\\* -Diese Option legt die Obergrenze für die Anzahl der physischen Seiten fest, aus denen eine zmalloc-Seite -(zspage) bestehen kann. Die optimale zspage-Kettengröße wird für jede Größenklasse während der -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. -Dies kann auch zu unterschiedlichen Konfigurationen des Pools führen, da zsmalloc Größenklassen mit -ähnlichen Eigenschaften zusammenführt.\\ +Diese Option legt die Obergrenze für die Anzahl der physischen Seiten fest, aus denen eine zmalloc-Seite (zspage) bestehen kann. +Die optimale zspage-Kettengröße wird für jede Größenklasse während der 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. +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. \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.\\ @@ -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 %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]}\\* 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. \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.\\ If unsure, say N.} \subsubsection{Allow slab caches to be merged} -CONFIG\_SLAB\_MERGE\_DEFAULT [=y] \textbf{[Y]}\\ -Um die Fragmentierung des Kernspeichers zu verringern, können Slab-Caches zusammengelegt werden, wenn sie -die gleiche Größe und andere Merkmale aufweisen. 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. Wenn die Caches nicht gemischt -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. +CONFIG\_SLAB\_MERGE\_DEFAULT [=y] \textbf{[Y]}\\* +Um die Fragmentierung des Kernspeichers zu verringern, können Slab-Caches zusammengelegt werden, wenn sie die gleiche Größe und andere Merkmale aufweisen. +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. +Wenn die Caches nicht gemischt 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. -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. +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. 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.} @@ -239,8 +218,7 @@ This security feature reduces the predictability of the kernel slab allocator ag \subsubsection{Harden slab freelist metadata} CONFIG\_SLAB\_FREELIST\_HARDENED [=y] \textbf{[Y]}\\ 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 -Freelist-Angriffsmethoden zu härten. +Diese Optionen bringen geringfügige Leistungseinbußen mit sich, um den Kernel-Slab-Allokator gegen gängige Freelist-Angriffsmethoden zu härten. {\color{gray}Einige Slab-Implementierungen haben mehr Sanity-Checking als andere. Diese Option ist am effektivsten mit CONFIG\_SLUB.} \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}} 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, -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. -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.\\ +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. +Um die gemeinsame Nutzung dieser Zuweisungsbereiche zu vermeiden, sollte ein explizit getrennter Satz von Bereichen 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. -\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. +\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. 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 -allocations are relatively long-lived.\\ +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.\\ If unsure, say Y.} \subsubsection{Enable performance statistics} CONFIG\_SLUB\_STATS [=n] \textbf{[N]}\\ -SLUB-Statistiken sind nützlich, um das Zuweisungsverhalten von SLUBs zu debuggen und Wege zur Optimierung -der Zuweisungsfunktion zu finden. Diese Funktion sollte niemals für den produktiven Einsatz aktiviert werden, -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. Versuchen Sie Folgendes: \texttt{slabinfo -DA} +SLUB-Statistiken sind nützlich, um das Zuweisungsverhalten von SLUBs zu debuggen und Wege zur Optimierung der Zuweisungsfunktion zu finden. +Diese Funktion sollte niemals für den produktiven Einsatz aktiviert werden, 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. +Versuchen Sie Folgendes: \texttt{slabinfo -DA} \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. 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} CONFIG\_SLUB\_CPU\_PARTIAL [=y] \textbf{[Y]}\\ -Partielle Zwischenspeicher pro CPU beschleunigen die Zuweisung und Freigabe von Objekten, die lokal auf einem -Prozessor liegen, zum Preis einer größeren Unbestimmtheit bei der Latenzzeit der Freigabe. Bei Überlauf -werden diese Caches geleert, was das Einnehmen von Sperren erfordert, die Latenzspitzen verursachen können. -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. +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. +Bei einem Überlauf werden diese Caches gelöscht, was das Setzen von Sperren erfordert, was zu Latenzspitzen führen kann. +In der Regel würde man sich bei einem Echtzeitsystem gegen diese Option 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. 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.} \subsubsection{Randomize slab caches for normal kmalloc} CONFIG\_RANDOM\_KMALLOC\_CACHES [=n] \textbf{[N]}\\ -Eine Härtungsfunktion, die mehrere Kopien von Slab-Caches für die normale kmalloc-Allokation erstellt und -kmalloc veranlasst, eine zufällig auf der Grundlage der Code-Adresse auszuwählen, was es Angreifern -erschwert, verwundbare Speicherobjekte auf den Heap zu sprühen, um Speicherschwachstellen auszunutzen. -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. -\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.} +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. +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. +\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 \subsection{Page allocator randomization} CONFIG\_SHUFFLE\_PAGE\_ALLOCATOR [=y] \textbf{[Y]}\\ -Die Randomisierung der Seitenzuweisung verbessert die durchschnittliche Auslastung eines direkt abgebildeten -Memory-Side-Cache. 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. -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. -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. +Die Randomisierung der Seitenzuweisung verbessert die durchschnittliche Auslastung eines direkt abgebildeten Memory-Side-Cache. +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. +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. +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. \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 -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.\\ +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. +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. 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.\\ @@ -326,22 +283,18 @@ Say Y if unsure.} %13.5 \subsection{Disable heap randomization} CONFIG\_COMPAT\_BRK [=n] \textbf{[N]}\\ -Die Randomisierung der Heap-Platzierung macht Heap-Exploits schwieriger, aber sie macht auch alte -Binärdateien (einschließlich aller libc5-basierten) kaputt. Diese Option ändert die Standardeinstellung beim -Booten auf Heap-Randomisierung deaktiviert und kann zur Laufzeit überschrieben werden, indem -/proc/sys/kernel/randomize\_va\_space auf 2 gesetzt wird. Auf nicht-alten Distributionen (nach 2000) -ist N normalerweise eine sichere Wahl. +Die Randomisierung der Heap-Platzierung macht Heap-Exploits schwieriger, aber sie macht auch alte Binärdateien (einschließlich aller libc5-basierten) kaputt. +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. +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). -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.\\ +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.\\ On non-ancient distros (post-2000 ones) N is usually a safe choice.} %13.6 \subsection{Sparse Memory virtual memmap} CONFIG\_SPARSEMEM\_VMEMMAP [=y] \textbf{[Y]}\\ -SPARSEMEM\_VMEMMAP verwendet eine virtuell gemappte Memmap, um texttt{pfn\_to\_page} und\\ -\texttt{page\_to\_pfn} Operationen zu optimieren. -Dies ist die effizienteste Option, wenn genügend Kernel-Res\-sour\-cen verfügbar sind. +\texttt{SPARSEMEM\_VMEMMAP} verwendet eine virtuell zugeordnete memmap, um die Operationen \texttt{pfn\_to\_page} und \texttt{page\_to\_pfn} zu optimieren. +Dies ist die effizienteste Option, wenn genügend Kernel"=Ressourcen verfügbar sind. \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.} @@ -391,21 +344,19 @@ This memory may be utilized for kernel data.} \paragraph{kernel}\mbox{}\\ 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, -die für Kernel-Daten verwendet werden kann. +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. 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. This typically means ZONE\_NORMAL.} \paragraph{movable}\mbox{}\\ 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. -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, -da sonst der Hotplug-Speicher möglicher\-weise nicht online geschaltet werden kann. -Beispielsweise muss ausreichend kernel-fähiger Speicher (ZONE\_NORMAL) verfügbar sein, um Seitenstrukturen zur Beschreibung von ZONE\_MOVABLE zuzuweisen. +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. +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. +Beispielsweise muss ausreichend kernel-fähiger Speicher (\texttt{ZONE\_NORMAL}) verfügbar sein, um Seitenstrukturen zur Beschreibung von \texttt{ZONE\_MOVABLE} zuzuweisen. \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. 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. \english{There is no help available for this option.} +%13.8 \subsection{Allow for balloon memory compaction/migration} CONFIG\_BALLOON\_COMPACTION [=y] \textbf{[Y]}\\ -Die durch das Ballooning verursachte Speicherfragmentierung kann die Anzahl der zusammenhängenden -2-MB-Speicher\-blöcke, die in einem Gastsystem verwendet werden können, erheblich verringern, was zu -Leistungseinbußen aufgrund der geringeren Anzahl transparenter großer Seiten führt, die vom Gastsystem -verwendet werden können. Das Zulassen der Verdichtung und Migration für Speicherseiten, die als Teil von -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.} +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. +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. +\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} CONFIG\_COMPACTION [=y] \textbf{[Y]}\\ -Die Verdichtung ist die einzige Speicherverwaltungskomponente, die zuverlässig Speicherblöcke hoher Ordnung -(größere, physisch zusammenhängende Blöcke) bildet. Die Seitenzuweisung ist in hohem Maße auf die Verdichtung -angewiesen, und das Fehlen dieser Funktion kann bei Speicheranforderungen hoher Ordnung zu unerwarteten -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. +Die Komprimierung ist die einzige Komponente der Speicherverwaltung, die zuverlässig Speicherblöcke höherer Ordnung (größere, physisch zusammenhängende Blöcke) bildet. +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. +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. -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. -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.} +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. +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} CONFIG\_PAGE\_REPORTING [=y] \textbf{[Y]}\\ -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. -\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.} +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. +\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} CONFIG\_MIGRATION [=y] \textbf{[Y]}\\ -Ermöglicht die Migration des physischen Standorts von Seiten von Prozessen, während die virtuellen -Adressen nicht geändert werden. Dies ist in zwei Situationen nützlich. Erstens auf NUMA-Systemen, um -Seiten näher an die zugreifenden Prozessoren zu bringen. 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. +Ermöglicht die Migration des physischen Standorts von Seiten von Prozessen, während die virtuellen Adressen nicht geändert werden. +Dies ist in zwei Situationen nützlich. Erstens auf NUMA-Systemen, um Seiten näher an die zugreifenden Prozessoren zu bringen. +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. \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. 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.} +%13.12 \subsection{Maximum scale factor of PCP (Per-CPU pageset) batch allocate/free \tiny{seit 6.7}} CONFIG\_PCP\_BATCH\_SCALE\_MAX [=5] \textbf{[5]}\\* 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. 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. @@ -473,50 +412,45 @@ The batch number is scaled automatically to improve page allocation/free through But too large scale factor may hurt latency. This option sets the upper limit of scale factor to limit the maximum latency.} +%13.13 \subsection{Enable KSM for page merging} CONFIG\_KSM [=y] \textbf{[Y]}\\ -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. 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. Empfohlen für die Verwendung mit KVM -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 +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. +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. +Empfohlen für die Verwendung mit KVM 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). -\english{Enable Kernel Samepage Merging: KSM periodically scans those areas of an application's address space that an app -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. +\english{Enable Kernel Samepage Merging: KSM periodically scans those areas of an application's address space that an app 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. 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, -and root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG\_SYSFS is set).} +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).} +%13.14 \subsection{Low address space to protect from user allocation} 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 -sollte. 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. Für die meisten ia64-, ppc64- und x86-Benutzer mit -viel Adressraum ist ein Wert von 65536 angemessen und sollte keine Probleme verursachen. -Auf Arm und anderen Architekturen sollte er nicht höher als 32768 sein. 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. Dieser Wert kann nach dem Booten mit dem Parameter /proc/sys/vm/mmap\_min\_addr -geändert werden. +Dies ist der Teil des niedrigen virtuellen Speichers, der vor der Zuweisung an den Benutzerraum geschützt werden sollte. +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. +Für die meisten ia64-, ppc64- und x86-Benutzer mit viel Adressraum ist ein Wert von \num{65536} angemessen und sollte keine Probleme verursachen. +Auf Arm und anderen Architekturen sollte er nicht höher als \num{32768} sein. +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. +Dieser Wert kann nach dem Booten mit dem Parameter \texttt{/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. 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. 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 -this protection by setting the value to 0.\\ +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 value can be changed after boot using the /proc/sys/vm/mmap\_min\_addr tunable.} +%13.15 \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. 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. \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 requires special hardware support and typically ECC memory.} +\note{Typischerweise haben wir bei uns keine ECC-Speicherbausteine, deshalb N.} \subsubsection{HWPoison pages injector} CONFIG\_HWPOISON\_INJECT [=m] \textbf{[M]}\\ @@ -525,14 +459,11 @@ CONFIG\_HWPOISON\_INJECT [=m] \textbf{[M]}\\ \subsection{Transparent Hugepage Support \texorpdfstring{$\rightarrow$}{->}} 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 -verwenden, wann immer dies möglich ist. 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. +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. +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. 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. -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.\\ +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.\\ If memory constrained on embedded, you may want to say N.} \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}$~$\\ CONFIG\_TRANSPARENT\_HUGEPAGE\_ALWAYS [=y] \textbf{[Y]}\\ -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. -\english{Enabling Transparent Hugepage always, can increase the memory footprint of applications without a guaranteed -benefit but it will work automatically for all applications.} +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. +\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}$~$\\ CONFIG\_TRANSPARENT\_HUGEPAGE\_MADVISE [=n] \textbf{[N]}\\ -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. -\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.} +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. +\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]}\\ -Erlaubt khugepaged, schreibgeschützte Seiten in THP zu speichern. Dies ist als experimentell gekennzeichnet, da -es sich um eine neue Funktion handelt. Schreibunterstützung für Datei-THPs wird in den nächsten Release-Zyklen -entwickelt werden. +Erlaubt khugepaged, schreibgeschützte Seiten in THP zu speichern. +Dies ist als experimentell gekennzeichnet, da es sich um eine neue Funktion handelt. +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.\\ This is marked experimental because it is a new feature. 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} CONFIG\_CMA [=y] \textbf{[Y]}\\ -Dadurch wird der Contiguous Memory Allocator aktiviert, der es anderen Subsystemen ermöglicht, große, physisch -zusammenhängende Speicherblöcke zuzuweisen. CMA reserviert einen Speicherbereich und erlaubt nur die Zuweisung -beweglicher Seiten aus diesem Bereich. 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. Wenn Sie unsicher sind, sagen Sie N für nein. +Dadurch wird der Contiguous Memory Allocator aktiviert, der es anderen Subsystemen ermöglicht, große, physisch zusammenhängende Speicherblöcke zuzuweisen. +CMA reserviert einen Speicherbereich und erlaubt nur die Zuweisung beweglicher Seiten aus diesem Bereich. +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. +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. 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, -the allocated pages are migrated away to serve the contiguous request.\\ +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.\\ If unsure, say ``n''.} {\color{gray} \subsubsection*{CMA debug messages (DEVELOPMENT) \tiny{bis 6.8}} CONFIG\_CMA\_DEBUG [=n] \textbf{[N]}\\ -Schaltet Debug-Meldungen in CMA ein. Dies erzeugt KERN\_DEBUG-Meldungen für jeden CMA-Aufruf sowie verschiedene -Meldungen während der Verarbeitung von Aufrufen wie dma\_alloc\_from\_contiguous(). Diese Option hat keinen -Einfluss auf Warn- und Fehlermeldungen. +Schaltet Debug-Meldungen in CMA ein. +Dies erzeugt KERN\_DEBUG-Meldungen für jeden CMA-Aufruf sowie verschiedene Meldungen während der Verarbeitung von Aufrufen wie dma\_alloc\_from\_contiguous(). +Diese Option hat keinen Einfluss auf Warn- und Fehlermeldungen. \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 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.} \subsubsection{Maximum count of the CMA areas} -CONFIG\_CMA\_AREAS [=7] \textbf{[7]}\\ -CMA ermöglicht es, CMA-Bereiche für bestimmte Zwecke zu erstellen, die hauptsächlich als privater Bereich des -Geräts verwendet werden. 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 -\glqq 19\grqq{} bei NUMA. +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 Geräts verwendet werden. +Mit diesem Parameter wird die maximale Anzahl von CMA-Bereichen im System festgelegt. +Wenn Sie unsicher sind, belassen Sie den Standardwert \glqq 8\grqq{} bei UMA und \glqq 20\grqq{} bei NUMA. \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.\\ 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} CONFIG\_MEM\_SOFT\_DIRTY [=y] \textbf{[Y]}\\ -Diese Option ermöglicht die Verfolgung von Speicheränderungen durch Einführung eines Soft-Dirty-Bits auf -pte-s. 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. Siehe Documentation/admin-guide/mm/soft-dirty.rst -für weitere Details. +Diese Option ermöglicht die Verfolgung von Speicheränderungen durch Einführung eines Soft-Dirty-Bits auf pte-s. +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. +Siehe Documentation/admin-guide/mm/soft-dirty.rst für weitere Details. \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.\\ See Documentation/admin-guide/mm/soft-dirty.rst for more details.} +%13.20 \subsection{Defer initialisation of struct pages to kthreads} CONFIG\_DEFERRED\_STRUCT\_PAGE\_INIT [=n] \textbf{[N]}\\ -Normalerweise werden alle Strukturseiten beim Frühstart in einem einzigen Thread initialisiert. Auf sehr -großen Rechnern kann dies sehr viel Zeit in Anspruch nehmen. Wenn diese Option gesetzt ist, wird bei großen -Maschinen eine Teilmenge der memmap beim Booten aufgerufen und der Rest parallel initialisiert. 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. +Normalerweise werden alle Strukturseiten beim Frühstart in einem einzigen Thread initialisiert. +Auf sehr großen Rechnern kann dies sehr viel Zeit in Anspruch nehmen. +Wenn diese Option gesetzt ist, wird bei großen Maschinen eine Teilmenge der memmap beim Booten aufgerufen und der Rest parallel initialisiert. +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. \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. 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.} +%13.21 \subsection{Enable idle page tracking} CONFIG\_IDLE\_PAGE\_TRACKING [=y] \textbf{[Y]}\\ -Diese Funktion ermöglicht es, die Anzahl der Benutzerseiten zu schätzen, die in einem bestimmten Zeitraum -nicht berührt wurden. Diese Information kann nützlich sein, um die Grenzen der Speichergruppen und/oder die -Platzierung von Aufträgen innerhalb eines Rechenclusters zu optimieren.\\ +Diese Funktion ermöglicht es, die Anzahl der Benutzerseiten zu schätzen, die in einem bestimmten Zeitraum nicht berührt wurden. +Diese Information kann nützlich sein, um die Grenzen der Speichergruppen und/oder die Platzierung von Aufträgen innerhalb eines Rechenclusters zu optimieren.\\ 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. 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.} +%13.22 \subsection{Support DMA zone} CONFIG\_ZONE\_DMA [=y] \textbf{[Y]}\\* \textit{Für diese Option gibt es keine Hilfe.} \english{There is no help available for this option.} +%13.23 \subsection{Support DMA32 zone} CONFIG\_ZONE\_DMA32 [=y] \textbf{[Y]}\\* \textit{Für diese Option gibt es keine Hilfe.} \english{There is no help available for this option.} +%13.24 \subsection{Device memory (pmem, HMM, etc\dots) hotplug support} CONFIG\_ZONE\_DEVICE [=y] \textbf{[Y]}\\ -Die Hotplug-Unterstützung für Gerätespeicher ermöglicht es, pmem oder andere vom Gerätetreiber entdeckte -Speicherregionen in der Memmap zu etablieren. 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. Wenn FS\_DAX aktiviert ist, dann sagen Sie Y. +Die Hotplug-Unterstützung für Gerätespeicher ermöglicht es, pmem oder andere vom Gerätetreiber entdeckte Speicherregionen in der Memmap zu etablieren. +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. +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. -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.\\ +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.\\ If FS\_DAX is enabled, then say Y.} +%13.25 \subsection{Unaddressable device memory (GPU memory, \dots)} CONFIG\_DEVICE\_PRIVATE [=y] \textbf{[Y]}\\ -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. +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. Wahrscheinlich sollten Sie auch HMM\_MIRROR auswählen. -\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). +\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). You likely also want to select HMM\_MIRROR.} +%13.26 \subsection{Enable VM event counters for /proc/vmstat} CONFIG\_VM\_EVENT\_COUNTERS [=y] \textbf{[Y]}\\ 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. /proc/vmstat will only show page counts if VM event counters are disabled.} +%13.27 \subsection{Collect percpu memory statistics} CONFIG\_PERCPU\_STATS [=n] \textbf{[N]}\\ -Diese Funktion sammelt Statistiken und stellt sie über debugfs zur Verfügung. Die Informationen umfassen -globale und pro Chunk-Statistiken, die dazu beitragen können, die Speichernutzung der CPU zu verstehen. +Diese Funktion sammelt Statistiken und stellt sie über debugfs zur Verfügung. +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. 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} 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 -machen, die kernelbasierte Unit-Tests für die get\_user\_pages*()- und pin\_user\_pages*()-Familie von -API-Aufrufen starten können. 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. -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.\\ +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. +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. +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} -\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.\\ -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.\\ -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.\\ +\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.\\ +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.\\ +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} +%13.29 \subsection{Enable a module to run time tests on dma\_pool} CONFIG\_DMAPOOL\_TEST [=n] \textbf{[N]}\\ -Stellt ein Testmodul zur Verfügung, das viele Blöcke unterschiedlicher Größe alloziert und freigibt und -berichtet, wie lange es dauert. Damit soll ein konsistenter Weg gefunden werden, um zu messen, wie sich -Änderungen an den dma\_pool\_alloc/free-Routinen auf die Leistung auswirken. +Stellt ein Testmodul zur Verfügung, das viele Blöcke unterschiedlicher Größe alloziert und freigibt und berichtet, wie lange es dauert. +Damit soll ein konsistenter Weg gefunden werden, um zu messen, wie sich Ä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. 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} CONFIG\_MEMFD\_CREATE [=y] \textbf{[Y]}\\* \textit{Für diese Option gibt es keine Hilfe.} \english{There is no help available for this option.} +%13.31 \subsection{Enable memfd\_secret() system call} CONFIG\_SECRETMEM [=y] \textbf{[Y]}\\* -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. -\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.} +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. +\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} CONFIG\_ANON\_VMA\_NAME [=y] \textbf{[Y]}\\ -Erlaubt die Benennung anonymer virtueller Speicherbereiche. Mit dieser Funktion können virtuellen -Speicherbereichen Namen zugewiesen werden.\\ -Die zugewiesenen Namen können später aus /proc/pid/maps und -/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. +Erlaubt die Benennung anonymer virtueller Speicherbereiche. Mit dieser Funktion können virtuellen 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 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.\\ 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. -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.} +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.} +%13.33 \subsection{Enable userfaultfd() system call \texorpdfstring{$\rightarrow$}{->}} CONFIG\_USERFAULTFD [=y] \textbf{[Y]}\\ -Aktivieren Sie den Systemaufruf userfaultfd(), der das Abfangen und Behandeln von Seitenfehlern im -Userland ermöglicht. +Aktivieren Sie den Systemaufruf \texttt{userfaultfd()}, der das Abfangen und Behandeln von Seitenfehlern im Userland ermöglicht. \english{Enable the userfaultfd() system call that allows to intercept and handle page faults in userland.} \subsubsection{Userfaultfd write protection support for shmem/hugetlbfs} CONFIG\_PTE\_MARKER\_UFFD\_WP [=y] \textbf{[Y]}\\ 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 -und hugetlbfs zu aktivieren. +Sie ist erforderlich, um den userfaultfd-Schreibschutz für dateigebundene Speichertypen wie \texttt{shmem} und \texttt{hugetlbfs} zu aktivieren. \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.} +%13.34 \subsection{Multi-Gen LRU} CONFIG\_LRU\_GEN [=y] \textbf{[Y]}\\ 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.\\ 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: \subsection{NUMA emulation} 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. This is only useful for debugging.} -%13.27 +%13.36 reclaim empty user page table pages \subsection{reclaim empty user page table pages} CONFIG\_PT\_RECLAIM [=y] \textbf{[Y]}\\ -Versuchen Sie, leere Benutzerseitentabellen-Seiten in anderen Pfaden als \texttt{munmap} und \texttt{exit\_mmap} -zurück\-zu\-gewinnen.\\ -Hinweis: Jetzt werden nur noch leere Benutzer-PTE-Seitentabellen-Seiten zurückverlangt. +Versuchen Sie, leere Benutzerseitentabellen-Seiten in anderen Pfaden als \texttt{munmap} und \texttt{exit\_mmap} zurückzugewinnen.\\ +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.\\ Note: now only empty user PTE page table pages will be reclaimed.} -%13.28 +%13.37 \subsection{Data Access Monitoring \texorpdfstring{$\rightarrow$}{->}} \textit{Überwachung des Datenzugriffs} \subsubsection{DAMON: Data Access Monitoring Framework} CONFIG\_DAMON [=y] \textbf{[Y]}\\ -Damit wird ein Rahmen geschaffen, der es den Kernel-Subsystemen ermöglicht, die Zugriffshäufigkeit der -einzelnen Speicherbereiche zu überwachen. Diese Informationen können für eine leistungsorientierte -Speicherverwaltung auf DRAM-Ebene nützlich sein. -Weitere Informationen finden Sie unter\\ -\url{https://damonitor.github.io/doc/html/latest-damon/index.html}. +Damit wird ein Rahmen geschaffen, der es den Kernel-Subsystemen ermöglicht, die Zugriffshäufigkeit der einzelnen Speicherbereiche zu überwachen. +Diese Informationen können für eine leistungsorientierte Speicherverwaltung auf DRAM-Ebene nützlich sein. +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. 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.} \paragraph{Data access monitoring operations for virtual address spaces}$~$\\ CONFIG\_DAMON\_VADDR [=y] \textbf{[Y]}\\ -Damit werden die Standardoperationen zur Überwachung des Datenzugriffs für DAMON erstellt, die -für virtuelle Adressräume funktionieren. +Damit werden die Standardoperationen zur Überwachung des Datenzugriffs für DAMON erstellt, die für virtuelle Adressräume funktionieren. \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}$~$\\ CONFIG\_DAMON\_PADDR [=y] \textbf{[Y]}\\ -Damit werden die Standardvorgänge zur Datenzugriffsüberwachung für DAMON erstellt, -die für den physischen Adressraum funktionieren. +Damit werden die Standardvorgänge zur Datenzugriffsüberwachung für DAMON erstellt, 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.} \subsubsection{DAMON sysfs interface} CONFIG\_DAMON\_SYSFS [=y] \textbf{[Y]}\\ -Dies bildet die sysfs-Schnittstelle für DAMON. Der Benutzerbereich kann die Schnittstelle für -die Überwachung beliebiger Datenzugriffe verwenden. +Dies bildet die sysfs-Schnittstelle für DAMON. +Der Benutzerbereich kann die Schnittstelle für die Überwachung beliebiger Datenzugriffe verwenden. \english{This builds the sysfs interface for DAMON. The user space can use the interface for arbitrary data access monitoring.} {\color{gray} \subsubsection*{DAMON debugfs interface (DEPRECATED!)} CONFIG\_DAMON\_DBGFS [=y] \textbf{[N]}\\ -Damit wird die debugfs-Schnittstelle für DAMON erstellt. Die Benutzerraum-Administratoren können -die Schnittstelle für die Überwachung beliebiger Datenzugriffe verwenden. Wenn Sie unsicher sind, -sagen Sie N.\\ +Damit wird die debugfs-Schnittstelle für DAMON erstellt. +Die Benutzerraum-Administratoren können die Schnittstelle für die Überwachung beliebiger Datenzugriffe verwenden. +Wenn Sie unsicher sind, sagen Sie N.\\ 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 -Ihren Anwendungsfall an damon@lists.linux.dev und linux-mm@kvack.org. +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. +\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)} CONFIG\_DAMON\_RECLAIM [=y] \textbf{[Y]}\\ -Damit wird das DAMON-basierte Reklamationssubsystem aufgebaut. Es findet Seiten, auf die lange -Zeit nicht mehr mit DAMON zugegriffen wurde (Cold) und fordert diese zurück. 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. +Damit wird das DAMON-basierte Reklamationssubsystem aufgebaut. +Es findet Seiten, auf die lange Zeit nicht mehr mit DAMON zugegriffen wurde (Cold) und fordert diese zurück. +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. \english{This builds the DAMON-based reclamation subsystem. 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, -while the traditional page scanning-based reclamation is used for heavy 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.} \subsubsection{Build DAMON-based LRU-lists sorting (DAMON\_LRU\_SORT)} CONFIG\_DAMON\_LRU\_SORT [=y] \textbf{[Y]}\\ -Damit wird das DAMON-basierte LRU-Listensortier-Subsystem aufgebaut. Es versucht, häufig -zugegriffene (heiße) Seiten zu schützen, während selten zugegriffene (kalte) Seiten unter -Speicherdruck zuerst zurückgefordert werden. +Damit wird das DAMON-basierte LRU-Listensortier-Subsystem aufgebaut. +Es versucht, häufig zugegriffene (heiße) Seiten zu schützen, während selten zugegriffene (kalte) Seiten unter Speicherdruck zuerst zurückgefordert werden. \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.} diff --git a/documentation/linux_configuration_14_networking_support.tex b/documentation/linux_configuration_14_networking_support.tex index a79e796..96b16c7 100644 --- a/documentation/linux_configuration_14_networking_support.tex +++ b/documentation/linux_configuration_14_networking_support.tex @@ -1,5 +1,5 @@ -% since Linux 6.14 % linux_configuration_14_networking_support.tex +% since Linux 6.16 % 14. \section{Networking support \texorpdfstring{$\rightarrow$}{->}}