A Linux 7.2 kernelben tovább épül a sched_ext hierarchikus alütemező-rendszere

A Linux 7.2 kernelben tovább bővül a sched_ext infrastruktúrája, amely BPF-programok segítségével teszi lehetővé egyedi CPU-ütemezők betöltését a felhasználói térből. A fejlesztések egy olyan hierarchikus modell felé haladnak, ahol a gyökérszintű BPF-ütemező külön alütemezőkre bízhatja az egyes cgroupokhoz tartozó munkaterhelések kezelését.

A Linux 7.2 kernelben tovább épül a sched_ext hierarchikus alütemező-rendszere

A készülő alütemező-támogatás több sched_ext példány csatlakoztatását teszi lehetővé a cgroup-hierarchia különböző szintjeihez. A gyökérszintű ütemező így átadhatja egy adott cgroup feladatainak kezelését egy beágyazott BPF-ütemezőnek, amely saját szabályokat alkalmazhat az adott munkaterhelésre. Ez főképp több ügyfelet kiszolgáló rendszereken és eltérő feladattípusokat futtató szervereken lehet hasznos. Egy rendszer például külön ütemezési szabályokat használhat késleltetésérzékeny szolgáltatásokhoz, háttérfeladatokhoz és nagy számítási igényű folyamatokhoz anélkül, hogy minden feladatot egyetlen BPF-ütemezőnek kellene közvetlenül kezelnie.

A hierarchikus ütemezés dispatch útvonalához szükséges alapok már a Linux 7.1-ben bekerültek. Ez az útvonal határozza meg, hogy az ütemező mely futásra kész feladatokat küldi az egyes processzorokhoz. A Linux 7.2 további infrastruktúrát ad ehhez a modellhez, de az alütemező-rendszer még nem teljes. Egy készülő patchsorozat az enqueue útvonal hierarchikus kezelését fejezi majd be. Az enqueue folyamat helyezi a futásra kész feladatokat az ütemezési sorokba, ezért ennek támogatása szükséges ahhoz, hogy a beágyazott ütemezők a feladatok bekerülésétől a CPU-hoz rendelésig teljes körűen irányíthassák a munkát.

A Linux 7.2 bevezeti a topológiai CPU-azonosítókat, vagyis a CID-eket, amelyek a processzorokat a hardver topológiája alapján írják le. Ezek segítségével a BPF-ütemezők figyelembe vehetik például a processzormagok, gyorsítótárak és NUMA-csomópontok közötti kapcsolatokat. A cmask infrastruktúra CPU-csoportok leírását és kezelését biztosítja az ütemezők számára. Ehhez kapcsolódik a BPF arena integrációja is, amely megosztott memóriaterületet kínál a BPF-programok és a felhasználói térben futó vezérlők között. Az alütemezők erre az infrastruktúrára építhetik saját állapotkezelésüket és CPU-hozzárendelési szabályaikat.

Az scx_qmap példaütemezőt szintén átdolgozták, hogy használja az új BPF arena és CID interfészeket. Az scx_qmap egy egyszerű sched_ext referenciaütemező, amely a kernel új ütemezési felületeinek kipróbálására és tesztelésére szolgál.

A Linux 7.2 kernelbe szánt fejlesztési csomag még nem teszik teljessé a hierarchikus alütemezést, de kialakítják annak további szerkezeti elemeit. A következő fejlesztési lépés az enqueue útvonal befejezése lesz, amely után a sched_ext közelebb kerülhet a cgroupokra bontott, egymásba ágyazott BPF-ütemezők teljes támogatásához. A kapcsolódó pull request technikai részletei itt olvashatóak.