Nach zwei Monaten Entwicklung stellte Linus Torvalds die Veröffentlichung des Linux-Kerns 6.13 vor. Zu den bemerkenswertesten Ănderungen gehören: der Modus fĂŒr latentes Auslagern im Task-Scheduler, UnterstĂŒtzung fĂŒr atomare SchreibvorgĂ€nge in XFS und Ext4, der Mechanismus âmultigrain timestampsâ, der adaptive Modus zur Aktivierung von Polling in der Netzwerksubsystem, die Möglichkeit der Erstellung mit AutoFDO-Optimierungen, UnterstĂŒtzung des ARM65 Guarded Control Stack, Isolierung virtueller Maschinen durch die Erweiterung ARM CCA, separate Stacks in BPF, die Entfernung von ReiserFS, der Treiber virtual-cpufreq, die netlink API net-shaper, der Mount-Modus von tmpfs in Bezug auf die GroĂ- und Kleinschreibung und UnterstĂŒtzung fĂŒr POSIX-Erweiterungen in SMB3 sowie der Treiber AMD Cache Optimizer.
In die neue Version wurden 14172 Korrekturen von 2086 Entwicklern aufgenommen, die Patch-GröĂe betrĂ€gt 46 MB (Ănderungen betrafen 15375 Dateien, 598707 Codezeilen wurden hinzugefĂŒgt, 406294 Zeilen entfernt). In der vorherigen Version gab es 14607 Korrekturen von 2167 Entwicklern, die Patch-GröĂe betrug 37 MB. Etwa 52 % aller Ănderungen in 6.13 betreffen GerĂ€tetreiber, ca. 13 % der Ănderungen beziehen sich auf die Aktualisierung von codespezifischen Informationen fĂŒr Hardwarearchitekturen, 11 % stehen im Zusammenhang mit dem Netzwerkstack, 4 % mit Dateisystemen und 3 % mit internen Subsystemen des Kerns.
Wesentliche Neuerungen im Kernel 6.13:
- Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- Ein neuer Mechanismus fĂŒr âmultigrain timestampsâ wurde hinzugefĂŒgt, der es ermöglicht, Informationen ĂŒber die Ănderung oder den Zugriff auf Dateien mit mehr als einer Millisekunden-Genauigkeit zu erhalten, jedoch ohne negative Auswirkungen auf die Leistung. Die Erhöhung der Genauigkeit von Zeitstempeln fĂŒhrt zu zusĂ€tzlichen Kosten aufgrund der erhöhten IntensitĂ€t der Metadaten, die auf die Festplatte geschrieben werden, weshalb in der vorgeschlagenen Implementierung genauere Zeitstempel nicht fĂŒr alle Dateien erstellt werden, sondern nur fĂŒr diejenigen, fĂŒr die Prozesse solche Zeitstempel ĂŒber den Aufruf getattr() anfordern.
- UnterstĂŒtzung fĂŒr atomare Schreiboperationen hinzugefĂŒgt, bei denen Daten, deren GröĂe die SektorgröĂe ĂŒberschreitet, atomar auf Speichereinheiten geschrieben werden, die diese Möglichkeit anbieten. Derzeit wird die atomare Schreibweise fĂŒr XFS, Ext4 im O_DIRECT-Modus (Direct I/O) und md RAID 0/1/10 implementiert.
- Ein neuer Mechanismus zur ZĂ€hlung von Verweisen fĂŒr Dateien wurde vorgeschlagen, der eine Leistungssteigerung von 3â5 % in Arbeitslasten mit mehr als 255 Threads bietet.
- Die Implementierung des Dateisystems ReiserFS wurde entfernt, das vor zwei Jahren als veraltet erklÀrt wurde.
- Der sysctl-Parameter âfs.dentry-negativeâ wurde hinzugefĂŒgt, um die VFS-Richtlinie zur Bereinigung von âdentryâ-EintrĂ€gen (interne Darstellung von Verzeichniselementen) nach dem Löschen der zugehörigen Dateien einzustellen. FĂŒr bestimmte Arten von Lasten ist es optimaler, solche EintrĂ€ge ĂŒber gelöschte Dateien beizubehalten, wĂ€hrend sie fĂŒr andere besser gelöscht werden, daher bietet der Kernel die Möglichkeit zur Auswahl (standardmĂ€Ăig werden âdentryâ-EintrĂ€ge nicht automatisch gelöscht).
- Im Systemaufruf statmount() wurde das Flag STATMOUNT_OPT_ARRAY hinzugefĂŒgt, um eine Liste von Dateisystemoptionen als Null-terminiertes String-Array zurĂŒckzugeben, wobei keine â\000â-Escape-Sequenz verwendet wird. UnterstĂŒtzt wird das ZurĂŒckgeben des FS-Subtyps (fs_subtype, um die Verwendung von FUSE zu bestimmen), der sicheren EinhĂ€ngeoptionen und des ursprĂŒnglichen Superblocks (sb_source).
- Im OverlayFS wurde die Möglichkeit hinzugefĂŒgt, Schichten ĂŒber Dateideskriptoren anzugeben und nicht ĂŒber Dateipfade.
- Im Dateisystem tmpfs wurde die EinhĂ€ngeoption âcasefoldâ hinzugefĂŒgt, um ohne BerĂŒcksichtigung der GroĂ- und Kleinschreibung zu arbeiten, sowie die Option âstrict_encodingâ, um die Erstellung von Dateien mit ungĂŒltigen UTF-8-Zeichen zu blockieren.
- Ein neuer Satz von Systemaufrufen zur Verwaltung erweiterter Dateiattribute wurde vorgeschlagen: setxattrat(), getxattrat(), listxattrat() und removexattrat(). Im Gegensatz zu den Systemaufrufen setxattr(), getxattr(), listxattr() und removexattr() erfordern die neuen Varianten die Angabe des Dateideskriptors des Verzeichnisses, in dem der Dateipfad gesucht wird.
- In Btrfs wurde die ioctl-Operation BTRFS_IOC_SUBVOL_SYNC_WAIT hinzugefĂŒgt, die das Warten auf das Ende der Bereinigung von Untervolumen umfasst, was es einem nicht privilegierten Benutzer ermöglicht, den Befehl âbtrfs subvolume syncâ ohne Zugriff auf ioctl SEARCH_TREE auszufĂŒhren (nĂŒtzlich in Backup-Anwendungen, die Untervolumen bereinigen). Die ioctl-Operation ENCODED_READ wurde hinzugefĂŒgt, um ĂŒber io_uring kodierte Daten zu lesen, z. B. um direkt komprimierte Extents ohne Dekomprimierung zu lesen. Die Arbeiten zur Umstellung auf die Verwendung von Seitenfolien (page folios) wurden fortgesetzt. Das Auftreten von Lock-Contention beim Suchen nach eingebetteten RĂŒckverweisen und beim Durchlaufen von Extent-Puffern wurde verringert. Die Effizienz der Kompression der Extent-Karte wurde erhöht.
- Im EROFS-Dateisystem (Erweiterbares Nur-Lese-Dateisystem), das fĂŒr die Verwendung auf Partitionen im Nur-Lese-Modus konzipiert ist, wurde die Möglichkeit implementiert, die Optionen SEEK_HOLE und SEEK_DATA im Systemaufruf lseek() zu verwenden.
- F2FS unterstĂŒtzt jetzt die Spiegelung von GerĂ€ten ("device aliasing"), die es ermöglicht, temporĂ€r einen Bereich in F2FS zu reservieren, um Teile eines BlockgerĂ€ts in einem anderen Dateisystem zu verwenden. Nach Abschluss der externen Operation kann der reservierte Bereich wieder in F2FS zurĂŒckgegeben werden. Beispielsweise kann ein Dateisystem mit dem Befehl âmkfs.f2fs -c /dev/vdc@vdc.file /dev/vdbâ erstellt werden, wonach der Inhalt des GerĂ€ts /dev/vdc reserviert und in die Datei vdc.file gespiegelt wird, und die Partition /dev/vdc kann fĂŒr eigene Zwecke verwendet werden, etwa um sie fĂŒr ein anderes Dateisystem zu formatieren. Um den reservierten Inhalt zurĂŒckzugeben, reicht es aus, die Datei vdc.file zu löschen.
- In XFS wurde die UnterstĂŒtzung fĂŒr Quoten fĂŒr EchtzeitspeichergerĂ€te hinzugefĂŒgt. AuĂerdem wurde eine UnterstĂŒtzung fĂŒr ein Verzeichnis mit Metadaten (metadata directory) implementiert, das alle Inodes mit Metadaten enthĂ€lt.
- Im FUSE-Mechanismus wurde die Möglichkeit zur dynamischen Ănderung der maximalen Anzahl von Seiten (FUSE_MAX_MAX_PAGES) hinzugefĂŒgt, indem âsysctl fs.fuse.max_pages_limitâ verwendet wird. Dabei kommen Seitenfolien (page folios) zum Einsatz.
- In SMB wurde die UnterstĂŒtzung fĂŒr POSIX-Erweiterungen fĂŒr SMB3 implementiert, die notwendig sind, um spezielle Dateitypen wie FIFO, GerĂ€tedateien und symbolische Links zu speichern. Es wurde die Möglichkeit hinzugefĂŒgt, eine Partition mit einem alternativen Passwort zu mounten, das bei der Rotation von Passwörtern verwendet wird. Eine neue Mount-Option âcifs.upcallâ zur Bestimmung des Namensraums wurde hinzugefĂŒgt. Die Erkennung von symbolischen und BlockgerĂ€te-Dateien, die auf dem Windows NFS-Server erstellt wurden, wurde ermöglicht. Symbolische Links im WSL-Stil (Windows Subsystem for Linux) werden ebenfalls unterstĂŒtzt.
- Die Dateisysteme UBIFS, ADFS, BEFS, HFS, HFSPLUS, HPFS, JFS und ECRYPTFS wurden auf die Verwendung der neuen API zum Mounten von Partitionen umgestellt.
- Die Dateisysteme ECRYPTFS, UFS und NILFS2 wurden auf die Verwendung von Seitenfolien (page folios) umgestellt.
- Speicher und Systemdienste
- Im Scheduler wurde ein Modell des faulen Task-Preemptions (PREEMPT_LAZY, lazy preemption) implementiert, das dem Modell der vollstĂ€ndigen Preemption («full preemption») fĂŒr Echtzeitanwendungen (RR/FIFO/DEADLINE) entspricht, jedoch die Preemption regulĂ€rer Aufgaben (SCHED_NORMAL) bis zur Tick-Grenze verzögert. Diese Verzögerung fĂŒhrt zu einer Reduzierung der Preemption von Lock-Haltern und ermöglicht es, die Leistung nĂ€her an die Konfigurationen heranzufĂŒhren, die das Modell der freiwilligen Preemption (voluntary preemption) verwenden. So bewahrt das neue Modell die Möglichkeiten der vollstĂ€ndigen Preemption fĂŒr Echtzeitanwendungen, minimiert jedoch die LeistungseinbuĂen fĂŒr regulĂ€re Aufgaben. Zudem vereinfacht das neue Modell die Logik fĂŒr die Preemption von Aufgaben im Kernel, da Handler, die sich in anderen Kernelkomponenten (auĂerhalb des Task-Schedulers) befinden, aus dem Scheduling-Prozess ausgeschlossen werden.
- Beim Kompilieren mit dem Clang-Compiler besteht die Möglichkeit, Optimierungen zu nutzen.
Quelle: opennet.ru
