Egy új, fejlesztés alatt álló Linux kernel patch ígéretes teljesítménynövekedést hozhat az NVMe SSD-ket használó, sokmagos rendszereken. Az Intel mérnökei által készített módosítás a CPU-klaszterek figyelembevételével optimalizálja az NVMe megszakítások (IRQ) kiosztását, amellyel egyes mérések szerint akár 15%-os gyorsulás is elérhető.
Mi a probléma a jelenlegi működéssel?
A modern, magas magszámú processzorok esetén gyakran előfordul, hogy az NVMe eszközök által használt IRQ-k száma alacsonyabb, mint a rendelkezésre álló CPU-magoké. Ennek következtében több CPU-mag kénytelen megosztani ugyanazt az IRQ-t. Ha az IRQ affinitása – vagyis hogy mely CPU-mag(ok) kezelik az adott megszakítást – nem esik egybe a CPU klaszter felépítésével, akkor bizonyos platformokon mérhető teljesítményveszteség jelentkezhet. Ez különösen igaz többklaszteres, NUMA-felépítésű szerverprocesszorok esetén.
Mit csinál az új patch?
A módosítás a lib/group_cpus.c kódot teszi CPU-klaszter-tudatossá. Wangyang Guo, az Intel egyik Linux-fejlesztője szerint a megoldás lényege, hogy:
- a CPU-kat klaszterek szerint csoportosítja,
- klaszterenként, NUMA-dómenen belül rendezi őket,
- és így az NVMe IRQ-k jobb lokális kötést (locality) kapnak a megszakítást kezelő CPU-magokhoz.
Ennek eredménye, hogy az NVMe I/O-műveletek során kevesebb felesleges adatmozgatás és szinkronizáció történik a különböző CPU-klaszterek között.
Milyen eredményeket mértek?
A patch hatását egy Intel Xeon E sorozatú szerveren vizsgálták, ahol a széles körben használt FIO benchmark segítségével:
- libaio alapú véletlenszerű olvasási (random read) terhelés mellett
- körülbelül 15%-os teljesítménynövekedést mértek.
Fontos megjegyezni, hogy egyelőre csak ez az egy mérés áll rendelkezésre. Más I/O-mintákra (például írás, vegyes terhelés) vagy eltérő hardverkonfigurációkra vonatkozó adatok még nem kerültek nyilvánosságra.

Mikor érkezhet a kernelbe?
A patch jelenleg Andrew Morton „mm-everything” Git ágában található, amely a memóriakezeléssel és kapcsolódó alrendszerekkel foglalkozó módosításokat gyűjti. A körülbelül 271 soros változtatás jó eséllyel pályázik arra, hogy bekerüljön a következő Linux 6.20~7.0 merge window során a mainline kernelbe.
Amennyiben ez megtörténik, a módosítás különösen a többklaszteres szerverprocesszorokat és NVMe SSD-ket használó rendszereken hozhat kézzelfogható előnyt, mindenféle felhasználói beavatkozás nélkül.


