A Linux kernel fejlesztése során mesterséges intelligencia bevonásával hoztak létre egy olyan javítást, amely bizonyos helyzetekben 50–80-szoros gyorsulást hozhat az io_uring működésében

Jens Axboe, a Linux kernel tároló alrendszerének egyik karbantartója és a kernel io_uring alrendszerének vezető fejlesztője egy furcsa, nehezen reprodukálható lassulás következményeit vizsgálta, amely AHCI/SCSI környezetben, io_uring használat mellett főleg főleg üresjáratban lévő rendszereken fordult elő. A hibakeresésbe bevonta a Claude nevű mesterséges intelligencia modellt is, és végül olyan javítások születtek, amelyek Axboe leírása szerint akár 50–80-szoros gyorsulást is hozhatnak abban a speciális helyzetben, amikor a fő eseményciklus a ppoll időkorlátja miatt késik, így a sorba tett io_uring kérések beküldése akár közel fél másodpercet is csúszhat.

A Linux kernel fejlesztése során mesterséges intelligencia bevonásával hoztak létre egy olyan javítást, amely bizonyos helyzetekben 50–80-szoros gyorsulást hozhat az io_uring működésében

Mi okozta a regressziót a kernel io_uring alrendszerében?

Axboe szerint a hiba lényege az volt, hogy bizonyos helyzetekben a fő eseményciklus ppoll hívása akár közel 500 milliszekundumig is várakozott akkor is, amikor már sorban álltak beküldésre váró I/O műveletek. Ezt egy virtuális gépben futtatott io_uring regressziós teszt futtatásakor vette észre: AHCI eszközökön a futások időnként látszólag ok nélkül időtúllépésbe futottak, míg virtio-blk vagy NVMe eszközön ugyanaz a teszt nagyjából egy másodperc alatt lefutott. Készített egy külön reprodukáló tesztet is, majd a Claude bevonásával átnézte a kapcsolódó kódrészeket, ami segített tisztábban megérteni, hol és miért tud elcsúszni az eseménykezelés.

A javítás ehhez képest nagyon kis méretű: Amikor az io_uring oldalon a kérések sorba kerülnek, a kernel azonnal értesíti a fő eseményciklust, így a ppoll nem tölthet el közel fél másodpercet várakozással olyan pillanatban, amikor lenne teendő. Axboe szerint a legnagyobb gyorsulást hozó változtatás ténylegesen egyetlen kódsorból áll.

A kísérlet nem volt komplikációktól mentes

A történet mellékszála, hogy Axboe szerint a Claude bevonása nem csak a hibakeresésben segített, hanem okozott egy kellemetlen incidenst is, ugyanis a teszteléshez használt virtuális gép lemezképe egy ponton részben megsérült. Végül sikerült helyreállítani a tesztkörnyezetet és lezárni az ügyet, Axboe pedig erről külön bejegyzésben számolt be, megemlítve az akár 60–80-szoros gyorsulásra vonatkozó tapasztalatát.

Az io_uring javítások közben már átmentek a szokásos beküldési lépéseken. A patchsorozat felkerült a QEMU fejlesztői levelezőlistájára, a Patchew visszajelzése szerint pedig a módosítások gond nélkül alkalmazhatók, és a levelezési szál alapján már a fejlesztői ágak felé mozdulnak tovább.