Az Intel mérnökei több mint egy éve dolgoznak a Linux kernel Cache Aware Scheduling funkcióján. A Cache Aware Schedulinget már Intel és AMD CPU-kon is kipróbáltam a javított Linux kernel-val, nagyon jó eredményekkel. Emiatt külön öröm látni, hogy a Cache Aware Scheduling javítócsomagjai egyre közelebb kerülnek a mainline Linux kernel-hoz.
Néhány napja a Cache Aware Scheduling javítócsomagokat beemelték Peter Zijlstra sched/cache Git ágába. Remélhetőleg Peter hamarosan továbbítja őket egy tip/tip.Git ágba, ahonnan már közvetlen út vezet a következő Linux kernel merge window-ba.
A Cache Aware Scheduling a modern, több cache doménnel rendelkező CPU-kon javíthatja a Linux teljesítményét. Az ütemező igyekszik elérni, hogy az azonos adatokat használó feladatok ugyanabba a legutolsó szintű cache (LLC) doménbe kerüljenek. Így jobb lesz a cache lokalitás, és csökkennek a cache miss-ek és a cache-bouncing jelenségek. Korábban már mértem szép teljesítménynyereséget AMD EPYC és jobb Xeon 6 teljesítményt is. Amint a Cache Aware Schedulinget beolvasztják, vagy nagyon közel kerül a véglegesítéshez, újabb friss benchmarkokat fogok készíteni.
Azon túl, hogy ezek a javítócsomagok most eljutottak Peter fejlesztői Git ágába, új patch-sorozat is érkezett szerdán Tim Chen Intel-mérnöktől, amely már csak az ott előkészített javítócsomagokra épülő fejlesztéseket tartalmaz.
Az új fejlesztői patch-sorozat egy túlzott aggregációs problémát old meg, ami a Cache Aware Scheduling működése közben léphetett fel. Emellett több hiba javítása is belekerült, köszönhetően Sashiko AI-alapú jelentéseinek.
Tim Chen a patch-sorozat kísérőlevelében ezt írta:
"A cache-aware v4-hez képest a legnagyobb változás az első részben az, hogy az LLC effektív méretét a per-CPU alsó sched_domain tárolja. Ez lehetővé teszi, hogy ellenőrizzük, egy feladat memória-lábnyoma túllépi-e a küszöböt, mégpedig úgy, hogy közvetlenül a megfelelő sched_domainből kérjük le az értéket, ahelyett hogy minden alkalommal újraszámolnánk. Emellett az RSS helyett a NUMA balance page-fault statisztikáit használjuk a working set becslésére. Átvettük Jianyong optimalizáló patchét is, amely csökkenti a CPU-szkennelés többletterhét. Ha azonban a NUMA balancing nincs engedélyezve, akkor nem lesz ilyen working set-becslésünk. Ilyen esetben valószínűleg az RSS használata lenne megfelelő.
...
A teszteredmények azt mutatják, hogy a jelenlegi verzió ugyanazt a teljesítményt hozza, mint a v4 azokon a workloadokon és platformokon, amelyeken teszteltük.
A jövőbeli tervek között szerepel a cache aware scheduling finomhangolható vezérlésének bevezetése egyes feladatokra, miután a load-balance-alapú cache aware scheduling merge-ölésre kerül:
- Megvizsgáljuk a feladatcímkézés (például a schedqos frameworkkel, cgroupokkal) lehetőségét a nem folyamat-alapú feladatcsoportosításhoz LLC-re.
- Kiértékeljük a gyors cache-aware aggregációt a wakeup útvonalon."
Örömteli látni, hogy újabb fejlesztések érkeznek a Cache Aware Schedulinghez, és remélhetőleg hamarosan bekerül a mainline Linux kernel-ba.

