Egy új Linux kernel-javítással akár 15%-kal is javulhat az NVMe meghajtók teljesítménye többmagos konfigurációkon

Az Intel kernelmérnökei egy olyan problémát próbálnak megoldani, ami főleg többmagos konfigurációknál jelentkezik: az NVMe-megszakítások száma sokszor kevesebb, mint a CPU-magoké, ezért több magnak kell ugyanazokat a megszakításokat kezelnie. Ha a rendszer ezeket nem a megfelelő magokra irányítja, vagyis nem igazodik a processzor topológiájához, ennek következményeképpen bizonyos platformokon akár jelentős teljesítményromlás is kialakulhat.

Egy új Linux kernel-javítással akár 15%-kal is javulhat az NVMe meghajtók teljesítménye többmagos konfigurációkon

Magcsoportok szerinti kiosztás NUMA-n belül

A benyújtott javítócsomag a kernel lib/group_cpus.c kódját teszi „magcsoport-tudatossá”: Ez a gyakorlatban azt jelenti, hogy a CPU-kat a kernel nem csak NUMA-tartományonként, hanem azon belül magcsoportok szerint is együtt próbálja tartani, így az NVMe-megszakításokhoz rendelt végrehajtás nagyobb eséllyel marad „közel” ugyanazon belső gyorsítótár-tartományon belül.

Info
A NUMA-tartomány (NUMA node) a gép egy olyan része, ahol egy meghatározott CPU-magcsoport a saját, hozzá közelebb kapcsolt memóriáját éri el a leggyorsabban. Ha ugyanezek a magok egy másik NUMA-tartomány memóriájához nyúlnak, az jellemzően nagyobb késleltetéssel és lassabban történik.

A patch leírása egy Xeon E példát is hoz, ahol négy mag alkot egy modulnak tekinthető csoportot közös L2 gyorsítótárral, és a rosszul elosztott megszakításkiosztás átlógást okozhat két ilyen csoport között; az új logika ezt igyekszik elkerülni.

Mit várhatunk, és mikor derül ki a valós hatás?

Egyelőre csak egyetlen nyilvános mérés áll rendelkezésre: a szerző szerint egy Intel Xeon E gépen a FIO libaio véletlenszerű olvasási tesztje 8K blokkmérettel nagyjából 15% feletti javulást hozott. Arról viszont még információ, hogy más NVMe-terheléseknél és eltérő CPU-topológiákon mekkora ez a hatás, ugyanakkor a változtatás már bekerült Andrew Morton mm tesztágába, ami általában a szélesebb körű kipróbálás következő lépcsője. Így a következő mainline ciklusok során derülhet ki, mennyire általánosítható ez a gyorsulás.