Linus Torvalds új kerneljavítása 2,6%-os teljesítményjavulást eredményez

kami911 képe

Október végén Torvalds egy olyan javítást egyesített a Linux kernelben, amelyben néhány kódsor átdolgozásával sikerült elérni a 2,6%-os javulást az Intel per-thread-ops tesztjében. A frissítés Josh Poimboeuf fejlesztő korábbi javaslatára épült, és célja a barrier_nospec() használatának elkerülése volt a 64 bites copy_from_user() funkción belül.

A barrier_nospec() funkció feladata, hogy megakadályozza a spekulatív végrehajtást a Spectre sebezhetőség elleni védekezés részeként. Ugyanakkor Torvalds megjegyezte, hogy ez a funkció lassú, így egy új megoldást alkalmazott: pointer-maszkolás segítségével a felhasználói címeket érvénytelenként kezeli. Torvalds így fogalmazott a 21 soros kódfrissítésben:

„A barrier_nospec() a 64 bites copy_from_user() függvényben lassú. Ehelyett a pointer maszkálást használjuk, hogy a felhasználói pointert érvénytelen címre állítsuk. A kernel teszt robot jelentése alapján ez 2,6%-os javulást eredményez a per_thread_ops tesztben.”

A teljesítményjavulás és a gyakorlati hatás

A copy_from_user() funkció célja, hogy adatokat másoljon a felhasználói térből a kernel térbe, és ez az optimalizáció a jövőben más szintetikus és valós tesztekben is kifejtheti hatását. A kernel teljesítményének minden kisebb optimalizálása jelentősnek bizonyulhat, különösen azok, amelyek a barrier_nospec fölösleges terhelését csökkentik.

A javítást már beolvasztották a Linux Gitbe, és a Linux 6.12-rc6 kiadásban lesz elérhető november második felében, a Linux 6.12 stabil verziójának kiadása előtt.