proc_meminfo(5) File Formats Manual proc_meminfo(5)
NAME
/proc/meminfo - memory usage
DESCRIPTION
/proc/meminfo
This file reports statistics about memory usage on the system.
It is used by free(1) to report the amount of free and used mem-
ory (both physical and swap) on the system as well as the shared
memory and buffers used by the kernel. Each line of the file
consists of a parameter name, followed by a colon, the value of
the parameter, and an option unit of measurement (e.g., "kB").
The list below describes the parameter names and the format
specifier required to read the field value. Except as noted be-
low, all of the fields have been present since at least Linux
2.6.0. Some fields are displayed only if the kernel was config-
ured with various options; those dependencies are noted in the
list.
MemTotal %lu
Total usable RAM (i.e., physical RAM minus a few reserved
bits and the kernel binary code).
MemFree %lu
The sum of LowFree+HighFree.
MemAvailable %lu (since Linux 3.14)
An estimate of how much memory is available for starting
new applications, without swapping.
Buffers %lu
Relatively temporary storage for raw disk blocks that
shouldn't get tremendously large (20 MB or so).
Cached %lu
In-memory cache for files read from the disk (the page
cache). Doesn't include SwapCached.
SwapCached %lu
Memory that once was swapped out, is swapped back in but
still also is in the swap file. (If memory pressure is
high, these pages don't need to be swapped out again be-
cause they are already in the swap file. This saves
I/O.)
Active %lu
Memory that has been used more recently and usually not
reclaimed unless absolutely necessary.
Inactive %lu
Memory which has been less recently used. It is more el-
igible to be reclaimed for other purposes.
Active(anon) %lu (since Linux 2.6.28)
[To be documented.]
Inactive(anon) %lu (since Linux 2.6.28)
[To be documented.]
Active(file) %lu (since Linux 2.6.28)
[To be documented.]
Inactive(file) %lu (since Linux 2.6.28)
[To be documented.]
Unevictable %lu (since Linux 2.6.28)
(From Linux 2.6.28 to Linux 2.6.30, CONFIG_UN-
EVICTABLE_LRU was required.) [To be documented.]
Mlocked %lu (since Linux 2.6.28)
(From Linux 2.6.28 to Linux 2.6.30, CONFIG_UN-
EVICTABLE_LRU was required.) [To be documented.]
HighTotal %lu
(Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.)
Total amount of highmem. Highmem is all memory above
~860 MB of physical memory. Highmem areas are for use by
user-space programs, or for the page cache. The kernel
must use tricks to access this memory, making it slower
to access than lowmem.
HighFree %lu
(Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.)
Amount of free highmem.
LowTotal %lu
(Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.)
Total amount of lowmem. Lowmem is memory which can be
used for everything that highmem can be used for, but it
is also available for the kernel's use for its own data
structures. Among many other things, it is where every-
thing from Slab is allocated. Bad things happen when
you're out of lowmem.
LowFree %lu
(Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.)
Amount of free lowmem.
MmapCopy %lu (since Linux 2.6.29)
(CONFIG_MMU is required.) [To be documented.]
SwapTotal %lu
Total amount of swap space available.
SwapFree %lu
Amount of swap space that is currently unused.
Dirty %lu
Memory which is waiting to get written back to the disk.
Writeback %lu
Memory which is actively being written back to the disk.
AnonPages %lu (since Linux 2.6.18)
Non-file backed pages mapped into user-space page tables.
Mapped %lu
Files which have been mapped into memory (with mmap(2)),
such as libraries.
Shmem %lu (since Linux 2.6.32)
Amount of memory consumed in tmpfs(5) filesystems.
KReclaimable %lu (since Linux 4.20)
Kernel allocations that the kernel will attempt to re-
claim under memory pressure. Includes SReclaimable (be-
low), and other direct allocations with a shrinker.
Slab %lu
In-kernel data structures cache. (See slabinfo(5).)
SReclaimable %lu (since Linux 2.6.19)
Part of Slab, that might be reclaimed, such as caches.
SUnreclaim %lu (since Linux 2.6.19)
Part of Slab, that cannot be reclaimed on memory pres-
sure.
KernelStack %lu (since Linux 2.6.32)
Amount of memory allocated to kernel stacks.
PageTables %lu (since Linux 2.6.18)
Amount of memory dedicated to the lowest level of page
tables.
Quicklists %lu (since Linux 2.6.27)
(CONFIG_QUICKLIST is required.) [To be documented.]
NFS_Unstable %lu (since Linux 2.6.18)
NFS pages sent to the server, but not yet committed to
stable storage.
Bounce %lu (since Linux 2.6.18)
Memory used for block device "bounce buffers".
WritebackTmp %lu (since Linux 2.6.26)
Memory used by FUSE for temporary writeback buffers.
CommitLimit %lu (since Linux 2.6.10)
This is the total amount of memory currently available to
be allocated on the system, expressed in kilobytes. This
limit is adhered to only if strict overcommit accounting
is enabled (mode 2 in /proc/sys/vm/overcommit_memory).
The limit is calculated according to the formula de-
scribed under /proc/sys/vm/overcommit_memory. For fur-
ther details, see the kernel source file Documenta-
tion/vm/overcommit-accounting.rst.
Committed_AS %lu
The amount of memory presently allocated on the system.
The committed memory is a sum of all of the memory which
has been allocated by processes, even if it has not been
"used" by them as of yet. A process which allocates 1 GB
of memory (using malloc(3) or similar), but touches only
300 MB of that memory will show up as using only 300 MB
of memory even if it has the address space allocated for
the entire 1 GB.
This 1 GB is memory which has been "committed" to by the
VM and can be used at any time by the allocating applica-
tion. With strict overcommit enabled on the system (mode
2 in /proc/sys/vm/overcommit_memory), allocations which
would exceed the CommitLimit will not be permitted. This
is useful if one needs to guarantee that processes will
not fail due to lack of memory once that memory has been
successfully allocated.
VmallocTotal %lu
Total size of vmalloc memory area.
VmallocUsed %lu
Amount of vmalloc area which is used. Since Linux 4.4,
this field is no longer calculated, and is hard coded as
0. See /proc/vmallocinfo.
VmallocChunk %lu
Largest contiguous block of vmalloc area which is free.
Since Linux 4.4, this field is no longer calculated and
is hard coded as 0. See /proc/vmallocinfo.
HardwareCorrupted %lu (since Linux 2.6.32)
(CONFIG_MEMORY_FAILURE is required.) [To be documented.]
LazyFree %lu (since Linux 4.12)
Shows the amount of memory marked by madvise(2)
MADV_FREE.
AnonHugePages %lu (since Linux 2.6.38)
(CONFIG_TRANSPARENT_HUGEPAGE is required.) Non-file
backed huge pages mapped into user-space page tables.
ShmemHugePages %lu (since Linux 4.8)
(CONFIG_TRANSPARENT_HUGEPAGE is required.) Memory used
by shared memory (shmem) and tmpfs(5) allocated with huge
pages.
ShmemPmdMapped %lu (since Linux 4.8)
(CONFIG_TRANSPARENT_HUGEPAGE is required.) Shared memory
mapped into user space with huge pages.
CmaTotal %lu (since Linux 3.1)
Total CMA (Contiguous Memory Allocator) pages. (CON-
FIG_CMA is required.)
CmaFree %lu (since Linux 3.1)
Free CMA (Contiguous Memory Allocator) pages. (CON-
FIG_CMA is required.)
HugePages_Total %lu
(CONFIG_HUGETLB_PAGE is required.) The size of the pool
of huge pages.
HugePages_Free %lu
(CONFIG_HUGETLB_PAGE is required.) The number of huge
pages in the pool that are not yet allocated.
HugePages_Rsvd %lu (since Linux 2.6.17)
(CONFIG_HUGETLB_PAGE is required.) This is the number of
huge pages for which a commitment to allocate from the
pool has been made, but no allocation has yet been made.
These reserved huge pages guarantee that an application
will be able to allocate a huge page from the pool of
huge pages at fault time.
HugePages_Surp %lu (since Linux 2.6.24)
(CONFIG_HUGETLB_PAGE is required.) This is the number of
huge pages in the pool above the value in
/proc/sys/vm/nr_hugepages. The maximum number of surplus
huge pages is controlled by /proc/sys/vm/nr_overcom-
mit_hugepages.
Hugepagesize %lu
(CONFIG_HUGETLB_PAGE is required.) The size of huge
pages.
DirectMap4k %lu (since Linux 2.6.27)
Number of bytes of RAM linearly mapped by kernel in 4 kB
pages. (x86.)
DirectMap4M %lu (since Linux 2.6.27)
Number of bytes of RAM linearly mapped by kernel in 4 MB
pages. (x86 with CONFIG_X86_64 or CONFIG_X86_PAE en-
abled.)
DirectMap2M %lu (since Linux 2.6.27)
Number of bytes of RAM linearly mapped by kernel in 2 MB
pages. (x86 with neither CONFIG_X86_64 nor CON-
FIG_X86_PAE enabled.)
DirectMap1G %lu (since Linux 2.6.27)
(x86 with CONFIG_X86_64 and CONFIG_X86_DIRECT_GBPAGES en-
abled.)
SEE ALSO
proc(5)
Linux man-pages 6.7 2023-08-15 proc_meminfo(5)
Generated by dwww version 1.16 on Tue Dec 16 17:18:56 CET 2025.