October 15, 2009

Understand Linux /proc/meminfo

>MemTotal: 123748 kB
Total memory available to the memory manager (i.e. guest size minus some
fixed amount used for the kernel image itself and some boot-time allocated

>MemFree: 9864 kB
Memory currently not allocated to any use by the MM. (This figure should
generally be low, because except for a small emergency reserve Linux tends
to always put all available memory to some use ...)

>Buffers: 38572 kB
>Cached: 30692 kB
Memory currently allocated to hold data backed by files. This included
pages currently memory-mapped as well as pages still cached from recent
accesses. The distinction between 'buffers' and 'cached' is becoming more
and more pointless; as a rule of thumb you can say file meta-data (e.g.
inodes, directories, indirect lists, ...) count as 'buffers', while the
actual file 'payload' data counts as 'cached'.

>SwapCached: 1196 kB
Similar to the above, but refers to anonymous memory that has already been
allocated a swap slot, but is currently present in memory anyway (because
it is still in the process of being swapped out, or because it is still
being cached on swap after having been swapped in).

>Active: 70428 kB
>Inactive: 15916 kB
The sum of these two corresponds to all memory under control of the page
replacement algorithm (i.e. anonymous pages plus page/swap cache ('buffers'
+ 'cached' + 'swap cache')). The distinction active vs. inactive refers to
the method the page replacement algorithm uses to decide when to swap pages
out; the basic idea is that a page goes from 'active' to 'inactive' state
after it hasn't been used for some time, and if an 'inactive' page
continues to remain unused from some more time, it'll get swapped out.

>HighTotal: 0 kB
>HighFree: 0 kB
This refers to 'high memory', which isn't used on zSeries.

>LowTotal: 123748 kB
>LowFree: 9864 kB
This is equivalent to MemTotal/MemFree as we don't have 'high memory' on

>SwapTotal: 50296 kB
Total size of all currently active swap devices/files.

>SwapFree: 37820 kB
Currently unused swap space.

>Dirty: 324 kB
Among the active/inactive pages, how many are 'dirty' (i.e. would need to
be paged out before they can be reused for other purposes).

>Writeback: 0 kB
Among the active/inactive pages, how many are currently in the process of
being written out to swap / backing store.

>Mapped: 35128 kB
Pages currenly mapped into user space (included both anonymous memory and
memory-mapped files).

>Slab: 15044 kB
Pages used by the kernel memory pool ('slab') allocator. For details about
slab pool allocation, see /proc/slabinfo

>Committed_AS: 224580 kB
Total user address space used by memory mappings. This is the amount of
memory you would need if all anonymous memory and memory-mapped files in
all user processes were present in memory at the same time, nothing swapped
out or still resident on backing store.

>PageTables: 1348 kB
Memory used by the kernel to hold (hardware) page tables.

>VmallocTotal: 1957887 kB
Total address space range available to the kernel's vmalloc area. This is
a region in the kernel address space used by the kernel to allocate large
areas of kernel memory that need not be backed by physically contiguous
pages. It is used e.g. for loadable kernel modules.
>VmallocUsed: 5848 kB
Portion of the vmalloc area that is currently used.
>VmallocChunk: 1951975 kB
Largest single contiguous chunk of address space currently available in the
vmalloc area.


  1. Good info, thanks for posting!

  2. Very useful info. thanks!!!

  3. In order to check a memory leak, how to calculate total busy/free memory based on these stats.