Inžinier spoločnosti Amazon identifikoval regresiu špecifickú pre jadro Linuxu 7.0, ktorého vydanie sa očakáva 13. apríla. Zmena v nastaveniach plánovača úloh viedla k výraznému zníženiu priepustnosti a odozvy pri spustení PostgreSQL na systémoch ARM64. Pri použití jadra 7.0 klesol výkon v teste „simple-update“ v pgbench takmer dvojnásobne, z 98 565 na 50 751.
Spomalenie bolo spôsobené zmenou predvoleného režimu preempcie plánovača z PREEMPT_NONE na PREEMPT_LAZY na architektúrach, ktoré ho podporujú. To spôsobilo, že PostgreSQL strávil 55 % času CPU volaním s_lock() v používateľskom priestore. Na vyriešenie tohto problému sa navrhuje vrátiť PREEMPT_NONE na predvolenú hodnotu a odpojiť ho od nastavenia ARCH_NO_PREEMPT.
Peter Zijlstra, autor zmien, ktoré spôsobili regresiu, a správca plánovača úloh a podsystémov jadra súvisiacich so zámkami, uviedol, že v kóde PostgreSQL je potrebné implementovať opravu. Na riešenie zníženia výkonu odporučil použiť nedávno pridané rozšírenie „rseq slice“ (Restartable Sequences) v jadre PostgreSQL, aby sa obmedzila pravdepodobnosť vyradenia držiteľa zámkov.
Zatiaľ nie je jasné, aké rozhodnutie urobí Linus Torvalds, keďže sa drží zásady, že jadro by nemalo znižovať výkon ani narúšať kompatibilitu s používateľským priestorom. Na jednej strane je jadro 7.0 v záverečnej fáze testovania pred vydaním a vrátenie zmien nastavení plánovača by mohlo viesť k ďalším regresiám. Na druhej strane by používatelia mohli zaznamenať polovičný pokles výkonu jednej z najpopulárnejších databáz.
Zdroj: opennet.ru
