/proc/meminfo - memory usage
- /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 memory (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 below, all of the fields have been present since at least Linux
2.6.0. Some fields are displayed only if the kernel was configured 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 because 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 eligible 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_UNEVICTABLE_LRU was
required.) [To be documented.]
- Mlocked %lu
(since Linux 2.6.28)
- (From Linux 2.6.28 to Linux 2.6.30, CONFIG_UNEVICTABLE_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 everything
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 reclaim under memory
pressure. Includes SReclaimable (below), 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 pressure.
- 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 described under /proc/sys/vm/overcommit_memory. For
further details, see the kernel source file
Documentation/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 application. 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. (CONFIG_CMA is
required.)
- CmaFree %lu
(since Linux 3.1)
- Free CMA (Contiguous Memory Allocator) pages. (CONFIG_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_overcommit_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 enabled.)
- 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 CONFIG_X86_PAE enabled.)
- DirectMap1G
%lu (since Linux 2.6.27)
- (x86 with CONFIG_X86_64 and CONFIG_X86_DIRECT_GBPAGES
enabled.)