V jádře Linux 7.0 byla odhalena regrese, která snižuje výkon PostgreSQL na polovinu

Inženýr z Amazonu odhalil regresi specifickou pro jádro Linux 7.0, jehož vydání se očekává 13. dubna. Změna nastavení plánovače úloh vedla k výraznému poklesu propustnosti a odezvy při práci s databází PostgreSQL na systémech s architekturou ARM64. Při použití jádra 7.0 se výkon během testu pgbench "simple-update" snížil téměř na polovinu – z 98565 na 50751.

Zpomalení je způsobeno změnou režimu přednostního přidělování (preemption) v plánovači úloh z PREEMPT_NONE na PREEMPT_LAZY na architekturách, které tento režim podporují, což způsobilo, že uživatelský prostor PostgreSQL strávil 55 % času CPU na volání s_lock(). Pro vyřešení problému bylo navrženo vrátit režim PREEMPT_NONE jako výchozí a odstranit jeho vazbu na nastavení ARCH_NO_PREEMPT.

Peter Zijlstra, autor změn, které vedly k regresi, a údržbář plánovače úloh a souvisejících subsystémů jádra, uvedl, že opravy je třeba provést v kódu PostgreSQL. Aby se eliminoval pokles výkonu, doporučil využít v PostgreSQL nedávno přidanou funkci jádra "rseq slice" (Restartovatelné sekvence) k omezení pravděpodobnosti přednostního přidělování držiteli zámku.

Zatím není jasné, jaké řešení přijme Linus Torvalds, který dodržuje pravidlo, že jádro by nemělo zhoršovat výkon a narušovat kompatibilitu s uživatelským prostorem. Na jedné straně se jádro 7.0 nachází ve finální fázi testování před vydáním a vrácení nastavení plánovače může způsobit další regrese, na druhé straně se uživatelé mohou setkat s poklesem výkonu jedné z nejpopulárnějších databází na polovinu.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster