Ubuntu 26.10 защитит сеанс GNOME при нехватке памяти

2026-09-18 81 комментарии
В Ubuntu 26.10 меняется политика завершения процессов при нехватке ОЗУ. GNOME Shell и D-Bus получают более низкий OOM-рейтинг, а systemd-oomd больше не завершает весь пользовательский сеанс по давлению памяти. Правка уже в пакете ubuntu-settings ветки Stonking Stingray; стабильный выпуск назначен на 15 октября 2026 года

В Ubuntu Desktop 26.10 меняется политика завершения процессов при острой нехватке оперативной памяти. Критическим службам графического сеанса, в том числе GNOME Shell и D-Bus, задают более низкий OOM-рейтинг, чтобы ядерный OOM-killer реже выбирал именно их. Одновременно отключается автоматическое завершение всего пользовательского сеанса службой systemd-oomd. Изменение уже есть в пакете ubuntu-settings ветки Stonking Stingray; стабильный выпуск назначен на .

Почему сеанс обрывался раньше приложения

Когда свободная память заканчивается, ядро Linux выбирает процесс и принудительно его завершает. В настольной Ubuntu этот порядок долго расходился с тем, что нужно графическому сеансу. В части случаев раньше программы, которая заняла больше всего памяти, завершались GNOME Shell или шина D-Bus. Без любой из этих служб сеанс либо перестаёт отвечать, либо обрывается целиком.

Такой ход событий зафиксирован в ошибке Launchpad №2089800 от ноября 2024 года. После скачка потребления памяти OOM-killer завершил служебное приложение gnome-characters. У связанного пользовательского юнита стояла политика DefaultOOMPolicy=stop, поэтому вместе с процессом остановилась служба dbus.service, и сеанс прекратился. Отдельной защиты оболочки было недостаточно: начиная с GNOME 44 у GNOME Shell уже выставляется OOMScoreAdjust=-1000, и ядро почти не выбирает её первой, но остальные компоненты сеанса оставались без такой защиты.

OOM-killer – механизм ядра Linux, который при исчерпании памяти выбирает процесс для аварийного завершения. На выбор влияют объём занятой памяти и поправка oom_score_adj: значение около -1000 почти исключает процесс из списка, около +1000 повышает вероятность, что его завершат первым.

Что задаёт ubuntu-settings 26.10.1

Новую политику описал на Ubuntu Discourse разработчик Canonical Жан-Батист Лаллеман (Jean-Baptiste Lallement). В архив она попала 7 сентября в пакете ubuntu-settings 26.10.1. Автор загрузки, Дидье Рош-Толомелли (Didier Roche-Tolomelli), переопределил OOM-правила пользовательского сеанса: при давлении на память сначала должны завершаться приложения, а не службы, без которых рабочий стол не собирается.

Сделано три изменения.

  • Критические службы рабочего стола получают более низкий OOM-рейтинг и реже попадают в выбор ядерного OOM-killer.
  • У приложений и фоновых служб сохраняется более высокий рейтинг по умолчанию, поэтому их по-прежнему завершают раньше.
  • Автоматическое завершение всего пользовательского сеанса по давлению памяти через systemd-oomd отключено.

Последний пункт закрывает расхождение двух механизмов. systemd-oomd не использует ядерные OOM-оценки и раньше мог завершить критическую службу только по давлению памяти в cgroup, даже если ядро выбрало бы другое приложение.

systemd-oomd – пользовательская служба systemd. Она отслеживает давление памяти по cgroups v2 и PSI и может завершить группу процессов до срабатывания ядерного OOM-killer. Поскольку служба не читает oom_score_adj ядра, без отдельной политики она способна остановить не тот компонент, который защитили для графического сеанса.

Приложения по-прежнему будут завершать

Canonical не обещает, что тяжёлая программа уцелеет при исчерпании ОЗУ, и не утверждает, что Ubuntu больше не доходит до состояния OOM. Задача этого шага уже: сохранить графический сеанс, если это возможно, и закрыть приложения раньше служб, без которых сеанс не работает. Более точные правила для отдельных служб и программ разработчики обещают в следующих циклах.

Политика уже доступна в текущей ветке разработки. Команда просит проверить её на нагрузках с высоким расходом памяти, особенно на системах с небольшим объёмом ОЗУ или подкачки, и отправлять неожиданные обрывы сеанса в Launchpad по пакету ubuntu-settings. Для настольной Ubuntu 26.04 LTS минимум оперативной памяти уже поднят до 6 ГБ, поэтому поведение при нехватке ОЗУ остаётся практическим вопросом и для следующей промежуточной версии.

Промежуточный Ubuntu 26.10 «Stonking Stingray» по расписанию выходит 15 октября, бета назначена на 24 сентября. У промежуточного выпуска девять месяцев поддержки, а не пятилетний цикл LTS.

Итог

Ubuntu 26.10 не отменяет аварийное завершение процессов при нехватке памяти. Меняется порядок: сначала приложения пользователя, затем службы, без которых держится сеанс GNOME. Насколько устойчиво это работает на машинах с небольшим объёмом ОЗУ, покажут проверки до октябрьского релиза.

© .
Комментарии и отзывы

Нашли ошибку?

Новое на сайте