# proc_meminfo - memory usage - man(5) - [phpMan]

[_proc_meminfo_(5)](https://www.chedong.com/phpMan.php/man/procmeminfo/5/markdown)                          File Formats Manual                         [_proc_meminfo_(5)](https://www.chedong.com/phpMan.php/man/procmeminfo/5/markdown)

## NAME
       /proc/meminfo - memory usage

## DESCRIPTION
       _/proc/meminfo_
              This  file reports statistics about memory usage on the system.  It is used by [**free**(1)](https://www.chedong.com/phpMan.php/man/free/1/markdown)
              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  con‐
              sists of a parameter name, followed by a colon, the value of the parameter, and an op‐
              tion  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 tremen‐
                     dously 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  ab‐
                     solutely 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 ar‐
                     eas 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 high‐
                     mem.

              _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 struc‐
                     tures.  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)](https://www.chedong.com/phpMan.php/man/mmap/2/markdown)), such as libraries.

              _Shmem_ %lu (since Linux 2.6.32)
                     Amount of memory consumed in [**tmpfs**(5)](https://www.chedong.com/phpMan.php/man/tmpfs/5/markdown) filesystems.

              _KReclaimable_ %lu (since Linux 4.20)
                     Kernel  allocations  that the kernel will attempt to reclaim under memory pres‐
                     sure.  Includes _SReclaimable_ (below),  and  other  direct  allocations  with  a
                     shrinker.

              _Slab_ %lu
                     In-kernel data structures cache.  (See [**slabinfo**(5)](https://www.chedong.com/phpMan.php/man/slabinfo/5/markdown).)

              _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  over‐
                     commit  accounting  is enabled (mode 2 in _/proc/sys/vm/overcommit_memory_).  The
                     limit is calculated according to the formula described under _/proc/sys/vm/over‐_
                     _commit_memory_.  For further 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  mem‐
                     ory  (using  [**malloc**(3)](https://www.chedong.com/phpMan.php/man/malloc/3/markdown) 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  allo‐
                     cated 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 ex‐
                     ceed 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)](https://www.chedong.com/phpMan.php/man/madvise/2/markdown) **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)](https://www.chedong.com/phpMan.php/man/tmpfs/5/markdown) 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  sur‐
                     plus 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 **CON‐**
                     **FIG_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 nei‐
                     ther **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.)

## SEE ALSO
       [**proc**(5)](https://www.chedong.com/phpMan.php/man/proc/5/markdown)

Linux man-pages 6.7                          2023-08-15                              [_proc_meminfo_(5)](https://www.chedong.com/phpMan.php/man/procmeminfo/5/markdown)
