A Linux 7.3-ban az IOmap átállása az iterátor modellre befejeződött: mostantól egyetlen iomap_next() callbacket használ. A változtatás lényege, hogy minden iteráció helyett, ahol eddig közvetett hívás történt, a fordító közvetlen hívássá tudja alakítani, amit így inline-olni is lehet. Ez az IOmap beolvasztási kérelem megszüntet egy szűk keresztmetszetet a kis méretű I/O műveleteknél PCIe Gen5 NVMe SSD-k esetén.
Végfelhasználói szempontból az eredmény az igazán érdekes. A beolvasztási kérelemben így foglalták össze az EXT4 teljesítményre gyakorolt hatást:
"Ez a változtatás egy egyszerű direct I/O útvonalat is hozzáad a kis olvasásokhoz. Gen5 NVMe-n a __iomap_dio_rw() dominál a 4K véletlenszerű olvasásoknál. Ugyanaz az egy magot használó io_uring poll módú terhelés ~3,2M IOPS-et ér el a nyers blokk eszközön, de csak ~1,92M-et ext4-en vagy XFS-en keresztül.
...
Ez az eredeti terhelésnél az ext4-et 1,92M-ről 2,19M IOPS-re emeli. A fio mérései nagyjából a következőt mutatják:
4% javulás libaio-val 64-es és nagyobb queue depth mellett
körülbelül 5% io_uring esetén
* akár 10% io_uring poll módban 256-os mélységnél
mind ext4-en, mind xfs-en."
Konkrét számokat csak az EXT4 és az XFS esetén közöltek, de az IOmap frissítés Btrfs, EXT2, EROFS, F2FS, GFS2, HPFS, FUSE, exFAT, ZoneFS, NTFS és NTFS3 fájlrendszerekhez is megérkezett. Akik mélyebben is kíváncsiak a munkára, a részleteket ebben a beolvasztási kérelemben találják, amelyet tegnap olvasztottak be a Linux 7.3 ciklus korai pulljai között.

