diff --git a/documentation/linux_configuration.pdf b/documentation/linux_configuration.pdf index 2ddad85..857b305 100644 Binary files a/documentation/linux_configuration.pdf and b/documentation/linux_configuration.pdf differ diff --git a/documentation/linux_configuration.tex b/documentation/linux_configuration.tex index 895190c..e5ec4f3 100644 --- a/documentation/linux_configuration.tex +++ b/documentation/linux_configuration.tex @@ -169,7 +169,7 @@ wird einfach die Fallback-Liste verwendet, wenn init= nicht übergeben wird. CONFIG\_DEFAULT\_HOSTNAME [=archlinux] \textbf{[=archlinux]}\\ Diese Option legt den Standard-Hostnamen des Systems fest, noch bevor der Userspace das Kommando sethostname(2) aufruft. -Der Kernel verwendet hier traditionell ''(none)'', Sie möchten +Der Kernel verwendet hier traditionell ''(none)'', Sie möchten vielleicht eine andere Voreinstellung verwenden, um ein minimales System mit weniger Konfiguration benutzbar zu machen. @@ -186,7 +186,7 @@ Die POSIX-Variante der Nachrichtenwarteschlangen (message queues) ist ein Teil d In POSIX-Nachrichtenwarteschlangen hat jede Nachricht eine Priorität, die über die Reihenfolge des Empfangs durch einen Prozess entscheidet. Wenn Sie Programme kompilieren und ausführen wollen, die z.B. für Solaris geschrieben wurden und die POSIX-Warteschlangen (Funktionen mq\_\*) verwenden, -sagen Sie hier Y. +sagen Sie hier Y. POSIX-Nachrichtenwarteschlangen sind via Dateisystem als \glqq mqueue\grqq{} sichtbar und können irgendwo eingehängt werden, wenn Sie Dateisystemoperationen auf Nachrichtenwarteschlangen durchführen wollen. @@ -195,7 +195,7 @@ CONFIG\_WATCH\_QUEUE [=y] \textbf{[Y]}\\ Dies ist eine allgemeine Benachrichtigungswarteschlange für den Kernel, um Ereignisse an den Userspace weiterzuleiten, indem sie in Pipes gesplittet werden. Sie kann in Verbindung mit Watches für Schlüssel-/Schlüsseländerungsbenachrichtigungen (key/keyring) und -Gerätebenachrichtigungen verwendet werden.\\ +Gerätebenachrichtigungen verwendet werden.\\ Bemerkung: Bei Debian Bullseye ist dies nicht gesetzt (N). \subsection{Enable process\_vm\_readv/writev\ syscalls} @@ -208,7 +208,8 @@ Weitere Einzelheiten finden Sie in der Manpage. \subsection{uselib syscall (for libc5 and earlier)} CONFIG\_USELIB [=n] \textbf{[N]}\\ Diese Option schaltet den uselib-Systemaufruf ein, der im dynamic-Linker von libc5 und früher verwendet wird. -Das aktuelle glibc verwendet diesen Systemaufruf nicht mehr, deshalb kann man diese option ausschalten wenn sie +Das aktuelle glibc verwendet diesen Systemaufruf nicht mehr, deshalb kann man diese Option +ausschalten wenn sie keine Programme mehr verwenden, die auf libc5 (oder früher) compiliert wurden.\\ Bemerkung: Debian Bullseye verwendet dies noch (Y). @@ -330,7 +331,8 @@ Deaktiviert die unprivilegierte BPF standardmäßig, indem der entsprechende Ein Ein Administrator kann sie immer noch wieder aktivieren, indem er sie später auf 0 setzt, oder sie dauerhaft deaktiviert, indem er sie auf 1 setzt (von wo aus kein weiterer Übergang auf 0 mehr möglich ist).\\ -Unprivilegierte BPF könnte verwendet werden, um bestimmte potenzielle Seitenkanalschwachstellen für spekulative Ausführung auf nicht gemilderter betroffener Hardware auszunutzen. +Unprivilegierte BPF könnte verwendet werden, um bestimmte potenzielle Seitenkanalschwachstellen +für spekulative Ausführung auf nicht gemilderter betroffener Hardware auszunutzen. Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit Y. \subsubsection{Preload BPF file system with kernel specific program and map iterators \texorpdfstring{$\rightarrow$}{->}} @@ -343,7 +345,8 @@ und -Maps nützlich ist. \textit{Dies ist nur sichtbar wenn der übergeordnete Punkt aktiviert ist.}\\ CONFIG\_BPF\_PRELOAD\_UMD [=m] \textbf{[]}\\ Dadurch wird ein Kernelmodul mit mehreren eingebetteten BPF-Programmen -erstellt, die als für den Menschen lesbare Dateien in den BPF-FS-Einhängepunkt eingefügt werden, was bei der Fehlersuche und der Untersuchung von BPF-Programmen und -Maps nützlich ist. +erstellt, die als für den Menschen lesbare Dateien in den BPF-FS-Einhängepunkt eingefügt werden, +was bei der Fehlersuche und der Untersuchung von BPF-Programmen und -Maps nützlich ist. \subsubsection{Enable BPF LSM Instrumentation} CONFIG\_BPF\_LSM [=y] \textbf{[Y]}\\ Ermöglicht die Instrumentierung der Sicherheitshaken mit BPF-Programmen zur Implementierung dynamischer @@ -365,7 +368,7 @@ entsteht. CONFIG\_PREEMPT\_VOLUNTARY [=n] \textbf{[N]}\\ Diese Einstellung reduziert die Latenz des Kernels durch zusätzliche "explizite Unterbrechungspunkte" im Kernel. Diese neuen Unterbrechungspunkte wurden ausgewählt, um die maximale Latenz beim neuerlichen Zuordnen -des Schedulers zu reduzieren und dadurch schnelle Reaktionszeiten der Applikationen zu gewährleisten. - +des Schedulers zu reduzieren und dadurch schnelle Reaktionszeiten der Applikationen zu gewährleisten. -- Auf Kosten eines geringeren Durchsatzes wird dies erreicht. \subsubsection{Preemptible Kernel (Low-Latency Desktop)} CONFIG\_PREEMPT [=y] \textbf{[Y]}\\ @@ -513,14 +516,12 @@ CONFIG\_PSI\_DEFAULT\_DISABLED [=n] \textbf{[N]}\\ Wenn diese Option gesetzt ist, ist die Verfolgung von Druckstauinformationen standardmäßig deaktiviert, kann aber durch die Übergabe von psi=1 auf der Kernel-Befehlszeile beim Booten aktiviert werden.\\ - Diese Funktion fügt dem Task-Wakeup- und Sleep-Pfad des Schedulers etwas Code hinzu. Der Overhead ist zu gering, um gängige planungsintensive Arbeitslasten in der Praxis - zu beeinträchtigen (z. B. Webserver, Memcache), aber es zeigt sich in künstlichen Scheduler-Stresstests, wie z. B. Hackbench. Wenn Sie paranoid sind und nicht sicher, wofür der Kernel verwendet wird, -sagen Sie Y für Ja.\\ +sagen Sie Y für Ja.\\ Sagen Sie N, wenn Sie unsicher sind. \subsection{CPU isolation} @@ -608,9 +609,139 @@ Wählen Sie eine bestimmte Zahl, wenn Sie die RCU selbst testen.\\ Wählen Sie den maximal zulässigen Wert für große Systeme, aber bedenken Sie, dass Sie möglicherweise auch den Kernel-Boot-Parameter skew\_tick setzen müssen, um Konflikte bei den Sperren der rcu\_node-Strukturen zu vermeiden. -Nehmen Sie den Standardwert, wenn Sie unsicher sind. +Nehmen Sie den Standardwert, wenn Sie unsicher sind.\\ Symbol: RCU\_FANOUT\_LEAF [=64]\\ Type : integer (Ganzzahl)\\ Range : [2 64] +\subsubsection{Enable RCU priority boosting} +CONFIG\_RCU\_BOOST [=y] \textbf{[Y]}\\ +Diese Option erhöht die Priorität von preemptierten RCU-Lesern, die +die aktuelle preemptible RCU-Schonfrist zu lange blockieren. +Diese Option verhindert auch, dass schwere Lasten den Aufruf von RCU-Callbacks +blockieren.\\ +Geben Sie hier Y an, wenn Sie mit Echtzeitanwendungen oder großen Lasten arbeiten.\\ +Sagen Sie hier N ein, wenn Sie unsicher sind. + +\paragraph{Milliseconds to delay boosting after RCU grace-period start}$~$\\ +CONFIG\_RCU\_BOOST\_DELAY [=500] \textbf{[500]}\\ +Diese Option gibt die Zeit an, die nach dem Beginn einer bestimmten Karenzzeit +gewartet werden soll, bevor die Priorität von RCU-Lesern, die diese Karenzzeit +blockieren, erhöht wird.\\ +Beachten Sie, dass jeder RCU-Leser, der eine beschleunigte RCU-Schonfrist +blockiert, sofort hochgestuft wird.\\ +Akzeptieren Sie die Standardeinstellung, wenn Sie unsicher sind.\\ +Symbol: RCU\_BOOST\_DELAY [=500]\\ +Typ : Integer (Ganzzahl)\\ +Bereich : [0 3000] + +\paragraph{Perform RCU expedited work in a real-time kthread}$~$\\ +CONFIG\_RCU\_EXP\_KTHREAD [=n] \textbf{[N]}\\ +Verwenden Sie diese Option, um die Latenzzeiten der beschleunigten Neuheitsschonfristen +weiter zu reduzieren, was allerdings mit mehr Störungen verbunden ist. +Diese Option ist standardmäßig auf PREEMPT\_RT=y-Kerneln deaktiviert, +die beschleunigte Neuheitsschonfristen nach dem Booten durch die bedingungslose +Einstellung rcupdate.rcu\_normal\_after\_boot=1 deaktivieren.\\ +Akzeptieren Sie die Voreinstellung, wenn Sie unsicher sind. + +\subsubsection{Offload RCU callback processing from boot-selected CPUs} +CONFIG\_RCU\_NOCB\_CPU [=y] \textbf{[Y]}\\ +Verwenden Sie diese Option, um den Jitter des Betriebssystems für aggressive HPC- oder +Echtzeit-Workloads zu reduzieren. +Sie kann auch verwendet werden, um RCU-Callback-Aufrufe auf energieeffiziente CPUs in +batteriebetriebenen asymmetrischen Multiprozessoren auszulagern. Der Preis für diesen +reduzierten Jitter ist, dass der Overhead von call\_rcu() ansteigt und dass bei einigen +Workloads ein erheblicher Anstieg der Kontextwechselraten zu verzeichnen ist.\\ +Diese Option entlastet den Aufruf von Callbacks von der Gruppe von CPUs, die zur +Boot-Zeit durch den rcu\_nocbs-Parameter angegeben wird. Für jede dieser CPUs wird ein +kthread ("rcuox/N") erstellt, um Callbacks aufzurufen, wobei "N" die CPU ist, die +entlastet wird, und wobei "x" "p" für RCU-preempt (PREEMPTION-Kernel) und "s" für +RCU-sched (!PREEMPTION-Kernel) ist. Nichts hindert diesen kthread daran, auf den +angegebenen CPUs zu laufen, aber (1) die kthreads können zwischen jedem Callback +preempted werden, und (2) Affinität oder cgroups können verwendet werden, um die +kthreads zu zwingen, auf jeder gewünschten Gruppe von CPUs zu laufen.\\ +Sagen Sie hier "Y", wenn Sie trotz des zusätzlichen Overheads ein geringeres +OS-Jitter benötigen.\\ +Sagen Sie hier N, wenn Sie unsicher sind. + +\paragraph{Offload RCU callback processing from all CPUs by default}$~$\\ +CONFIG\_RCU\_NOCB\_CPU\_DEFAULT\_ALL [=n] \textbf{[N]}\\ +Verwenden Sie diese Option, um die Callback-Verarbeitung standardmäßig von allen +CPUs zu entlasten, wenn der Boot-Parameter rcu\_nocbs oder nohz\_full nicht vorhanden +ist. Dadurch wird auch die Notwendigkeit vermieden, Boot-Parameter zu verwenden, um +den Effekt der Entlastung aller CPUs beim Booten zu erreichen.\\ +Geben Sie hier Y an, wenn Sie alle CPUs standardmäßig beim Booten entlasten wollen.\\ +Sagen Sie hier N, wenn Sie sich nicht sicher sind. + +\paragraph{Offload RCU callback from real-time kthread}$~$\\ +CONFIG\_RCU\_NOCB\_CPU\_CB\_BOOST [=n] \textbf{[N]}\\ +Verwenden Sie diese Option, um ausgelagerte Rückrufe als SCHED\_FIFO aufzurufen, um +ein Aushungern durch schwere SCHED\_OTHER-Hintergrundlast zu vermeiden. Natürlich +führt die Ausführung als SCHED\_FIFO während Callback Floods dazu, dass die rcuo[ps] +kthreads die CPU für Hunderte von Millisekunden oder mehr monopolisieren. +Wenn Sie diese Option aktivieren, müssen Sie daher sicherstellen, dass +latenzempfindliche Aufgaben entweder mit höherer Priorität oder auf einer anderen CPU +ausgeführt werden.\\ +Geben Sie hier Y an, wenn Sie die RT-Priorität für die Auslagerung von kthreads +festlegen möchten.\\ +Sagen Sie hier N, wenn Sie einen !PREEMPT\_RT-Kernel bauen und sich unsicher sind. + +\subsubsection{Tasks Trace RCU readers use memory barriers in user and idle} +CONFIG\_TASKS\_TRACE\_RCU\_READ\_MB [=n] \textbf{[N]}\\ +Verwenden Sie diese Option, um die Anzahl der IPIs (inter-processor interrupts), +die an CPUs gesendet werden, +die im Benutzerraum ausgeführt werden oder sich im Leerlauf befinden, während Tasks +RCU-Tilgungsfristen verfolgen, weiter zu reduzieren. +Da eine vernünftige Einstellung des Kernel-Boot-Parameters +rcupdate.rcu\_task\_ipi\_delay solche IPIs für viele Arbeitslasten eliminiert, ist +die richtige Einstellung dieser Kconfig-Option vor allem für aggressive +Echtzeitinstallationen und für batteriebetriebene Geräte wichtig, daher die oben +gewählte Standardeinstellung.\\ +Sagen Sie hier Y, wenn Sie IPIs hassen.\\ +Sagen Sie hier N, wenn Sie leseseitige Speicherbarrieren hassen.\\ +Nehmen Sie die Standardeinstellung, wenn Sie unsicher sind. + +\subsubsection{RCU callback lazy invocation functionality} +CONFIG\_RCU\_LAZY [=y] \textbf{[Y]}\\ +Um Strom zu sparen, sollten Sie RCU-Rückrufe stapeln und nach einer Verzögerung, +einem Speicherdruck oder einer zu großen Rückrufliste flushen. + +\subsubsection{RCU callback-batch backup time check} +CONFIG\_RCU\_DOUBLE\_CHECK\_CB\_TIME [=y] \textbf{[Y]}\\ +Verwenden Sie diese Option, um eine präzisere Durchsetzung des Modulparameters +rcutree.rcu\_resched\_ns in Situationen zu ermöglichen, in denen ein einziger +RCU-Callback Hunderte von Mikrosekunden lang laufen könnte, wodurch die +32-Callback-Batching-Funktion, die verwendet wird, um die Kosten der feinkörnigen, +aber teuren local\_clock()-Funktion zu amortisieren, unterlaufen wird.\\ +Diese Option rundet rcutree.rcu\_resched\_ns auf den nächsten Jiffy auf und setzt +die 32-Callback-Batching-Funktion außer Kraft, wenn diese Grenze überschritten wird.\\ +Sagen Sie hier Y, wenn Sie eine strengere Durchsetzung des Rückruflimits benötigen.\\ +Sagen Sie hier N, wenn Sie unsicher sind. + +\subsection{Kernel .config support} +CONFIG\_IKCONFIG [=y] \textbf{[Y]}\\ +Mit dieser Option kann der gesamte Inhalt der ".config"-Datei des Linux-Kernels im +Kernel gespeichert werden. Sie dokumentiert, welche Kernel-Optionen in einem +laufenden Kernel oder in einem On-Disk-Kernel verwendet werden. +Diese Informationen können mit dem Skript scripts/extract-ikconfig aus der +Kernel-Image-Datei extrahiert und als Eingabe verwendet werden, um den aktuellen +Kernel neu zu erstellen oder einen anderen Kernel zu bauen. +Sie können auch aus einem laufenden Kernel extrahiert werden, indem +/proc/config.gz gelesen wird, falls dies aktiviert ist (siehe unten).\\ +Definiert mit init/Kconfig:686 + +\subsubsection{Enable access to .config through /proc/config.gz} +CONFIG\_IKCONFIG\_PROC [=y] \textbf{[Y]}\\ +Diese Option ermöglicht den Zugriff auf die Kernelkonfigurationsdatei über +/proc/config.gz. + +\subsection{Enable kernel headers through /sys/kernel/kheaders.tar.xz} +CONFIG\_IKHEADERS [=m] \textbf{[M]}\\ +Diese Option ermöglicht den Zugriff auf die In-Kernel-Header, die während des +Build-Prozesses erzeugt werden. Diese können verwendet werden, um +eBPF-Tracing-Programme oder ähnliche Programme zu erstellen. Wenn Sie die Header +als Modul erstellen, wird ein Modul namens kheaders.ko erstellt, das bei Bedarf +geladen werden kann, um Zugriff auf die Header zu erhalten. + + \end{document}