# proc_meminfo

## 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 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,
                         System V, and POSIX shared memory, as well as shared
                         anonymous mappings (_MAP_SHARED|MAP_ANONYMOUS_).
    
                  _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.)
    


* * *