A Linux 7.4 DMA-BUF támogatást hoz az IO_uring I/O számára

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

Megérkezett a DMA-BUF támogatás a kernel I/O útvonalán a kiváló IO_uring frameworkhez.

Erről a koncepcióról már egy ideje beszélnek, és korábban is készültek hasonló célú javítócsomagok, mostanra viszont a Linux 7.4 főágában is megjelent a DMA-BUF olvasási/írási támogatás IO_uringon keresztül. A Linux DMA-BUF frameworkje lehetővé teszi, hogy különböző eszköz driverek és alrendszerek hardveres memória buffereket osszanak meg a CPU általi másolás nélkül. A DMA-BUF különösen népszerű a GPU driverek körében, de a média- és hálózati drivereknél is dolgoznak rajta a hatékony, zero-copy buffermegosztásért.

A munkát vezető Pavel Begunkov, aki tizenegy javítócsomag-körön vitte végig a fejlesztést, így magyarázta az új funkciót:

"Ez egy opcionálisan bekapcsolható funkció a fájlok számára, és használatához új fájlműveletet kell megvalósítani. Ebben a sorozatban csak az NVMe blokk eszközöket támogatjuk. A felhasználói API az io_uring „regisztrált buffereire” épül, ahol egy dmabufot speciális módon regisztrálunk, de utána ugyanúgy használható, mint bármely más „regisztrált buffer” az IORING_OP_{READ,WRITE}_FIXED kérésekkel. Egy új fájlművelettel hozzuk létre, az eredményül kapott leképezést pedig egy új iterator típuson keresztül adjuk tovább az I/O stackben. Van némi extra infrastruktúra is, ami összefogja az egészet: számolja a kéréseket, kezeli az élettartamot és megvalósítja az érvénytelenítést."

A javítócsomag-sorozatban bemutatott benchmark eredmények kísérő levelében elég meggyőzőek:

Egyelőre csak a nyers NVMe PCIe blokk eszközökkel működik ez a megoldás. A blokk eszközökhöz tartozó DMA-BUF bufferek mérete legfeljebb 4 GB lehet. A funkcióról további részletek olvashatók ebben a Git merge-ben, amely a Linux 7.4-be került be.