{
    "mode": "man",
    "parameter": "proc_meminfo",
    "section": "5",
    "url": "https://www.chedong.com/phpMan.php/man/proc_meminfo/5/json",
    "generated": "2026-10-08T03:20:30Z",
    "sections": {
        "NAME": {
            "content": "/proc/meminfo - memory usage\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "/proc/meminfo\nThis  file reports statistics about memory usage on the system.  It is used by free(1)\nto report the amount of free and used memory (both physical and swap) on the system as\nwell as the shared memory and buffers used by the kernel.  Each line of the file  con‐\nsists of a parameter name, followed by a colon, the value of the parameter, and an op‐\ntion  unit  of measurement (e.g., \"kB\").  The list below describes the parameter names\nand the format specifier required to read the field value.  Except as noted below, all\nof the fields have been present since at least Linux 2.6.0.  Some fields are displayed\nonly if the kernel was configured with various options; those dependencies  are  noted\nin the list.\n\nMemTotal %lu\nTotal  usable  RAM (i.e., physical RAM minus a few reserved bits and the kernel\nbinary code).\n\nMemFree %lu\nThe sum of LowFree+HighFree.\n\nMemAvailable %lu (since Linux 3.14)\nAn estimate of how much memory is  available  for  starting  new  applications,\nwithout swapping.\n\nBuffers %lu\nRelatively  temporary  storage  for  raw disk blocks that shouldn't get tremen‐\ndously large (20 MB or so).\n\nCached %lu\nIn-memory cache for files read from the disk (the page cache).  Doesn't include\nSwapCached.\n\nSwapCached %lu\nMemory that once was swapped out, is swapped back in but still also is  in  the\nswap  file.   (If memory pressure is high, these pages don't need to be swapped\nout again because they are already in the swap file.  This saves I/O.)\n\nActive %lu\nMemory that has been used more recently and usually not  reclaimed  unless  ab‐\nsolutely necessary.\n\nInactive %lu\nMemory  which has been less recently used.  It is more eligible to be reclaimed\nfor other purposes.\n\nActive(anon) %lu (since Linux 2.6.28)\n[To be documented.]\n\nInactive(anon) %lu (since Linux 2.6.28)\n[To be documented.]\n\nActive(file) %lu (since Linux 2.6.28)\n[To be documented.]\n\nInactive(file) %lu (since Linux 2.6.28)\n[To be documented.]\n\nUnevictable %lu (since Linux 2.6.28)\n(From Linux 2.6.28 to Linux 2.6.30, CONFIGUNEVICTABLELRU was required.)   [To\nbe documented.]\n\nMlocked %lu (since Linux 2.6.28)\n(From  Linux 2.6.28 to Linux 2.6.30, CONFIGUNEVICTABLELRU was required.)  [To\nbe documented.]\n\nHighTotal %lu\n(Starting with Linux 2.6.19, CONFIGHIGHMEM  is  required.)   Total  amount  of\nhighmem.   Highmem is all memory above ~860 MB of physical memory.  Highmem ar‐\neas are for use by user-space programs, or for the page cache.  The kernel must\nuse tricks to access this memory, making it slower to access than lowmem.\n\nHighFree %lu\n(Starting with Linux 2.6.19, CONFIGHIGHMEM is required.)  Amount of free high‐\nmem.\n\nLowTotal %lu\n(Starting with Linux 2.6.19, CONFIGHIGHMEM  is  required.)   Total  amount  of\nlowmem.   Lowmem is memory which can be used for everything that highmem can be\nused for, but it is also available for the kernel's use for its own data struc‐\ntures.  Among many other things, it is where everything from Slab is allocated.\nBad things happen when you're out of lowmem.\n\nLowFree %lu\n(Starting with Linux 2.6.19,  CONFIGHIGHMEM  is  required.)   Amount  of  free\nlowmem.\n\nMmapCopy %lu (since Linux 2.6.29)\n(CONFIGMMU is required.)  [To be documented.]\n\nSwapTotal %lu\nTotal amount of swap space available.\n\nSwapFree %lu\nAmount of swap space that is currently unused.\n\nDirty %lu\nMemory which is waiting to get written back to the disk.\n\nWriteback %lu\nMemory which is actively being written back to the disk.\n\nAnonPages %lu (since Linux 2.6.18)\nNon-file backed pages mapped into user-space page tables.\n\nMapped %lu\nFiles which have been mapped into memory (with mmap(2)), such as libraries.\n\nShmem %lu (since Linux 2.6.32)\nAmount of memory consumed in tmpfs(5) filesystems.\n\nKReclaimable %lu (since Linux 4.20)\nKernel  allocations  that the kernel will attempt to reclaim under memory pres‐\nsure.  Includes SReclaimable (below),  and  other  direct  allocations  with  a\nshrinker.\n\nSlab %lu\nIn-kernel data structures cache.  (See slabinfo(5).)\n\nSReclaimable %lu (since Linux 2.6.19)\nPart of Slab, that might be reclaimed, such as caches.\n\nSUnreclaim %lu (since Linux 2.6.19)\nPart of Slab, that cannot be reclaimed on memory pressure.\n\nKernelStack %lu (since Linux 2.6.32)\nAmount of memory allocated to kernel stacks.\n\nPageTables %lu (since Linux 2.6.18)\nAmount of memory dedicated to the lowest level of page tables.\n\nQuicklists %lu (since Linux 2.6.27)\n(CONFIGQUICKLIST is required.)  [To be documented.]\n\nNFSUnstable %lu (since Linux 2.6.18)\nNFS pages sent to the server, but not yet committed to stable storage.\n\nBounce %lu (since Linux 2.6.18)\nMemory used for block device \"bounce buffers\".\n\nWritebackTmp %lu (since Linux 2.6.26)\nMemory used by FUSE for temporary writeback buffers.\n\nCommitLimit %lu (since Linux 2.6.10)\nThis  is  the total amount of memory currently available to be allocated on the\nsystem, expressed in kilobytes.  This limit is adhered to only if strict  over‐\ncommit  accounting  is enabled (mode 2 in /proc/sys/vm/overcommitmemory).  The\nlimit is calculated according to the formula described under /proc/sys/vm/over‐\ncommitmemory.  For further details, see  the  kernel  source  file  Documenta‐\ntion/vm/overcommit-accounting.rst.\n\nCommittedAS %lu\nThe  amount  of memory presently allocated on the system.  The committed memory\nis a sum of all of the memory which has been allocated by processes, even if it\nhas not been \"used\" by them as of yet.  A process which allocates 1 GB of  mem‐\nory  (using  malloc(3) or similar), but touches only 300 MB of that memory will\nshow up as using only 300 MB of memory even if it has the address  space  allo‐\ncated for the entire 1 GB.\n\nThis  1 GB is memory which has been \"committed\" to by the VM and can be used at\nany time by the allocating application.  With strict overcommit enabled on  the\nsystem  (mode 2 in /proc/sys/vm/overcommitmemory), allocations which would ex‐\nceed the CommitLimit will not be permitted.  This is useful  if  one  needs  to\nguarantee  that  processes will not fail due to lack of memory once that memory\nhas been successfully allocated.\n\nVmallocTotal %lu\nTotal size of vmalloc memory area.\n\nVmallocUsed %lu\nAmount of vmalloc area which is used.  Since Linux 4.4, this field is no longer\ncalculated, and is hard coded as 0.  See /proc/vmallocinfo.\n\nVmallocChunk %lu\nLargest contiguous block of vmalloc area which is free.  Since Linux 4.4,  this\nfield is no longer calculated and is hard coded as 0.  See /proc/vmallocinfo.\n\nHardwareCorrupted %lu (since Linux 2.6.32)\n(CONFIGMEMORYFAILURE is required.)  [To be documented.]\n\nLazyFree %lu (since Linux 4.12)\nShows the amount of memory marked by madvise(2) MADVFREE.\n\nAnonHugePages %lu (since Linux 2.6.38)\n(CONFIGTRANSPARENTHUGEPAGE  is  required.)  Non-file backed huge pages mapped\ninto user-space page tables.\n\nShmemHugePages %lu (since Linux 4.8)\n(CONFIGTRANSPARENTHUGEPAGE  is  required.)   Memory  used  by  shared  memory\n(shmem) and tmpfs(5) allocated with huge pages.\n\nShmemPmdMapped %lu (since Linux 4.8)\n(CONFIGTRANSPARENTHUGEPAGE  is  required.)   Shared  memory  mapped into user\nspace with huge pages.\n\nCmaTotal %lu (since Linux 3.1)\nTotal CMA (Contiguous Memory Allocator) pages.  (CONFIGCMA is required.)\n\nCmaFree %lu (since Linux 3.1)\nFree CMA (Contiguous Memory Allocator) pages.  (CONFIGCMA is required.)\n\nHugePagesTotal %lu\n(CONFIGHUGETLBPAGE is required.)  The size of the pool of huge pages.\n\nHugePagesFree %lu\n(CONFIGHUGETLBPAGE is required.)  The number of huge pages in the  pool  that\nare not yet allocated.\n\nHugePagesRsvd %lu (since Linux 2.6.17)\n(CONFIGHUGETLBPAGE  is required.)  This is the number of huge pages for which\na commitment to allocate from the pool has been made, but no allocation has yet\nbeen made.  These reserved huge pages guarantee that  an  application  will  be\nable to allocate a huge page from the pool of huge pages at fault time.\n\nHugePagesSurp %lu (since Linux 2.6.24)\n(CONFIGHUGETLBPAGE  is  required.)   This  is the number of huge pages in the\npool above the value in /proc/sys/vm/nrhugepages.  The maximum number of  sur‐\nplus huge pages is controlled by /proc/sys/vm/nrovercommithugepages.\n\nHugepagesize %lu\n(CONFIGHUGETLBPAGE is required.)  The size of huge pages.\n\nDirectMap4k %lu (since Linux 2.6.27)\nNumber of bytes of RAM linearly mapped by kernel in 4 kB pages.  (x86.)\n\nDirectMap4M %lu (since Linux 2.6.27)\nNumber of bytes of RAM linearly mapped by kernel in 4 MB pages.  (x86 with CON‐\nFIGX8664 or CONFIGX86PAE enabled.)\n\nDirectMap2M %lu (since Linux 2.6.27)\nNumber of bytes of RAM linearly mapped by kernel in 2 MB pages.  (x86 with nei‐\nther CONFIGX8664 nor CONFIGX86PAE enabled.)\n\nDirectMap1G %lu (since Linux 2.6.27)\n(x86 with CONFIGX8664 and CONFIGX86DIRECTGBPAGES enabled.)\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "proc(5)\n\nLinux man-pages 6.7                          2023-08-15                              procmeminfo(5)",
            "subsections": []
        }
    },
    "summary": "/proc/meminfo - memory usage",
    "flags": [],
    "examples": [],
    "see_also": [
        {
            "name": "proc",
            "section": "5",
            "url": "https://www.chedong.com/phpMan.php/man/proc/5/json"
        }
    ]
}