LINUX.ORG.RU

Linux ate my RAM - 2

 , , , ,


3

3

Имею такую ситуацию:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:          64290       17887       17917       18909       28485       26785
Swap:         24147       21572        2575

При этом в топе всего штук 50 процессов с потреблением памяти больше 10 Мб, и они вместе съели максимум 5 Гб памяти. Всего процессов штук 500, и не похоже чтобы лишние гигабайты были размазаны по ним тонким слоем. Отдельный вопрос про своп: неужели все это память, выделенная каким-то процессам? Где-то же должно быть написано кто это все сожрал.

Где память?

Fedora 31, kernel-5.8.18, KDE



Последнее исправление: Zeta_Gundam (всего исправлений: 1)

fedora и redhat в теги, это их характерные баги, пусть придут их юзеры, может они в курсе. Вероятно логи в tmpfs протекли.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

Ну на tmpfs первым делом были подозрения, раз в процессах пусто.

utanho ★★★★★
()

Подпишусь-ка я на эту тему...

Не буду корчить из себя гуру по памяти в Линукс, но tmpfs которые потенциально могут занять всю память я бы сразу ограничил. Если предположить, что всего 32 Gb оперативы, то всем tmpfs суммарно я бы не дал больше 24Gb. Ну, и, если это десктоп, то с такими объемами памяти swappiness 5% cамое то, ИМХО. Но это всё не корень проблемы.

btrfs, насколько я знаю, может потреблять много памяти. Рекомендую присмотреться к вот этому: https://wiki.gentoo.org/wiki/Btrfs/en#Btrfs_hogging_memory_.28disk_cache.29

Kroz ★★★★★
()
Ответ на: комментарий от kirill_rrr

…И вот во что это вылилось:

Все 30 гигабайт shared memory освободились когда я разлогинился из плазмы, также ушли все занятые 10 Гб свопа, used memory снизилась с 25 до 22 Гб.

Далее я поубивал оставшиеся пользовательские процессы, остановил sddm, сетевые и прочие сервисы, назначение которых примерно себе представлял, отмонтировал все разделы, которые смог (включая /home на btrfs)… Used memory осталось 21 Гб, и вот с этими гигабайтами сделать уже больше ничего не удалось.

Мне предсказуемо не дало выгрузить модуль amdgpu, также я не придумал как отмонтировать корень, который тоже на btrfs.

Пока перезагрузился, но думаю что через несколько дней ситуация повторится.

Zeta_Gundam
() автор топика
Последнее исправление: Zeta_Gundam (всего исправлений: 1)
Ответ на: комментарий от Zeta_Gundam

процессов штук 400 прямо после загрузки

Это какой-то 3.14-здец! Что-то десктопный Linux совсем разжирел… ☺

$ ps -ax | grep kworker | wc -l
123
# ps -axo command | grep '^\[' | wc -l
      45

@utanho, ↑

mord0d ★★★★★
()
Ответ на: комментарий от Zeta_Gundam

Корень отмонтировать нельзя, насколько я знаю. А выгрузить модуль видеодрайвера иногда возможно. По крайней мере на nvidia с блобом при остановленном Х.

Вспомнил, корень нельзя отмонтировать, но его можно перемонтировать. Никогда не делал и не интересовался, но где то наверное упоминается. Например распаковать на какую нибудь флешку initrd и перемонтировать его как корень. Если получится, то полностью исключатся баги бтрфс.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от Zeta_Gundam

Ну, думаю можно объявить официальной рабочей версией что дело в утечке памяти видеодрайвера и/или плазмы. Что теперь с этим делать - хз. Не нвидиа, драйвер не поменять. Но вот заменить плазму на примитивный WM без эффектов и пострадать ради эксперимента пару дней?

kirill_rrr ★★★★★
()
Ответ на: комментарий от Zeta_Gundam

У тебя там akonadi с mysql выжирает сколько, gvfs, cups, система не чищена, понятно что памяти завались, но нужно ли всё это тебе. Линукс он как слон, сколько не дай - съест всё.

anonymous
()
Ответ на: комментарий от peregrine

Глаза открой, я имел ввиду всякие демоны/сервисы, которые подлежат как mask, так и чистому purge*, но кому я рассказываю, фанату systemd и ibm.

anonymous
()
Ответ на: комментарий от anonymous

Так, systemd не плох, хотя и не юниксвейный (но лучше портянки что была до него). А когда я в фаны ibm заделался?

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

не юниксвейный

Во-первых, он более юниксвейный, чам всё, что было до него (напоминаю, что. например, одним из принципов оригинально юниксвея является избегание скриптов). Во-вторых, единственное хорошее, что есть в юниксвее — что он мёртв уже десятилетия.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

Пульсу выкинули на мороз, выкинут и это, CentOS тому яркий пример. От коммерческого Unix, до открытого и обратно, круговорот unix в природе.

anonymous
()
Ответ на: комментарий от anonymous

Заеюи колегги. Вместо то того , чтобы помочь ТС разводят бадягу в его топике.

Bootmen ☆☆☆
()
Ответ на: комментарий от kirill_rrr

Ну, думаю можно объявить официальной рабочей версией что дело в утечке памяти видеодрайвера и/или плазмы.

