В Ubuntu 26.10 разработчики решили изменить давно существующий механизм обработки критической нехватки оперативной памяти. Главная цель нововведения — сделать систему более устойчивой в ситуациях, когда приложения потребляют всю доступную RAM и системе приходится принудительно завершать процессы.
Проблема заключается не столько в самом существовании OOM killer, сколько в том, какой именно процесс становится его жертвой. В некоторых ситуациях Linux может завершить не приложение, которое стало причиной нехватки памяти, а важный компонент графического рабочего окружения. В результате вместо закрытия одной проблемной программы пользователь может потерять весь графический сеанс.
В Ubuntu 26.10 эта логика будет скорректирована. Критические службы рабочего стола получат более высокий уровень защиты, а обычные приложения и фоновые процессы будут оставаться более вероятными кандидатами на завершение.
Изменения относятся к Ubuntu 26.10, которая должна выйти 15 октября 2026 года. Они также присутствуют в текущей разрабатываемой версии системы и доступны для тестирования перед релизом.
Что происходит, когда в Linux заканчивается оперативная память
Операционная система Linux постоянно распределяет оперативную память между ядром, системными службами и пользовательскими приложениями. Пока свободной памяти достаточно, процессы получают необходимые им ресурсы. Однако при интенсивной нагрузке ситуация может измениться: свободная RAM заканчивается, начинает активно использоваться swap, а часть операций становится значительно медленнее.
Если освободить достаточное количество памяти обычными механизмами уже невозможно, ядру приходится принимать крайнее решение. В Linux для этого существует OOM killer — механизм Out Of Memory Killer, который выбирает один или несколько процессов и принудительно завершает их, чтобы вернуть системе возможность продолжить работу.
Сам принцип является необходимой защитой от полного зависания системы. Если память полностью исчерпана, бесконечно ждать освобождения ресурсов невозможно. Поэтому ядро выбирает процессы, которые считает подходящими кандидатами для завершения.
Однако выбор не всегда совпадает с очевидной логикой пользователя. OOM killer не руководствуется простым правилом «убить процесс, который использует больше всего RAM». При выборе учитывается ряд параметров, в том числе OOM score, который влияет на вероятность того, что конкретный процесс будет завершён.
Почему OOM killer мог завершить GNOME Shell
Именно здесь возникала проблема Ubuntu Desktop. В определённых конфигурациях пользовательское приложение и важный компонент графической среды могли иметь недостаточно различающиеся приоритеты с точки зрения OOM killer.
Например, пользователь может открыть большое количество вкладок Firefox, запустить несколько ресурсоёмких программ или виртуальную машину. Если доступная память закончится, ядру потребуется освободить RAM.
Вместо того чтобы сначала завершить наиболее проблемное приложение, система в некоторых случаях могла выбрать процесс, необходимый для функционирования самого рабочего стола. Одним из потенциальных кандидатов становился GNOME Shell.
Последствия такого решения гораздо серьёзнее обычного закрытия приложения. Если система завершает браузер, пользователь теряет браузер и, возможно, несохранённые данные. Если же завершается критическая часть графического сеанса, последствия могут затронуть весь рабочий стол.
В некоторых сценариях это может привести к тому, что графическая сессия становится непригодной для дальнейшей работы или пользователь оказывается возвращён на экран входа.
Разработчики Ubuntu прямо указывают, что проблема была связана с нежелательными значениями OOMScoreAdjust. Официальное описание изменений опубликовано в Ubuntu Community Hub в материале Improving Ubuntu Desktop stability under memory pressure.
Что изменится в Ubuntu 26.10
В Ubuntu 26.10 разработчики меняют политику приоритета процессов во время нехватки памяти. Критические компоненты рабочего стола теперь получают более низкий OOM score.
Для OOM killer более низкий показатель означает меньшую вероятность того, что процесс будет выбран для принудительного завершения. Поэтому важные службы графической сессии должны переживать критическую нехватку RAM дольше, чем обычные пользовательские приложения.
Одновременно приложения и фоновые службы сохраняют более высокий уровень приоритета для завершения. Это должно привести к более логичному поведению системы: если пользователь запустил приложение, которое потребляет чрезмерное количество памяти, оно должно стать кандидатом на завершение раньше компонентов, необходимых для работы рабочего стола.
По сути, Ubuntu пытается изменить порядок жертвования ресурсами. Вместо ситуации, когда проблема с одним приложением способна разрушить весь графический сеанс, предпочтительным сценарием становится завершение самого приложения.
Какую роль играет systemd-oomd
Отдельная часть изменений связана с systemd-oomd. Это пользовательский демон, предназначенный для реагирования на серьёзное давление на память ещё до того, как ситуация обязательно дойдёт до классического OOM-сценария ядра.
Таким образом, в современной Linux-системе существуют разные уровни работы с нехваткой памяти. Ядро Linux располагает собственным OOM killer, а systemd может дополнительно отслеживать показатели давления на память и предпринимать действия в пользовательском пространстве.
Systemd-oomd способен анализировать memory pressure и использование swap, после чего завершать процессы или контрольные группы, если они соответствуют заданным условиям.
Документация Ubuntu описывает соответствующие параметры systemd-oomd, включая DefaultMemoryPressureLimit, DefaultMemoryPressureDurationSec и ограничения использования swap. В зависимости от конфигурации systemd-oomd может принимать решение о завершении процессов при продолжительном высоком давлении на память.
Дополнительная информация доступна в официальной документации Ubuntu по oomd.conf.
Почему недостаточно просто изменить OOM score
На первый взгляд проблема может показаться достаточно простой: достаточно снизить OOM score для GNOME Shell и других системных процессов. Однако в Ubuntu используется не один механизм принятия решений.
Systemd-oomd работает с собственными правилами управления памятью и контрольными группами. Его логика не полностью совпадает с логикой ядра Linux и его OOM killer.
Именно поэтому одной корректировки OOMScoreAdjust оказалось недостаточно. Если systemd-oomd принимает решение на основании давления на память, он может руководствоваться параметрами, которые не отражают тот же приоритет, который используется непосредственно ядром.
В результате важный процесс рабочего стола теоретически всё ещё мог оказаться под угрозой, даже если его OOM score был изменён таким образом, чтобы защитить его от обычного OOM killer.
Поэтому в Ubuntu 26.10 также отключается автоматическое завершение всей пользовательской сессии через systemd-oomd в рассматриваемом сценарии. Это должно уменьшить вероятность того, что systemd-oomd завершит критическую службу рабочего стола исключительно из-за высокого давления на память.
Что произойдёт с приложениями при нехватке памяти
Нововведение не означает, что Ubuntu перестанет завершать приложения. Напротив, это остаётся нормальным способом восстановления системы при критическом дефиците памяти.
Упрощённо предполагаемый сценарий теперь выглядит следующим образом:
- операционная система фиксирует серьёзную нехватку доступной памяти;
- система определяет процессы и службы, которые могут быть завершены;
- критические компоненты рабочего стола получают дополнительную защиту;
- обычные приложения и фоновые процессы остаются более вероятными кандидатами на завершение;
- освободившаяся память возвращается системе, что позволяет продолжить работу графической сессии.
Это не делает Ubuntu защищённой от нехватки RAM
Важно понимать ограничение новой политики. Она не увеличивает физический объём оперативной памяти и не устраняет саму проблему OOM.
Если компьютеру постоянно не хватает RAM, приложения всё равно могут аварийно завершаться. Пользователь может потерять открытые документы, вкладки или незаписанные данные. В крайнем случае даже после новых настроек система может оказаться в состоянии, когда доступных ресурсов недостаточно для нормальной работы.
Разница заключается прежде всего в последствиях. Разработчики хотят, чтобы при критической ситуации система предпочитала потерять ресурсоёмкое приложение, а не компоненты, необходимые для функционирования рабочего стола.
В официальном объявлении Ubuntu разработчики подчёркивают, что это только первый этап работы. В следующих циклах планируется сделать политику ещё более детальной и разделить приоритеты между различными службами рабочего стола и приложениями.
Что такое OOM score и зачем он нужен
OOM score можно рассматривать как один из факторов, используемых ядром для определения подходящей цели при нехватке памяти. Для процессов Linux существуют параметры, влияющие на вероятность их выбора OOM killer.
Особое значение имеет /proc/<PID>/oom_score, где можно увидеть рассчитанную оценку конкретного процесса. Также существует параметр oom_score_adj, позволяющий изменять его относительный приоритет.
Чем выше итоговая вероятность выбора процесса, тем менее защищённым он является в ситуации OOM. И наоборот, процессы с более подходящими значениями могут получить дополнительную защиту.
При этом не стоит воспринимать OOM score как прямой рейтинг потребления памяти. Процесс, использующий больше RAM, не обязательно будет автоматически завершён первым. Именно поэтому корректная настройка приоритетов особенно важна для компонентов графического окружения.
Почему проблема особенно заметна на виртуальных машинах
Изменение может быть особенно полезно на виртуальных машинах и компьютерах с небольшим объёмом оперативной памяти. В виртуальной машине количество доступной RAM обычно жёстко ограничено настройками гипервизора.
Например, при выделении виртуальной Ubuntu всего нескольких гигабайт памяти запуск браузера с большим количеством вкладок, IDE, серверных компонентов и других программ может быстро создать значительное давление на память.
При этом пользователь ожидает, что будет закрыта наиболее ресурсоёмкая программа. Если вместо неё система завершает компонент рабочего стола, последствия выглядят намного серьёзнее, чем обычный OOM одного приложения.
Новая политика Ubuntu ориентирована именно на изменение такого поведения.
Когда изменения появятся в Ubuntu
Ubuntu 26.10 должна выйти 15 октября 2026 года. Изменения в обработке нехватки памяти уже включены в разрабатываемую версию системы и должны быть доступны для тестирования в бета-версии.
Разработчики отдельно призывают пользователей проверять новую логику на системах с ограниченным количеством RAM или swap и сообщать о неожиданных завершениях процессов и сбоях графической сессии.
Подробности о новой политике опубликованы в Ubuntu Community Hub.
Что это означает для обычного пользователя
Большинство пользователей Ubuntu, скорее всего, вообще не заметят новую политику в нормальных условиях. Пока свободной памяти достаточно, OOM killer и systemd-oomd не должны вмешиваться в обычную работу системы.
Изменения проявятся именно в экстремальных сценариях, когда компьютер практически полностью исчерпал RAM и системе необходимо срочно освободить ресурсы.
Для пользователя наиболее заметным результатом должно стать более предсказуемое поведение. Если одна программа начинает потреблять аномально большое количество памяти, вероятность её принудительного завершения должна быть выше, чем вероятность потери критического компонента графического рабочего стола.
Это особенно важно для GNOME Shell, D-Bus и других служб, от которых зависит нормальное функционирование пользовательской сессии.
Выводы
Ubuntu 26.10 получает не новый механизм управления памятью с нуля, а более продуманную настройку уже существующих инструментов. Разработчики меняют приоритеты процессов таким образом, чтобы критические службы рабочего стола были лучше защищены от OOM killer.
Ключевыми изменениями становятся снижение OOM score для важных компонентов рабочего стола, сохранение более высокого приоритета завершения для обычных приложений и отказ от автоматического убийства пользовательской сессии через systemd-oomd в соответствующем сценарии.
При этом Ubuntu не становится «неубиваемой» при нехватке памяти. Если физической RAM и swap недостаточно, приложения всё равно могут завершаться. Главная задача новой политики — сделать последствия такого дефицита более контролируемыми: лучше потерять проблемное приложение, чем весь графический сеанс.
Разработчики Ubuntu рассматривают это как первый шаг. В дальнейшем политика OOM должна стать более детальной, с различными уровнями защиты для отдельных служб рабочего стола и приложений. Поэтому Ubuntu 26.10 можно рассматривать не как окончательное решение проблемы, а как основу для дальнейшего улучшения поведения системы при экстремальной нагрузке на память.
Часто задаваемые вопросы
OOM killer — механизм ядра Linux, который при критической нехватке памяти выбирает процессы для принудительного завершения, чтобы освободить RAM и не допустить полной остановки системы.
В определённых конфигурациях важные компоненты рабочего стола могли иметь недостаточно защищённые значения OOM score. Поэтому при нехватке памяти они могли стать кандидатами на завершение наряду с обычными приложениями.
Критические службы рабочего стола получат более низкие OOM score и, соответственно, дополнительную защиту. Обычные приложения и фоновые процессы будут оставаться более вероятными кандидатами на завершение.
Systemd-oomd — пользовательский сервис systemd, который отслеживает давление на память и может принимать меры по освобождению ресурсов до или независимо от классического OOM-сценария ядра.
Нет. Приложения по-прежнему могут быть принудительно завершены, если системе требуется срочно освободить память. Изменяется преимущественно приоритет выбора процессов.
Нет. Новая политика снижает вероятность разрушения рабочего сеанса, но не устраняет физическое ограничение объёма памяти. При экстремальной нагрузке приложения всё равно могут завершаться, а система может испытывать сильные задержки.
Официальный релиз Ubuntu 26.10 запланирован на 15 октября 2026 года. Изменения в политике обработки нехватки памяти доступны в текущей разрабатываемой версии и должны присутствовать в тестовых сборках перед релизом.
Да. Systemd-oomd поддерживает конфигурацию через oomd.conf и параметры управления ресурсами systemd. Однако изменение таких настроек без понимания cgroups, memory pressure и OOM-механизмов может привести к неожиданному поведению системы.
Дополнительная техническая информация доступна в документации Ubuntu по systemd-oomd и в документации по управлению ресурсами systemd.
