Назад | Перейти на главную страницу

Не могу объяснить занятость памяти в Linux

Я работаю над debian 9.3, free возврат команды

              total        used        free      shared  buff/cache   available
Mem:      131940516   100433176    29189576       33940     2317764    30413920
Swap:     124999676        7736   124991940

итак ≃ 22% свободной памяти, но 4-й столбец ps aux --sort -rss в сумме до 20,9 (% используемой памяти)

cat /proc/meminfo | sort -k2,2nr верни это

VmallocTotal:   34359738367 kB
CommitLimit:    190969932 kB
MemTotal:       131940516 kB
SwapTotal:      124999676 kB
SwapFree:       124991940 kB
DirectMap2M:    94552064 kB
DirectMap1G:    40894464 kB
Committed_AS:   31307212 kB
MemAvailable:   30854080 kB
MemFree:        29629760 kB
Active:         28760588 kB
AnonPages:      28192300 kB
Active(anon):   27489640 kB
Slab:            3245360 kB
SUnreclaim:      2746444 kB
Cached:          1735180 kB
Active(file):    1270948 kB
Inactive:        1252084 kB
DirectMap4k:      788164 kB
Inactive(anon):   738148 kB
Inactive(file):   513936 kB
SReclaimable:     498916 kB
Buffers:           83652 kB
PageTables:        62240 kB
Mapped:            47016 kB
Shmem:             33940 kB
KernelStack:       32352 kB
Hugepagesize:       2048 kB
SwapCached:         2004 kB
Dirty:                36 kB
AnonHugePages:         0 kB
Bounce:                0 kB
HardwareCorrupted:     0 kB
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
HugePages_Total:       0
Mlocked:               0 kB
NFS_Unstable:          0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
Unevictable:           0 kB
VmallocChunk:          0 kB
VmallocUsed:           0 kB
Writeback:             0 kB
WritebackTmp:          0 kB

Какой процесс занимает мою память?

MemAvailable:   30854080 kB

Не совсем 29 ГБ доступно без подкачки памяти. Если вы ничего не измените, эта рабочая нагрузка не будет испытывать нехватку памяти. Фактически, поскольку большая часть из них - это MemFree, она «тратится впустую», даже не используется для кеширования файлов.

Хотя это хороший индикатор рабочего набора в памяти, суммирование RSS будет неточным. RSS - это недавние страницы, независимо от того, опубликованы они или нет. В Linux будет только одна копия общих страниц.

На самом деле использование памяти для каждого процесса при справедливом обращении с общими страницами раздражает. smem - это инструмент, который пытается сделать это, анализируя каждое отображение памяти в / proc / $ pid / smaps