@Iskatel_S
Пытался исследовать проблему при помощи таких инструментов как /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