Während das Zusammenführungsfenster von Linux 6.4 an diesem Wochenende geschlossen wird, reicht Jens Axboe heute, am letzten vollen Tag des Zeitraums, die Unterstützung von Pipe FMODE_NOWAIT als das ein, was er als große Leistungs-und Effizienzverbesserung bezeichnet.

Mit einer früheren Inkarnation der FMODE_NOWAIT-Unterstützung für Pipes Patches, Axboe erklärte:

„Eine Sache, die bei io_uring immer etwas langsamer war, als ich es mir wünsche, ist der Umgang mit Pipes. Sie unterstützen IOCB_NOWAIT nicht, und daher müssen wir sie auf io setzen-wq für die Handhabung. Diese Serie fügt Unterstützung für FMODE_NOWAIT zu Pipes hinzu.”

Aber wo die Dinge wirklich wild werden, ist das Ausmaß des Leistungs-/Effizienzgewinns:

“Interessant, wie Das macht einen großen Unterschied, ich habe einen kleinen Benchmark geschrieben, der einfach 128 Pipes öffnet und dann 256 Runden liest und schreibt. Dieser wurde 10 Mal ausgeführt, wobei der erste Lauf verworfen wurde, da er immer etwas langsamer ist. Vor dem Patch:

Durchschn.: 262,52 ms
Stdev: 2,12 ms
Min: 261,07 ms
Max 267,91 ms

und nach dem Patch:

Durchschn.: 24,14 ms
Stdev: 9,61 ms
Min: 17,84 ms
Max: 43,75 ms

oder etwa eine 10-fache Verbesserung der Leistung (und Effizienz).

Ich habe die Patches durch die LTP-Pipe-und Spleißtests laufen lassen, keine Regressionen beobachtet. Wenn wir uns die io_uring-Traces ansehen, können wir sehen, dass wir nach dem Patch keine io_uring_queue_async_work()-Traces mehr haben, wo vorher alles über io-wq erledigt wurde.”

Er später hinzugefügt in dieser Patch-Reihe:

“Das obige Test war, dass eine Pipe leer ist, wenn der Lesevorgang ausgegeben wird, wenn der Test geändert wird, um Daten zu haben, dann sieht es noch besser aus:

Vorher:

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

Nachher: ​​

Durchschn.: 10,86 ms
Stdev: 0,91 ms
Min: 10,02 ms
Max: 12,67 ms

oder etwa eine 23-fache Verbesserung.”

Die Patches, die für die Zusammenführung mit Linux 6.4 festgelegt wurden, stellen die FMODE_NOWAIT-Unterstützung für Pipes ein, deaktivieren sie jedoch, wenn sie verwendet werden splice/vmsplice auf der Pipe. Dieser Pull Request ist das, was jetzt ist anstehend für die Pipe FMODE_NOWAIT Unterstützung.

Categories: IT Info