Рейтинг:0

/proc/meminfo shows MemFree greater than MemAvailable - Does it make sense?

флаг in

From what I could understand from this change in Linux reported memory usage, /proc/meminfo reports MemFree as currently unused RAM, and MemAvailable as RAM currently available to new processes without swapping.

From this, shouldn't MemFree be contained in MemAvailable, thus being always less or equal than it? I guess unused RAM is also available to new processes without swapping. Or am I misunderstanding the "Free memory cannot be taken below the low watermark" (4th chunk from patch) part?

These values match, as expected, free and top outputs.

I saw this in an Exadata virtual machine with these specs:

cat /etc/oracle-release 
Oracle Linux Server release 7.8

uname -r
4.14.35-1902.306.2.1.el7uek.x86_64

rpm -q sysstat
sysstat-10.1.5-19.el7.x86_64

Full /proc/meminfo at an arbitrary moment, if it helps:

MemTotal:       19995464 kB
MemFree:         2963684 kB
MemAvailable:    1063344 kB
Buffers:          406124 kB
Cached:          2609256 kB
SwapCached:         9648 kB
Active:          4632640 kB
Inactive:        2348256 kB
Active(anon):    3882372 kB
Inactive(anon):   700524 kB
Active(file):     750268 kB
Inactive(file):  1647732 kB
Unevictable:      634040 kB
Mlocked:          634044 kB
SwapTotal:      16777212 kB
SwapFree:       16579068 kB
Dirty:              1684 kB
Writeback:             0 kB
AnonPages:       4592704 kB
Mapped:           384108 kB
Shmem:            484212 kB
Slab:             511064 kB
SReclaimable:     249660 kB
SUnreclaim:       261404 kB
KernelStack:       23184 kB
PageTables:        96648 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    24602016 kB
Committed_AS:    5737344 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:    2122
HugePages_Free:      590
HugePages_Rsvd:        1
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      833536 kB
DirectMap2M:    15943680 kB
DirectMap1G:     5242880 kB

Thanks,
Emerson

флаг jp
Формула для MemAvailable находится в коде, на который вы ссылаетесь.
флаг in
@AlexD Да. Проблема в том, насколько я понимаю, исходя из этой формулы, возможно ли иметь больше доступной оперативной памяти, чем свободной?
флаг jp
`доступно = i.freeram - wmark_low`. Это означает, что значение, изначально присвоенное `MemAvailable`, равно `(MemFree - нижний водяной знак)`, что меньше, чем `MemFree`.
флаг in
@AlexD Имеет смысл. Нижний водяной знак может быть больше, чем другие компоненты MemAvailable. Я действительно думал, что это невозможно, но, возможно, это нормальный пограничный случай. Думаю, это все. Не могли бы вы опубликовать это как ответ?
Рейтинг:1
флаг jp

Код начинается как доступно = i.freeram - wmark_low.

Это означает, что значение, изначально присвоенное ПамятьДоступна является (MemFree — низкий водяной знак) что меньше, чем MemFree.

Ответить или комментировать

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