Инженер от компанията Amazon установи регресия, специфична за ядрото на Linux 7.0, чийто релиз се очаква на 13 април. Промяната в настройките на планиращия софтуер доведе до значително намаляване на пропускната способност и отзивчивостта при работа с базата данни PostgreSQL на системи с архитектура ARM64. При използването на ядрото 7.0, производителността в теста pgbench "simple-update" спадна почти два пъти — от 98565 до 50751.
Забавянето е причинено от промяната на режима на изтласкване (preemption) в планиращия софтуер по подразбиране от PREEMPT_NONE на PREEMPT_LAZY на архитектури, които поддържат този режим, затова в потребителското пространство PostgreSQL започна да изразходва 55% от времето на CPU за извикване на s_lock(). За решаване на проблема е предложено да се възстанови режима PREEMPT_NONE по подразбиране и да бъде премахната неговата привързаност към настройката ARCH_NO_PREEMPT.
Питер Зейлстра (Peter Zijlstra), автор на промените, довели до регресията, и мейнтейнер на планиращия софтуер и свързаните с блокировките подсистеми на ядрото, заяви, че поправка трябва да бъде направена в кода на PostgreSQL. За да се устранат проблемите с производителността, той препоръча да се внедри ново добавено в ядрото разширение "rseq slice" (Restartable Sequences), за да се ограничи вероятността от изтласкване на притежателя на блокировка.
Все още не е ясно какво решение ще вземе Линус Торвалдс, който се придържа към правилото, че ядрото не трябва да влошава работата и да разваля съвместимостта с потребителското пространство. От една страна, ядрото 7.0 е на финална стъпка на тестване преди релиз, а връщането на настройките на планиращия софтуер може да доведе до други регресии, а от друга страна, потребителите могат да се сблъскат с двукратно намаление на производителността на една от най-популярните бази данни.
Източник: opennet.ru
