Egy Amazon mérnöke felfedezett egy regressziót, amely a Linux 7.0 kernelhez kapcsolódik, melynek megjelenése április 13-án várható. A feladatütemező beállításainak módosítása jelentős csökkenést okozott a PostgreSQL adatbázis teljesítményében és reakcióképességében ARM64 architektúrával rendelkező rendszereken. A 7.0 kernel használatakor a pgbench 'simple-update' teszt teljesítménye közel a felére csökkent — 98565-ről 50751-re.
A lassulást a preemption (kényszerítés) módjának megváltozása okozta az alapértelmezett ütemezőnél, melynél a PREEMPT_NONE módot PREEMPT_LAZY módra váltották olyan architektúrákon, amelyek támogatják ezt a módot, emiatt a PostgreSQL a felhasználói térben 55%-kal több CPU időt töltött az s_lock() hívásával. A probléma megoldására javasolták a PREEMPT_NONE mód alapértelmezett visszaállítását, leválasztva annak ARCH_NO_PREEMPT beállításhoz való kötését.
Peter Zijlstra, a változtatások szerzője, amelyek miatt a regresszió bekövetkezett, valamint a feladatütemező és a zárak alrendszerének karbantartója kijelentette, hogy a javítást a PostgreSQL kódjába kell beépíteni. A teljesítménycsökkenés megszüntetése érdekében azt javasolta, hogy a PostgreSQL a kernelbe nemrégiben újonnan bevezetett 'rseq slice' (Újraindítható Szekvenciák) kiterjesztést alkalmazza a zártozó üzemeltető kényszerítési valószínűségének korlátozására.
Jelenleg nem világos, hogy Linus Torvalds milyen döntést hoz, aki a szabályt követi, miszerint a kernel nem ronthatja el a teljesítményt és nem rombolhatja le a felhasználói térrel való kompatibilitást. Egyrészről a 7.0 kernel a kiadás előtti végső tesztelési fázisban van, és az ütemező beállításainak visszaállítása további regressziókat okozhat, másrészről a felhasználók kétszeres teljesítménycsökkenéssel találkozhatnak a legnépszerűbb adatbázis-kezelők egyikénél.
Forrás: opennet.ru
