LINUX.ORG.RU

Анализ RAM, или кто swap-ит и жрет cache-page.

 , ,


0

4

Добрый день. Уже месяц пытаюсь понять, почему RAM free 3-5%. система со временем начинает свопить. Mint 22.1 cinnamon. миниПК с intel 5095. используется как бродилка по инету через хром, nextcloud+mariaDB+apache, правда 200гб облако и ок.100тыс. файлов. из мелочи: home assist, webmin. ранее было 8 гб DDR4, used 30-40%, cache 50-60% процентов, free 3-5%, и постепенно забивало swap. 3-5 гб в среднем. Увеличил до 16 гб. free уменьшился до 20-23%, остальное кэш и опять же начинает свопить.Грешил на хром, но по top не так и много занимает. Если память процессов можно посчитать но кэш уже считается общим, и к какому процессу его отнести понятно. Пытаюсь играть с параметром vm.swappiness, но все равно это полумера, так, загоянет проблему под плинтус. Какие есть методы анализа cashe-page, почему система свопит, при памяти used 20-30% и кто как это решает? Из запущенных только chrome, консоль, evolution. Ну и плюс nextcloud, apache, webmin,HASS

Задачи: 388 total,   1 running, 387 sleeping,   0 stopped,   0 zombie
%Cpu(s): 10,6 us,  4,6 sy,  0,4 ni, 83,6 id,  0,6 wa,  0,0 hi,  0,1 si,  0,0 st 
МиБ Mem :  15836,2 total,   1063,0 free,   5818,4 used,  10501,6 buff/cache     
МиБ Swap:  15798,0 total,  15666,2 free,    131,8 used.  10017,8 avail Mem ```


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

так это полумера. Свопить не будет, но кто кэш забивает не найду. Процессор в простое 5-10%, в логах апача так же пусто. Не видно такой активности, что бы память грузить. Когда синхронизацию nextcloud запускаю webdav, тогда нагрузку по системе вижу, по прчине работы mariaDB, 6 часов синхронизации. но по использованию памяти прироста не заметно.

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

Поступил так:

vm.swappiness=1
vm.min_free_kbytes=1000000

Проблему конечно решит. Но причину так не найду. Возможно кто пытался более глубоко разобраться по использованию памяти в linux. Буду очень раз почитать ваше мнение

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

Это просто статистика. А мне интересно, почему кэш почти вся память. (до именения параметров min_free 1-3%). И зачем свопит, если занятой памяти не более 50%, а при 16 гб =25-35%. Плюс уже вопрос по безопасности, какого х, какая то память с свободном доступе болтается, не привязанная ни к какому процессу?

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

Если ты считаешь что у тебя слишком много памяти (ну раз тебя беспокоит большой кэш и свободная память), то вынь из своего севера 8 гигов, а лучше 12. Сразу станет меньше свободной памяти, меньше кэшей и появится причина для свопа.

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

Ты так и не ответил, в чём проблема.

Дисковый кеш забивает всю память, это норма. Ты память поставил, она будет использоваться. Это не является проблемой, это является достоинством.

В своп копируются страницы, которые давно не использовались. Это тоже не является проблемой, это является достоинством, т.к. соответствующие страницы в памяти будут доступны программам, если это потребуется.

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

vbr ★★★★★
()

free — вобще как-бы не особо. Если вам интерестно, что происходит, изучайте /proc/meminfo, причём, лучше в динамике, первый раз сдампить в файл сразу после загрузки системы и дальше смотреть, сравнивать, какие показания заметно изменяют.

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

tmpfs не засирается какими-то файлами?

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

tmpfs пустые. С установкой 16 гб ситуация лучше, но удивляет, что при параметрах держать 10% free, used 30-35%, за 2 суток swap уже набежал 5%. Кочено я понимаю, что это не проблема, а просто такая логика работы ядра с памятью. Но как посмотреть, какие данные в cache и swap система хранит по процессам так и не нашел. Просто для общего понимания логики работы.

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

какие данные в cache и swap система хранит

«Какие» — странный вопрос. Ядро не выгружает в swap какие-то данные процесса целиком, просто странцы памяти, ему без разницы что там. Через /proc/PID/*map* (не помню точное имя файла) можно узнать какие страницы процесса в swap'е, далее, вроде, как-то можно их сдампить, но что вам это даст, там будет мешанина байт и понять что хранит тот или иной процесс по тому или иному адресу довольно сложно.

Есть команда smem, которая показывает сколько swap занято тем или иным процессом. Есть команда pmem, которая показывает, какие библиотеки и пр. в адресном пространстве процесса.

По кешу, насколько я знаю, пока есть утилиты, показывающие только для конкретных файлов насколько они закешиованы (vmtouch, fincore, pcstat). Полный список всех файлов в кеше, вроде как, получить нельзя.

С установкой 16 гб ситуация лучше

Вы бы суммарный RSS процессов сравнили, раньше и теперь.

Сколько shmem в /proc/meminfo?

mky ★★★★★
()

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

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

kirill_rrr ★★★★★
()

почему система свопит, при памяти used 20-30%

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


Как всегда приходит человек, не имеющий никакого понятия о подсистеме памяти, и задаёт вопрос, кто крадёт его РАМ и кидает в ненавистный своп, доколе.

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

В своп копируются страницы, которые давно не использовались. Это тоже не является проблемой,

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

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

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

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

кто крадёт его РАМ и кидает в ненавистный своп

Вот что на моем компе с которого это пишу:

 free -h
     total    used        free      shared  buff/cache   available
Mem: 3.8Gi    651Mi       1.9Gi     139Mi   1.2Gi        2.6Gi
Swap:3.9Gi    0B          3.9Gi

И никакого свопа. Настройки свопа не крутил. Запущен почтовик и браузер. Если комп поработает десяток-другой часов то free станет поменьше,а buff/cache побольше,но своп всё равно будет пустой.

watchcat382
()

и постепенно забивало swap

В своп вытесняются те страницы памяти которые были использованы, но к которым мало обращения. То что на данный момент не используется короче.

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

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

А у меня без специальных настроек своп был всегда ненулевой. И только в самых последних ядрах стал нулевой. Что-то сломали, очевидно. Я грешу на zswap.

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

У меня Дебиан 11. В нем сначала были ядра 5.Х потом стали 6.Х. Единственно что заметное сломали - комп стал выключаться через раз. То есть нередко при shutdown система останавливается, но питание не выключается. На 5.Х такого небыло на этом же компе. Использовать zswap я не пробовал - как-то надобности не возникало. Этот комп у меня именно что для «легких» задач, почты и интернета. Для тяжелых расчетов есть другой,но требуется не сказать чтобы часто. Я даже схемы в KiCAD на этом рисую.

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

Это уже новые ядра. Посмотри на 3.x, например, как работало.

Вот наглядный пример с двух серверов:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        6.5G        1.3G        1.6G         23G         22G
Swap:           23G        757M         23G

$ uname -r
3.10.0-1160.88.1.el7.x86_64
$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.8Gi       4.1Gi       217Mi       316Mi       4.1Gi       3.7Gi
Swap:             0B          0B          0B

$ uname -r
6.1.0-37-cloud-amd64

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

Не могу похвастаться тем же.

free -h
               total        used        free      shared  buff/cache   available
Mem:            29Gi        16Gi       5.7Gi       327Mi       9.0Gi        13Gi
Swap:           31Gi       4.5Gi        27Gi

Ниже (хотя это уже выше) верно уточнили, что на 6 ядре внесли крупные изменения, но это ни как не могло и не было должно отменить своп. У ОПа же классическая свопобоязнь. Как я писал, она борется обычным, копеешным, советским… zram

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

Открыто озон+авито+вк+2gis+lor

Браузер Vivaldi 3.8.2259.42 Ядро 6.1.0-0.deb11.21-686-pae

 free -h
     total     used        free      shared  buff/cache  vailable
Mem: 3.8Gi     1.2Gi       1.3Gi     374Mi       1.3Gi   1.8Gi
Swap:3.9Gi       0B        3.9Gi

А это кусок выдачи top:

   VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                    
  794740 150164  84980 S   2.3   3.8   0:26.88 vivaldi-bin                                
  556980 169612  93768 S   2.3   4.3   0:35.00 vivaldi-bin                                
  977024 272956 139256 S   2.0   6.9   0:43.62 vivaldi-bin                                
  479348 135816  91196 S   2.0   3.5   0:11.55 vivaldi-bin                                
  573688 141320  77984 S   0.7   3.6   0:29.24 vivaldi-bin                                
  733480 216376  99320 S   0.7   5.5   0:21.66 vivaldi-bin                                
  432200 100288  75992 S   0.3   2.5   0:05.78 vivaldi-bin                                
  572416 186264  97244 S   0.3   4.7   0:10.95 vivaldi-bin                                
  768844 229828  97456 S   0.3   5.8   0:12.25 vivaldi-bin     

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

У меня вся система 32-битная так как нет задач где 64-битность давала бы какие-то видимые преимущества. А вот видимые недостатки - да. В том числе и по потреблению памяти. Но больше это связано с необходимостью 32-битного софта.

watchcat382
()