Míg a Linux 6.4 összevonási ablaka ezen a hétvégén bezárul, ma, az időszak utolsó teljes napján Jens Axboe benyújtja az FMODE_NOWAIT támogatást, amit nagy teljesítmény-és hatékonyságjavulásként jellemez.

Az FMODE_NOWAIT csövek foltok támogatásának korábbi megtestesülése miatt, Axboe elmagyarázta:

“Az egyik dolog, ami mindig is lassabb volt, mint szeretném az io_uring-nél, az a csövekkel való foglalkozás. Nem támogatják az IOCB_NOWAIT-ot, ezért át kell helyeznünk őket az io-ba.-wq a kezeléshez. Ez a sorozat hozzáadja az FMODE_NOWAIT támogatását a csövekhez.”

De ahol a dolgok igazán megvadulnak, az a teljesítmény/hatékonyság-növekedés mértéke:

“Kíváncsi, hogyan Ez nagy különbséget jelent, írtam egy kis benchmarkot, ami egyszerűen kinyit 128 csövet, majd 256 kört leolvas és ír rájuk. Ezt 10-szer futtatták le, az első futtatást elvetve, mivel mindig egy kicsit lassabb. A javítás előtt:

Átl.: 262,52 ms
Stdev: 2,12 ms
Min.: 261,07 ms
Maximum 267,91 ms

és a javítás után:

Átl.: 24,14 ms
Stdev: 9,61 ms
Min.: 17,84 ms
>Max: 43,75 ms

vagy körülbelül 10-szeres teljesítmény (és hatékonyság) javulás.

A foltokat végigfuttattam az ltp cső-és illesztési teszteken, nem tapasztaltam regressziót. Ha megnézzük az io_uring traces-t, láthatjuk, hogy a javítás után már nincsenek io_uring_queue_async_work() nyomaink, ahol korábban minden az io-wq-n keresztül történt.”

Később hozzáadva ehhez a javítássorozathoz:

“A fenti a teszt arra vonatkozott, hogy a cső üres volt az olvasás kibocsátásakor, ha a tesztet úgy módosítják, hogy mikor legyenek adatok, akkor még jobban néz ki:

Előtte:

Átl.: 249,24 ms
Stdev: 0,20 ms
Min.: 248,96 ms
Max.: 249,53 ms

Utána:

Át.: 10,86 ms
Stdev: 0,91 ms
Min.: 10,02 ms
Max: 12,67 msec

vagy körülbelül 23-szoros javulás.”

A Linux 6.4-be való egyesüléshez beállított javítások beállították az FMODE_NOWAIT támogatást a csövekhez, de letiltják, ha használja splice/vmsplice a csövön. Ez a lehívási kérelem most függőben az FMODE_NOWAIT cső támogatására.

Categories: IT Info