Согласен.

Но вот заменить плазму на примитивный WM без эффектов и пострадать ради эксперимента пару дней?

Что-то радикально менять на этой машине тяжело, потому что я на ней постоянно делаю работу.

Наверное когда-нибудь эти утечки починят, может быть со временем я обновлюсь на следующий релиз федоры. Но сейчас хотелось бы найти инструмент диагностики, который максимально точно покажет виновника.

Zeta_Gundam
() автор топика

Еще из интересных деталей: shared как-то раз приросла скачком во время сна, т.е. первые пару дней после загрузки она ходила в пределах нескольких сотен Мб, потом однажды 248 Мб -> suspend to RAM -> 10765 Мб, и дальше начала гулять уже гигабайтами.

Zeta_Gundam
() автор топика
Ответ на: комментарий от Bootmen

Это kscreenlocker_greet, конечно. Если разбираться, то я частенько замечал за ним выжирание одного ядра CPU, но потребление памяти всегда остается в пределах сотен Мб.

Zeta_Gundam
() автор топика
Ответ на: комментарий от anonymous

Левые сервисы вроде cups вроде бы не так много отъедают, все это вопрос одной-двух сотен Мб. Понятно, что кедам неплохо бы похудеть на нолик. Все что можно было отключить через GUI я уже отключил, аконади из системы не выдрать… надо будет посмотреть что еще можно сделать, но вообще я не сторонник сверх-глубокой настройки DE.

Zeta_Gundam
() автор топика
Ответ на: комментарий от gremlin_the_red

У вас какой то неправильный юниксвей. В правильном скрипты нужны для связывания кучи мелких, простых и качественных инструментов между собой для получения требуемого резултата максимально простым и удобным образом. А всё хорошее что в нём есть это гибкость, простота и понятность.

kirill_rrr ★★★★★
()
Ответ на: комментарий от Zeta_Gundam

К сожалению не представляю где искать такой инструмент.

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

У вас какой то неправильный юниксвей

Это не у меня, это у Ричи и Томпсона.

скрипты
максимально простым и удобным образом

У вас тут деление на ноль затесалось.

А всё хорошее что в нём есть это гибкость, простота и понятность

В описании философии Юникса его создатели не использовали ни одно из этих слов.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

одним из принципов оригинально юниксвея является избегание скриптов

У вас какой то неправильный юниксвей

Это не у меня, это у Ричи и Томпсона.

Нет, именно у вас.

Так как в основе нормального unix-way лежит создание маленьких программ и использование их вместе для достижения нужного результата, что делается с помощью скриптов. А Майк Ганцарз даже напрямую упоминает скриптовые языки.

Читать до просветления: https://en.wikipedia.org/wiki/Unix_philosophy

И systemd как раз нарушает эти принципы - не маленький, не модульный, не всегда использует текст где можно было бы.

Во-вторых, единственное хорошее, что есть в юниксвее — что он мёртв уже десятилетия.

С точностью до наоборот: Unix Way сейчас живее всех живых.

Присмотритесь к современным трендам. Контейнеризация и FaaS - маленькие программы, которые делают что-то одно. Облачные технологии - посмотрите как в AWS собирают нужное решение комбинируя разные сервисы. Да и текстовые форматы сейчас полным ходом, тот же JSON.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

что делается с помощью скриптов
https://en.wikipedia.org/wiki/Unix_philosophy
Interactive use instead of batch processing

Что с тобой не так?

systemd как раз нарушает эти принципы - не маленький, не модульный, не всегда использует текст где можно было бы

Маленький, модульный, использует текст везде, где это имеет смысл. Что с тобой не так?×2

gremlin_the_red ★★★★★
()
Ответ на: комментарий от bryak

зомби это не настоящий процесс, он не принимает сигналов. он это просто заглушка в таблице процессов для хранения кода возрата

anonymous
()
Ответ на: комментарий от anonymous

чтобы их не нужно было парсить, как текстовые

Ты хотел сказать «чтобы их невозможно было парсить как текстовые»?

Текстовые логи ты можешь прочитать где угодно и чем угодно, для чтения логов systemd тебе нужен systemd. Вендор-лок.

mord0d ★★★★★
()
Ответ на: комментарий от anonymous

там подавляющая часть это потоки ядра

«Там» — это где? У меня не Linux, если что.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

нет, я сказал что хотел. бинарный файл имеет определённую структуру, и следуя ей ты можешь его прочитать. дополнительная обработка в виде парсинга/грепа как для текстовых не нужна

anonymous
()
Ответ на: комментарий от anonymous

бинарный файл имеет определённую структуру, и следуя ей ты можешь его прочитать.

То есть вместо использования простых утилит ты предлагаешь писать декодер?

дополнительная обработка в виде парсинга/грепа как для текстовых не нужна

Да-да-да, гораздо проще написать декодер, конечно-конечно.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

разумеется проще, ведь структура бинарного файла гораздо проще, чем текстогвого. кроме того писать ничего не нужно, тк всё уже написано

anonymous
()
Ответ на: комментарий от mord0d

а вот для текстового как раз всегда приходится писать километровые «однострочники», чтобы выгрепать что-то там в очередной раз

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.