Kapitel 9. Kernel
Zurücksetzen der Kernelparameter SHMMAX und SHMALL auf Standardwerte
In der Vergangenheit waren die Werte der
kernel.shmmax
- und kernel.shmall
-Parameter, die in der /usr/lib/sysctl.d/00-system.conf
-Datei eingestellt waren, zu niedrig. Dadurch funktionierten einige Anwendungen wie etwa SAP nicht ordnungsgemäß. Die unpassenden Außerkraftsetzungen wurden entfernt, und es werden nun die ausreichend hohen Kernelstandards verwendet.
Transparente Huge-Pages verursachen keine Fehler beim Arbeitsspeicher mehr
Transparente Huge-Pages wurden während Lese- und Schreibvorgängen nicht ordnungsgemäß synchronisiert. Unter bestimmten Umständen konnte dies zu Fehlern beim Arbeitsspeicher führen, wenn Huge-Pages aktiviert waren. Es wurden bei der Verarbeitung von Huge-Pages Arbeitsspeicherbarrieren hinzugefügt, um sicherzustellen, dass diese Fehler nicht mehr auftreten.
SCSI LIO Überarbeitung
Das SCSI-Kernelziel LIO wurde von Linux-4.0.stable überarbeitet. Dies beinhaltet zahlreiche Fehlerbehebungen, insbesondere für iSER, umfasst aber auch Support für XCOPY-, WRITE SAME- und ATS-Befehle und für DIF-Datenintegrität.
makedumpfile unterstützt jetzt das neue sadump-Format, das bis zu 16 TB an physischem Speicher darstellt
Der makedumpfile-Befehl unterstützt nun das neue sadump-Format, das mehr als 16 TB physischen Speichers darstellen kann. Dies erlaubt es Benutzern von makedumpfile, Dump-Dateien über 16 TB zu lesen, die von sadump auf bestimmten aufkommenden Servermodellen generiert werden.
Beim Entfernen oder dem Upgrade des Kernel wird keine Warnung mehr angezeigt
Das weak-modules-Skript, das von
kmod
zur Verwaltung von kABI-kompatiblen symbolischen Modul-Links verwendet wird, entfernte in der Vergangenheit das /lib/modules/<version>/weak-updates
-Verzeichnis, wenn mit einem Kernel assoziierte Dateien entfernt wurden. Dieses Verzeichnis gehört dem kernel-Paket und dessen Entfernung verursachte eine Inkonsistenz zwischen dem Dateisystem und dem vom rpm
erwarteten Status. Dadurch wurde jedes Mal wenn ein Kernel-Upgrade oder eine Kernel-Entfernung durchgeführt wurde, ein Warnhinweis angezeigt.
Das Skript wurde aktualisiert und entfernt nun die Inhalte des
weak-updates
-Verzeichnisses, belässt aber das Verzeichnis selbst, so dass keine Warnungen mehr gemeldet werden.
Neues Paket: libevdev
Bei Libevdev handelt es sich um eine Bibliothek auf niedriger Ebene für das Linux-Kernel Eingabegerät-Interface. Es liefert sichere Schnittstellen zur Abfrage von Gerätefähigkeiten und Prozessereignissen von Geräten. Aktuelle Versionen von xorg-x11-drv-evdev und xorg-x11-drv-synaptics benötigen diese Bibliothek als Abhängigkeit.
»Tuned« kann jetzt im no-daemon-Modus laufen
In der Vergangenheit konnte »Tuned« nur als Daemon laufen, was wegen der Auswirkungen auf den Arbeitsspeicher die Leistung kleiner Systeme beeinflussen konnte. Mit dieser Aktualisierung wurde »Tuned« ein no-daemon-Modus hinzugefügt, der keinen lokalen Arbeitsspeicher erfordert. Der no-daemon-Modus ist standardmäßig deaktiviert, weil ein Großteil der Funktionalität von »Tuned« in diesem Modus fehlt.
Neues Paket: tuned-profiles-realtime
Das tuned-profiles-realtime-Paket wurde dem Red Hat Enterprise Linux Server und Red Hat Enterprise Linux für Real Time hinzugefügt. Es enthält ein Echtzeitprofil, das vom
tuned
-Dienstprogramm zur Durchführung von CPU-Isolation und IRQ-Feinabstimmung verwendet wird. Wird das Profil aktiviert, so liest es einen variablen Abschnitt, der die zu isolierenden CPUs festlegt und alle Threads, die verschoben werden können, von diesen CPU-Kernen verschiebt.
Multiqueue I/O-Scheduling mit blk-mq
Red Hat Enterprise Linux 7.2 beinhaltet einen neuen I/O-Scheduling-Mechanismus für mehrere Warteschlangen für als »blk-mq« bekannte Blockgeräte. Es kann die Performance verbessern, indem es bestimmten Gerätetreibern das Mappen von I/O-Anfragen zu mehreren Hardware- oder Software-Warteschlangen gestattet. Die bessere Performance resultiert aus einer Reduktion von Sperrkonflikten, wenn mehrere Threads I/O an einem einzelnen Gerät ausführen. Neuere Geräte, wie etwa Non-Volatile Memory Express (NVMe), nutzen die Vorteile dieses Features am besten, da sie nativen Support für mehrfache Hardware-Eingaben und Ausführungswarteschlangen und deren Performance-Eigenschaften mit geringer Latenz bieten. Die genauen Vorteile im Hinblick auf die Performance hängen wie immer von der genauen Hardware und Arbeitslast ab.
Das blk-mq Feature ist derzeit implementiert und standardmäßig bei den folgenden Treibern aktiviert: virtio-blk, mtip32xx, nvme und rbd.
Das verwandte Feature, scsi-mq, gestattet Small Computer System Interface (SCSI) Gerätetreibern die Verwendung der blk-mq-Infrastruktur. Das scsi-mq-Feature steht in Red Hat Enterprise Linux 7.2 als Technologievorschau zur Verfügung. Um scsi-mq zu aktivieren, legen Sie
scsi_mod.use_blk_mq=y
in der Kernel-Befehlszeile fest. Der Standardwert ist n
(deaktiviert).
Das Device-Mapper (DM) Multipath-Ziel, das anfragenbasierte DM verwendet, kann ebenfalls für die Verwendung der blk-mq-Infrastruktur konfiguriert werden, wenn die
dm_mod.use_blk_mq=y
-Kerneloption festgelegt ist. Der Standardwert lautet n
(deaktiviert).
Es kann von Nutzen sein
dm_mod.use_blk_mq=y
einzustellen, wenn die zugrundeliegenden SCSI-Geräte ebenfalls blk-mq verwenden, da es den Sperr-Overhead an der DM-Schicht verringert.
Um zu bestimmen, ob DM-Multipath blk-mq auf einem System verwendet, nutzen Sie cat an der Datei
/sys/block/dm-X/dm/use_blk_mq
, wobei dm-X
durch das DM-Multipath-Gerät von Interesse ersetzt wird. Diese Datei ist schreibgeschützt und reflektiert was der allgemeine Wert in /sys/module/dm_mod/parameters/use_blk_mq
zu dem Zeitpunkt war, als das DM-Multipath-Gerät erstellt wurde.
SCSI-Fehlermeldungen können jetzt bequem interpretiert werden
Frühere Kerneländerungen an der printk()-Funktion hatten zur Protokollierung von Small Computer System Interface (SCSI) Fehlermeldungen über mehrere Zeilen geführt. Es konnte beim Auftreten mehrerer Fehler über verschiedene Geräte schwierig werden, die Fehlermeldungen korrekt zu deuten. Diese Aktualisierung ändert den SCSI-Fehlerprotokollierungscode, so dass Fehlermeldungen die dev_printk()-Option verwenden, die jede Fehlermeldung mit dem Gerät assoziiert, das den Fehler generiert hat.
libATA-Subsystem und Treiber aktualisiert
Diese Aktualisierung bietet eine Reihe von Fehlerbehebungen und Verbesserungen des libATA-Subsystems und der Treiber.
Upgrade von FCoE und DCB
Fibre Channel over Ethernet (FCoE) und Data Center Bridging (DCB) Kernelkomponenten wurden auf die neuesten Upstream-Versionen aktualisiert, was eine Reihe von Fehlerbehebungen und Verbesserungen gegenüber der vorherigen Version bietet.
perf Überarbeitung auf Version 4.1
Es wurde ein Upgrade der perf-Pakete auf Upstream-Version 4.1 durchgeführt, das eine Reihe von Verbesserungen bei der Performance und Stabilität gegenüber der früheren Version bietet. Insbesondere fügt diese Überarbeitung Intel Cache QoS Monitoring und AMD IBS Ops Features hinzu und liefert Support für Intel Xeon v4, für komprimierte Kernelmodule, für parametrisierte Ereignisse und Support für die Festlegung der Breakpoint-Länge. Außerdem wurden dem perf-Tool eine Reihe von Optionen wie
--system-wide
, top -z
, top -w
, trace --filter-pids
und trace --event
hinzugefügt.
Support für TPM 2.0
Dieses Update fügt Support auf Treiberebene für Version 2.0 konforme Trusted Platform Module (TPM)-Geräte hinzu.
Turbostat liefert jetzt korrekte Ausgabe
In der Vergangenheit fand das turbostat-Tool heraus, ob das System den MSR-Gerätesupport hatte, indem es die /dev/cpu/0/msr-Datei für
cpu0
statt cpu
las. Dies führte dazu, dass das Deaktivieren einer CPU die CPUs aus der turbostat-Ausgabe löschte. Dieser Fehler wurde behoben, und das Ausführen des turbostat ls
-Befehls liefert jetzt die korrekte Ausgabe.
Intel Xeon v5 Prozessor-Support
Diese Verbesserung fügt dem turbostat-Tool Intel Xeon v5 Prozessor-Support hinzu.
Das zswap-Tool nutzt das zpool-API
In der Vergangenheit verwendete das zswap-Tool zbud direkt, einen Speicherpool, der komprimierte Seiten im Verhältnis von 2:1 (wenn voll) speichert. Diese Aktualisierung führt das zpool-API, das Zugriff auf die zbud- oder zsmalloc-Pools liefert: zsmalloc speichert komprimierte Seiten in potenziell höherer Dichte, wodurch mehr Speicher für hoch komprimierbare Seiten verfügbar ist. Diese Aktualisierung überträgt zsmalloc zu den /mm-Treibern, so dass zpool wie vorgesehen funktioniert.
Die /proc/pid/cmdline Dateilänge ist jetzt unbeschränkt
Die Grenze für die Dateilänge von /proc/pid/cmdline für den ps-Befehl war in der Vergangenheit im Kernel auf 4096 Zeichen hartkodiert. Diese Aktualisierung stellt sicher, dass die Länge von /proc/pid/cmdline unbegrenzt ist, was besonders nützlich bei der Auflistung von Prozessen mit langen Befehlszeilenargumenten ist.
Support für dma_rmb und dma_wmb wird jetzt bereitgestellt
Diese Aktualisierung führt zwei neue Typen von Primitiven für das Synchronisieren von Cache-kohärenten Lese- und Schreibvorgängen im Arbeitsspeicher, dma_wmb() und dma_rmb(), ein. Dieses Feature ist zur angemessenen Verwendung in Treibern verfügbar.