I can make sense of most of the information contained in /proc/meminfo like total memory, buffers, cache etc. Could you tell me what do the less obvious ones li
My understanding is as follows.
And I agree these numbers are hard to understand and showing inconsistent values.
MemTotal
= MemFree + Active + Inactive + Slab + PageTables + VmallocUsed + X
(X : alloc_pages() (get_free_pages(), etc))
But recent kernel's vmallocused value could be wrong. This is because it counts VM_xxx regions like VM_IOREMAP, VM_MAP,... other than VM_ALLOC area.
VM_IOREMAP region can be mapping memory which can be outside of kernel's memory management, so the formula above can be not precise, or completely wrong.
You can either do:
Active + Inactive
= Buffers + Cached + SwapCached + AnonPages
AnonPages
= /proc/*/task/*/smaps anonymous area all sum
(anonymous: no name|[heap]|/dev/zero|/dev/shm/*|[stack])
Although I haven't been able to match these numbers. See here and help me if you have any clue.
Total PageCache
= Buffers + Cached + SwapCached
Slab
= SReclaimable + SUnreclaim