Проблемы с производительностью в грядущем релизе Linux 7.0
Инженер Amazon обнаружил критическую регрессию в ядре Linux 7.0, официальный выход которого запланирован на 13 апреля. Оказалось, что изменения в планировщике задач негативно влияют на работу СУБД PostgreSQL на системах с архитектурой ARM64, значительно снижая пропускную способность и общую отзывчивость системы.
Согласно результатам тестирования в бенчмарке pgbench («simple-update»), производительность упала почти вдвое: показатели снизились с 98 565 до 50 751 операций.
Причины замедления и возможные решения
Основной причиной стало изменение режима вытеснения (preemption) по умолчанию — с PREEMPT_NONE на PREEMPT_LAZY. Это привело к тому, что при работе с PostgreSQL в пользовательском пространстве система тратит около 55% процессорного времени на вызов s_lock(). Эксперты предложили вернуть настройки к исходному состоянию, убрав привязку к параметру ARCH_NO_PREEMPT.
Питер Зейлстра, мэйнтейнер подсистемы планировщика, предложил иное решение: он считает, что проблему должен исправлять сам разработчик PostgreSQL через внедрение расширения «rseq slice» (Restartable Sequences), которое ограничивает вероятность вытеснения держателя блокировки.
Позиция Линуса Торвальдса
Вопрос о том, как именно будет устранена регрессия, остается открытым. Линус Торвальдс традиционно выступает против изменений, ухудшающих работу пользовательского ПО. Однако откат настроек планировщика на финальной стадии тестирования ядра может спровоцировать другие ошибки. Ситуация требует компромисса, так как двукратное падение скорости работы популярной базы данных является серьезным поводом для доработки кода до релиза.






