Habang ang Linux 6.4 merge window ay magsasara ngayong weekend, ngayong araw sa huling buong araw ng panahon ay ang Jens Axboe ay nagsusumite ng pipe FMODE_NOWAIT na suporta bilang kung ano ang inilarawan niya bilang isang malaking pagpapabuti sa pagganap at kahusayan.

Sa naunang pagkakatawang-tao ng FMODE_NOWAIT na suporta para sa mga pipe mga patch, Ipinaliwanag ni Axboe:

“Isang bagay na palaging mas mabagal kaysa sa gusto ko sa io_uring ay ang pagharap sa mga tubo. Hindi nila sinusuportahan ang IOCB_NOWAIT, at samakatuwid kailangan nating i-punt ang mga ito sa io.-wq para sa paghawak. Ang seryeng ito ay nagdaragdag ng suporta para sa FMODE_NOWAIT sa mga tubo.”

Ngunit kung saan ang mga bagay ay talagang nagiging ligaw ay ang sukat ng pagganap/episyente na natamo mula rito:

“Nakaka-curious kung paano Malaki ang pagkakaiba nito, nagsulat ako ng maliit na benchmark na nagbubukas lang ng 128 pipe at pagkatapos ay nagsasagawa ng 256 na round ng pagbabasa at pagsusulat sa mga ito. Ito ay pinatakbo ng 10 beses, itinatapon ang unang pagtakbo dahil ito ay palaging mas mabagal. Bago ang patch:

Avg: 262.52 msec
Stdev: 2.12 msec
Min: 261.07 msec
Max 267.91 msec

at pagkatapos ng patch:

Avg: 24.14 msec
Stdev: 9.61 msec
Min: 17.84 msec
Max: 43.75 msec

o halos 10x na pagpapabuti sa performance (at kahusayan).

Pinatakbo ko ang mga patch sa pamamagitan ng ltp pipe at splice test, walang naobserbahang regression. Sa pagtingin sa mga bakas ng io_uring, makikita namin na wala na kaming anumang mga bakas ng io_uring_queue_async_work() pagkatapos ng patch, kung saan dati ginawa ang lahat sa pamamagitan ng io-wq.”

Pagkatapos ay idinagdag sa serye ng patch na iyon:

“Ang nasa itaas Ang pagsubok ay para sa isang pipe na walang laman kapag ang read ay ibinigay, kung ang pagsubok ay binago upang magkaroon ng data kung kailan, kung gayon ito ay mukhang mas maganda:

Bago:

Avg: 249.24 msec
Stdev: 0.20 msec
Min: 248.96 msec
Max: 249.53 msec

Pagkatapos:

Avg: 10.86 msec
Stdev: 0.91 msec
Min: 10.02 msec
Max: 12.67 msec

o humigit-kumulang 23 beses na pagpapabuti.”

Ang mga patch na itinakda para sa pagsasama sa Linux 6.4 ay nagtakda ng suporta sa FMODE_NOWAIT para sa mga tubo ngunit i-disable ito kung gumagamit splice/vmsplice sa pipe. Itong pull request ay kung ano na ngayon nakabinbin para sa suportang FMODE_NOWAIT ng tubo.

Categories: IT Info