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