- Вопрос или проблема
- Ответ или решение
- Как остановить gjs от неограниченного потребления RAM в Ubuntu 24.04.1 LTS
- 1. Анализ проблемы
- 2. Установите более свежую версию gjs
- 3. Отключение или значительное снижение активности gjs
- 4. Деактивация сервиса gjs
- 5. Использование альтернатив
- 6. Сообщите о проблеме
- Заключение
Вопрос или проблема
Мое обновление Ubuntu 24.04.1 LTS с Ubuntu 22.04 на ноутбуке DELL XP13 7390 продолжает аварийно завершаться примерно каждый час. Я пытался отключить приложения в попытке изолировать виновника. Сегодня я наконец-то его нашел, наблюдая в htop
и просматривая файлы syslog
, фильтруя по ключевым словам oom
и error
.
Утечка памяти происходит из gjs
, проекта привязок JavaScript для Gnome (https://gitlab.gnome.org/GNOME/gjs). Когда я завершаю его процесс, использование памяти резко падает — с почти 15 ГБ до базового уровня в 5 ГБ с работающим Firefox и терминалом. Я вижу, что gjs
почти сразу перезапускается, это делает сервис GNOME, и я снова могу наблюдать, как память растет без ограничений до следующего сбоя, если только я не убью gjs
снова.
Что я могу сделать, чтобы остановить эту программу навсегда? Может быть, какой компонент или сервис GNOME мне нужно деактивировать и отключить? Эти вопросы не касаются того, что я вижу:
- Высокий % ЦП на gnome-shell приводит к неотвечающему компьютеру
- POP desktop: Что это за процесс ‘gjs’, который занимает так много памяти и ЦП?
Запись syslog
, которая постоянно появляется незадолго до сбоя:
2024-12-13T15:05:16.696376-07:00 XPS13 kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=user.slice,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1000.slice/[email protected]/session.slice/[email protected],task=gjs,pid=40652,uid=1000
2024-12-13T15:05:16.696377-07:00 XPS13 kernel: Out of memory: Killed process 40652 (gjs) total-vm:13655956kB, anon-rss:9697484kB, file-rss:340kB, shmem-rss:0kB, UID:1000 pgtables:24892kB oom_score_adj:100
Любая помощь с Gnome была бы очень полезна. Версия gjs
— 1.80.2.
Ответ или решение
Как остановить gjs от неограниченного потребления RAM в Ubuntu 24.04.1 LTS
Проблема, с которой вы столкнулись, связана с утечкой памяти в процессе gjs (Gnome JavaScript bindings), что приводит к постоянным сбоям системы. Рассмотрим несколько подходов, которые помогут вам решить эту проблему.
1. Анализ проблемы
Сначала важно подтвердить, что проблема действительно связана с gjs. Вы уже использовали htop
и просмотр журналов (syslog
), что является отличным подходом. Убедитесь, что в журнале не появляются другие сообщения об ошибках, так как это может помочь выявить дополнительные проблемы, которые способствуют утечке памяти.
2. Установите более свежую версию gjs
Поскольку ваша версия gjs — 1.80.2, рекомендуется проверить наличие обновлений. Иногда разработчики решают подобные проблемы в более новых версиях. Вы можете обновить систему следующим образом:
sudo apt update
sudo apt upgrade
Если в стандартных репозиториях нет новой версии, вы можете попробовать установить gjs из PPA (Personal Package Archive) или собрать его из источников. Убедитесь, что у вас есть необходимые зависимости:
sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt update
sudo apt install gjs
3. Отключение или значительное снижение активности gjs
Если обновление не решит проблему, вы можете рассмотреть возможность отключения функций, вызывающих чрезмерное использование памяти.
-
Отключение расширений GNOME: Некоторые расширения могут вызывать проблемы с производительностью. Отключите все расширения и проверьте, уменьшилось ли использование памяти. Затем включайте их по одному, чтобы определить, какое из них вызывает утечку.
-
Отключение функций GNOME: Для уменьшения нагрузки на gjs можно отключить некоторые функции GNOME, такие как анимации или дополнительные рабочие столы, в настройках системы.
4. Деактивация сервиса gjs
Если проблема не исчезает, вы можете временно отключить отдельные сервисы, зависящие от gjs. Изучите, какие службы используют gjs, и попробуйте их отключить:
# Узнайте, какие службы используют gjs
systemctl list-units | grep gnome
Отключите службу:
systemctl --user stop имя_сервиса.service
systemctl --user disable имя_сервиса.service
5. Использование альтернатив
Если никакие из вышеперечисленных решений не помогают, возможно, стоит рассмотреть использование альтернативной графической среды, такой как XFCE или KDE, которые могут быть менее ресурсоёмкими.
6. Сообщите о проблеме
Разработка gjs – это активное сообщество. Вы можете сообщить о найденной вами утечке памяти в репозиторий gjs на GitLab, что поможет разработчикам выявить и исправить проблему.
Заключение
Проблема с утечкой памяти в процессе gjs может быть вызвана различными факторами и требует многостороннего подхода к её решению. Следуйте нашим рекомендациям, чтобы сократить использование памяти gjs и, возможно, устранить сбои в системе. Если потребление памяти всё ещё вызывает беспокойство, рекомендуется обратиться в сообщество Ubuntu или на форумы по поддержке, чтобы найти дополнительные решения.