Утечка памяти в Linux?

Использую Debian testing с KDE в качестве основной системы и столкнулся с такой проблемой. Запускаю вроде бы совсем немного: Firefox (30-40 вкладок), vscode(3-4 окна), docker и иногда Discord. В компьютере 16 гб оперативной памяти, но ее не хватает, так как где-то утечка памяти, но где именно, понять не могу. Симптомы такие: при активном серфинге в интернете и просто долгой работы на компьютере, заканчивается оперативная память, то что происходит далее зависит от настроек: если включен swap, то начинает съедаться он и система начинает адски торомзит, так как (согласно iotop) начинается бешенное чтение/запись на диск, индикатор загруженности диска горит вообще не переставая, работать становится практически невозможно, приходится перезагружаться. Если же swap отключен то после того как кончится оперативка компьютер просто намертво зависает и далее либо срабатывает oom-killer либо приходится аварийно перезагружаться. Я заметил что оперативку больше всего съедают firefox или дискорд, а если долго работать, то после их закрытия больше других программ не остается и видно что около 6 гб съедают kwin и plasmashell. Еще очень похоже, что firefox не освобождает память, так как после закрытия большого числа вкладок объем используемой памяти не меняется и освобождается только после закрытия.

В тоже время на этом же компьютере на другом диске (1 ТБ HDD) стоит Windows 10 на которой таких проблем нет. Там открыто (извините за подробности): Chrome (70+ вкладок), LabView, vscode, Telegram, Discord, Garry's mod и еще куча мелких программ и это все съедает максимум 10-11 гб оперативки и редко когда больше; после закрытия все нормально освобождается, перезагружаться практически не приходилось (разве что после обновлений). Единственное, что там HDD и поэтому иногда подтормаживает, но работать можно.

Конфигурация компьютера

  • Процессор: Intel Core i9 9900k
  • Материнская плата: Gigabyte Z390 Gaming x
  • SSD: Samsung evo plus 250 ГБ, на нем стоит Linux
  • Оперативная память Patriot 2x8 Гб
  • HDD Seagate barracuda 1 ТБ, большая часть используется под /var, и /home поровну, еще 30гб под swap
  • Гибридный HDD Seagate 1 ТБ, на нем стоит Windows

  • Вопрос задан
  • 1442 просмотра
Пригласить эксперта
Ответы на вопрос 5
DamianLewis
@DamianLewis
Мой ответ не совсем решения вопроса, но я бы для начала сделал так, чтобы swap задействовался только при загруженности ОЗУ на 95%. По умолчанию swap используется когда ОЗУ забито на 60%. В вашем случае это получается когда 9гб забито, подключается swap и начинаются тормоза. Для начала проверьте, какое значение имеет swap.
Введите в терминале sudo sysctl vm.swappiness
Обычно он покажет значение 60

Чтобы swap задействовался при занятости ОЗУ 95%, надо ввести:
sudo sysctl -w vm.swappiness=5

Но он дает эффект лишь до перезагрузки. Чтобы значение оставалось постоянным, надо занести данные в /etc/sysctl.conf
Так как у вас kde и текст.редактор kate, введите в терминале: sudo kate /etc/sysctl.conf
Ну и занести туда под конец vm.swappiness = 5
Если там уже есть параметр vm.swappiness, просто поменяйте значение на 5
Именно через пробел после vm.swappiness и пробел после =

Во вторых можно начать использование zram. Читал где-то, что в Ubuntu-based дистрибутивах можно просто установить zram и оставить настройки по-умолчанию. Т.е. настраивать ничего не надо. Именно так и сделал. Вводим sudo apt install zram-config
Теперь надо перезагрузить систему. На этом всё.

При использовании виртуальных машин очень выручили 2 вот этих изменения в системе.
Ответ написан
Комментировать
BorLaze
@BorLaze
Java developer
Использую Debian testing

Сначала ставим тестовую сборку, а потом удивляемся косякам...

Поставь stable - я более чем уверен, что все придет в норму.
Ответ написан
dyuriev
@dyuriev
A posteriori
Сравнение с Windows не корректно по куче причин, но главная из них - в Windows 10 System and compressed memory активировано по умолчанию

Чтобы ваше сравнение было более менее объективно - воткните swap в zram

sudo apt install zram-tools
затем поправьте /etc/defaults/zramswap (задайте размер раздела в процентах или мегабайтах, гляньте комменты в файле, все поймете, 50% для десктопа вполне стабильно себя ведет)
и рестартаните службу
sudo systemctl restart zramswap

если кратко описать, что произойдет - в оперативной памяти появится блочное устройство, данные при записи(чтении) в которое будут сжиматься(разжиматься) в реалтайме, сжатие по дефолту lz4, что достаточно быстро

в это блочное устройство будет смотрирован раздел подкачки.
достаточно грязный, но действенный трюк

PS: и поставьте htop и там отлавливайте что у вас оперативу утилизирует
Ответ написан
Viktor_T2
@Viktor_T2
python developer
Хочу вас удивить ребята, AMD Athlon 64 X2 Dual Core, 4 гига оперативки, диски - HDD.
Это жуткое старьё. Пользуюсь каждый день. Firefox 150 вкладок - даже не чихает,
300-400 вкладок запускается с ощутимыми тормозами. VS-Code запускается, работает сносно.
Телега вобще без проблем. Юзал слак - приложение, работает тормозно, но пользоватся можно.
Линукс debian, opensuse, рабочий стол xfce.
Ответ на твой вопрос - что-то у тебя течет, сто пудов, ищи что течет.
Своп в линуксе хреновый, до этого лучше не доводить.
16 гигов это вполне достаточно памяти для десктопа.
Ответ написан
@urydmi
этот баг ещё не пофиксили
https://bugs.kde.org/show_bug.cgi?id=403563
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы