De ext4-wijzigingen voor Linux 7.4-rc1 voegen voor reguliere bestanden een optionele buffered-I/O-route toe die het iomap-framework gebruikt. De route staat standaard uit. Een beheerder kan haar inschakelen met de mountoptie buffered_iomap; ext4 valt zo nodig terug op de oorspronkelijke I/O-route.

Hoe iomap met grotere schrijfopdrachten omgaat

iomap koppelt gebieden in een bestand aan gebieden op opslag. Bij grotere mappings kan het bestandssysteem minder vaak zo’n koppeling hoeven op te vragen voor dezelfde hoeveelheid gegevens. Dat ontwerp kan mappingaanroepen uitsparen, maar belooft geen prestatiewinst voor elke workload.

De gemelde FIO-resultaten verschillen per schrijfpatroon

Zhang Yi’s gerapporteerde FIO-metingen komen uit een virtuele machine met vier cores en een blokapparaat dat op geheugen was gebaseerd. De tabel houdt de doorvoer per testvoorwaarde bij, van de bestaande route met buffer heads naar iomap.

SchrijfscenarioBuffer heads (MiB/s)iomap (MiB/s)Verschil
1 MiB, page-cachewrites4.2955.780+35%
64 KiB, met achtergrond-writeback734957+30%
64 KiB, ongecachete writes415698+68%
1 MiB, ongecachete writes1.4042.883+105%
1 KiB, met fsync na elke write0,710,60-15%

De grootste gerapporteerde winst staat bij ongecachete writes van 1 MiB. Bij writes van 1 KiB met fsync na elke schrijfopdracht daalt de doorvoer juist. De uitkomsten wijzen dus op verschillen per schrijfpatroon, niet op één algemene prestatiewinst voor ext4.

Welke ext4-functies buiten de route vallen

De nieuwe route ondersteunt geen online defragmentatie, inline data, fs-verity, fscrypt, inodes zonder extents of de mountmodus data=journal. Ext4 kan zo nodig terugvallen op de oorspronkelijke I/O-route.

data=ordered is een afzonderlijk geval. Voor inodes die de iomap-route gebruiken, wordt die modus niet toegepast. Bij data=ordered schrijft ext4 gegevensblokken vóór het vastleggen van bijbehorende metadata.

Mountinstellingen en inodevlaggen apart bekijken

data=journal is een instelling op mountniveau. Versleuteling, verity, inline data en extents zijn eigenschappen van afzonderlijke inodes. De interface FS_IOC_GETFLAGS haalt inodevlaggen op; online defragmentatie is een bewerking, geen blijvend inodekenmerk. Voor een concrete configuratie zijn de mountinstelling en de vlaggen van relevante bestanden dus verschillende aandachtspunten.