Egyetlen sornyi módosítás a Linux kernelben akár ötszörös ébredési késleltetéscsökkenést hozhat az új Xeonokon

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

Meglepően látványos eredményt hozott egy apró Linux kernel módosítás a modern Intel Xeon szerverprocesszorokon. Egy frissen beküldött javítás szerint mindössze egy sor kód átírása – a többi változtatás gyakorlatilag csak megjegyzés – akár ötszörösére csökkentheti az ébredési késleltetést (wakeup latency) bizonyos konfigurációkban. A probléma különösen a Sapphire Rapids és az annál újabb Xeon generációkat érinti, és kifejezetten a késleltetésérzékeny feladatokat futtató rendszereknél jelent gondot.

A javításon Ionuț Nechita, a Wind River felhőmérnöke dolgozik, aki már a Sapphire Rapids megjelenése óta vizsgálja a Linuxon tapasztalható szokatlanul magas ébredési késleltetéseket. A menu governor (menu governor) és a NOHZ_FULL kernelkonfiguráció együttes használata esetén az érintett Xeon szervereken akár 150 mikro­szekundumos késleltetés is mérhető, ami jelentősen rosszabb érték, mint az előző generációs Ice Lake vagy Skylake Xeon processzoroknál tapasztalt 12–21 mikro­szekundum.

A probléma gyökere a menu governor működésében keresendő. A kód bizonyos helyzetekben túl mély processzorcsomag-energiatakarékos állapotokat választ, például a PC6 csomag C-állapotot (package C-state), amelyekből a visszatérés a modern szerverplatformokon már komoly költséggel jár. Ennek oka többek között a DDR5 memóriák energia­menedzsmentje, a csempénkénti (tile-level) áramtalanítás, a CXL kapcsolatok helyreállítása és más, az új Xeon architektúrákra jellemző összetettség.

A javasolt megoldás meglepően egyszerű. A menu governor előrejelzésébe egy 25 százalékos biztonsági ráhagyás (safety margin) kerülne, amely megakadályozza, hogy a rendszer indokolatlanul mély alvó állapotot válasszon rövid üresjáratok esetén. A módosítás továbbra is figyelembe veszi a következő időzítő eseményt, így nem rontja érdemben az energiahatékonyságot, viszont jelentősen csökkenti az ébredési időt.

A beküldött javításhoz csatolt mérési eredmények igen beszédesek. Sapphire Rapids alapú rendszeren a qperf hálózati késleltetésmérő eszközzel végzett tesztek során az átlagos ébredési késleltetés 151 mikro­szekundumról nagyjából 30 mikro­szekundumra csökkent, ami közel ötszörös javulásnak felel meg. Ezzel szemben az Ice Lake és Skylake Xeon processzorokon gyakorlatilag semmilyen visszaesés nem volt tapasztalható, ami arra utal, hogy a változtatás nem rontja a gyors C-állapotváltással rendelkező platformok viselkedését. Az energiafogyasztás mérése szerint a csomagszintű teljesítményfelvételben egy százaléknál kisebb eltérés jelentkezett, ami a mérési zaj határán belül van.

Bár a beküldött javítás mindössze 16 sornyi diffből áll, ténylegesen csak egyetlen sor kódot módosít, a többi magyarázó komment. Ennek ellenére a hatása különösen nagy lehet a legújabb Xeon generációkon, köztük a Granite Rapids alapú rendszereken is, még ha ezekre konkrét benchmarkok egyelőre nem is állnak rendelkezésre. A patch jelenleg a Linux kernel levelezőlistáján van felülvizsgálat alatt, és jó eséllyel élénk vitát vált majd ki a kernel fejlesztői között.

Ha a módosítást elfogadják, az ismét jó példája lehet annak, hogy a Linux kernel finomhangolása néha egészen apró beavatkozásokkal is látványos, gyakorlati előnyöket hozhat a modern szerverhardvereken futó, alacsony késleltetést igénylő munkaterhelések számára.