Разработчик Amazon выявил регрессию в тестовом ядре Linux 7.0, в два раза снижающую производительность PostgreSQL
Разработчик из Amazon Сальваторе Дипьетро обнаружил регрессию при тестировании СУБД PostgreSQL и компонентов готовившегося к релизу ядра Linux 7.0. Выпуск новой версии ядра Linux, которая будет использоваться в Ubuntu 26.04 LTS, ожидается в середине апреля 2026 года.
Оказалось, что изменение настроек планировщика задач в проекте ядра привело к существенному снижению пропускной способности и отзывчивости при работе СУБД PostgreSQL на системах с архитектурой ARM64. При использовании ядра Linux 7.0 показатели производительности при прохождении теста pgbench «simple‑update» снизились почти в два раза — с 98 565 до 50751.
Анализ инцидента показал, что замедление в тестах в этом случае вызвано изменением режима вытеснения (preemption) в планировщике по умолчанию с PREEMPT_NONE на PREEMPT_LAZY на архитектурах, поддерживающих такой режим, из‑за чего в пользовательском пространстве PostgreSQL стал тратить 55% времени CPU на вызов s_lock().
Для решения проблемы и исправления регрессии разработчикам ядра Linux предложено вернуть по умолчанию режим PREEMPT_NONE и убрать его привязку к настройке ARCH_NO_PREEMPT.
Автор изменений Питер Зейлстра (Peter Zijlstra), из‑за которых возникла регрессия, и мейнтейнер планировщика задач и связанных с блокировками подсистем ядра Linux, заявил, что патч в этом случае нужно вносить в исходный код PostgreSQL. Например, для устранения падения производительности Зейлстра посоветовал задействовать в PostgreSQL недавно добавленное в ядро расширение «rseq slice» (Restartable Sequences) для ограничения вероятности вытеснения держателя блокировки.
Профильные эксперты с OpenNET считают, что решение остаётся за Линусом Торвальдсом, который придерживается правила, что ядро Linux не должно ухудшать работу и
Читать на habr.com