Új Linux-patch: akár 15%-os NVMe-teljesítménynövekedés CPU-klaszter-tudatos IRQ-kezeléssel

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

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.