Как понять на что расходуется память в linux?



@Iskatel_S

Есть процесс, который по данным top потребляет 13,5% оперативной памяти. Однако по данным free используется памяти — 67,2%. Как понять куда ушла остальная память?

Пытался исследовать проблему при помощи таких инструментов как /proc/meminfo, /proc/PID/status, free, top, smem.
Что мы имеем: занятую процессами память считаю по данным из /proc/meminfo по формуле MemTotal-Free-Cached-Buffers-Slab, получается та же величина, что показывает free в строке used, где-то 67,2% в отношении к MemTotal, при этом эта величина увеличивается со временем, память «течёт», но я не могу понять где именно течёт: в каком-то процессе или в ядре.
Если исследовать процессы, то вот top мне показывает 3 столбца: VIRT, RSS и SHR, память каждого процесса состоит из RSS и SHR, но поскольку SHR — это разделяемая память, используемая одновременно несколькими процессами, то суммировать эти столбцы нельзя. Тогда я вместо top использовал smem, который вычисляет такую величину как PSS — пропорциональная память, которую уже можно суммировать, также smem умеет вычислять сумму всех процессов в процентах, так вот он мне показал — 16,2% в то время как free говорит, что занято 67,2, вопрос — куда ушли оставшиеся 51%?


Решения вопроса 0


Ответы на вопрос 4



@unseriously

не благодари:

ps axo rss,comm,pid | awk '{ proc_list[$2] += $1; } END { for (proc in proc_list) { printf("%dt%sn", proc_list[proc],proc); }}' | sort -n | tail -n 10 | sort -rn | awk '{$1/=1024;printf "%.0fMBt",$1}{print $2}'



@Andrew_Pinkerton



@vitaly_il1

Покажите, пож-ста

— free -m
— top -b -o +%MEM | head -n 25



@lada-guy

По мне дак более удобен htop.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *