Terwijl het samenvoegvenster van Linux 6.4 dit weekend wordt gesloten, biedt Jens Axboe vandaag, op de laatste volledige dag van de periode, pijp FMODE_NOWAIT-ondersteuning aan als wat hij beschrijft als een grote prestatie-en efficiëntieverbetering.

Met een eerdere incarnatie van de FMODE_NOWAIT-ondersteuning voor patches voor pijpen, Axboe legde uit:

“Een ding dat altijd een beetje langzamer is geweest dan ik zou willen met io_uring, is omgaan met pijpen. Ze ondersteunen IOCB_NOWAIT niet, en daarom moeten we ze naar io trappen-wq voor afhandeling. Deze serie voegt ondersteuning voor FMODE_NOWAIT toe aan leidingen.”

Maar waar het echt wild wordt, is de schaal van de prestatie-/efficiëntiewinst die eruit voortvloeit:

“Benieuwd naar hoe dit maakt een groot verschil, ik heb een kleine benchmark geschreven die eenvoudigweg 128 pijpen opent en vervolgens 256 lees-en schrijfrondes uitvoert. Dit werd 10 keer uitgevoerd, waarbij de eerste run werd weggegooid omdat deze altijd een beetje langzamer is. Voor de patch:

Gem: 262,52 msec
Stdev: 2,12 msec
Min: 261,07 msec
Max 267,91 msec

en na de patch:

Gem: 24,14 msec
Stdev: 9,61 msec
Min: 17,84 msec
Max: 43,75 msec

of ongeveer 10x betere prestaties (en efficiëntie).

Ik heb de patches door de ltp-buis-en lastests gehaald, geen regressies waargenomen. Als we naar io_uring-sporen kijken, kunnen we zien dat we geen io_uring_queue_async_work()-sporen meer hebben na de patch, waar voorheen alles via io-wq werd gedaan.”

Later toegevoegd in die patchreeks:

“Bovenstaande test was voor een pijp die leeg was wanneer de uitlezing wordt uitgegeven, als de test wordt gewijzigd om gegevens te hebben wanneer, dan ziet het er nog beter uit:

Voorheen:

Gem: 249,24 msec
Stdev: 0,20 msec
Min: 248,96 msec
Max: 249,53 msec

Na:

Gem: 10,86 msec
Stdev: 0,91 msec
Min: 10,02 msec
Max: 12,67 msec

of ongeveer een verbetering van 23x.”

De patches die zijn ingesteld voor het samenvoegen in Linux 6.4 stellen FMODE_NOWAIT-ondersteuning in voor pijpen, maar schakelen deze uit bij gebruik splice/vmsplice op de pijp. Dit pull-verzoek is wat er nu is in afwachting van de pijp FMODE_NOWAIT-ondersteuning.

Categories: IT Info