proc(5) - Linux manual page (man7.org)
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s2-proc-meminfo
/proc/meminfo
该文件统计了系统内存的使用情况。free(1) 通过它来报告free
、 used
memory 以及内核使用的shared
、 buffers
内存使用情况。
Entity | Description | Requirements |
---|---|---|
MemTotal | 总可用内存 (物理RAM减去一些保留位和内核二进制代码) | |
MemFree | LowFree + HighFree | |
MemAvailable | 不交换情况下,可用于启动新应用的可用内存。 | |
Buffers | 用于磁盘原始数据块的缓冲/临时存储,通常不大 (20 MB or so). | |
Cached | 内存上,用于缓存从磁盘读取的文件 (the page cache)。不包含SwapCached。 | |
SwapCached | 被swap out的内存被swap回来,但是仍然在swap文件内。(如果内存压力高,这些内存页将不再被swap out,因为它们已经在swap文件中。这将节省I/O.) | |
Active | 最近使用过的内存,除非绝对必要,否则通常不会回收。 | |
Inactive | 最近使用较少的内存。它将可能被用于其他用途。 | |
Active(anon) | ||
Inactive(anon) | ||
Active(file) | ||
Inactive(file) | ||
Unevictable |
Linux 2.6.28 to 2.6.30 CONFIG_UNEVICTABLE_LRU |
|
Mlocked |
Linux 2.6.28 to 2.6.30 CONFIG_UNEVICTABLE_LRU |
|
SwapTotal | Swap 总和。 | |
SwapFree | 没有在使用的swap空间。 | |
Dirty | 等待写回磁盘的内存 | |
Writeback | 正在写回磁盘的内存 | |
AnonPages | 映射到用户空间页表的,没有文件的内存页 | |
Mapped | 映射到内存的文件 (通过 mmap(2)), 比如,库文件libraries。 | |
Shmem | tmpfs(5) 文件系统消费的内存。 | |
Slab | 内核中的数据结构缓存 (See slabinfo(5).) | |
SReclaimable | Slab的一部分,可以被回收,比如 caches | |
SUnreclaim | Slab的一部分,无法回收 | |
KernelStack | 分配给内核堆栈的内存 | |
PageTables | 专用于 lowest level 页表的内存 | |
NFS_Unstable | 发送到服务器的NFS pages,但是还没有提交到稳定存储 | |
Bounce | 用于块设备 "bounce buffers". | |
WritebackTmp | FUSE的回写buffer内存 | |
CommitLimit | 当前系统可分配内存总量(kb表示)。需开启overcommit(/proc/sys/vm/overcommit_memory 设置为 2)。Limit值根据/proc/sys/vm/overcommit_memory 计算。更多信息,参见内核源文件Documentation/vm/overcommit-accounting.rst
|
|
Committed_AS | 当前系统已经分配的内存。Committed内存是所有进程分配的内存之和,即便还没有被used。 一个进程分配了1GB内存(通过 malloc(3)or类似),但是仅创建了300MB,将仅显示使用300MB内存,即使它已经拥有了整个1GB内存的地址空间。已经被committed的1GB内存可以被分配内存的应用随时使用。如果开启了严格的 overcommit (mode 2 in /proc/sys/vm/overcommit_memory ),则不允许超过CommitLimit分配。如果需要保证在内存成功分配后,进程不会因内存不足而失败,则这一点非常有用。 |
|
VmallocTotal | vmalloc 内存总计 | |
VmallocUsed | 使用的 vmalloc 总计。 Linux 4.4后,不再计算。参见 /proc/vmallocinfo 。 |
|
VmallocChunk | vmalloc的最大空闲连续块。 Linux 4.4后,不再计算。参见 /proc/vmallocinfo 。 |
|
HardwareCorrupted | CONFIG_MEMORY_FAILURE | |
AnonHugePages | 映射到用户空间页表的 Non-file backed huge pages | CONFIG_TRANSPARENT_HUGEPAGE |
HugePages_Total | HugePages池的总容量 | CONFIG_HUGETLB_PAGE |
HugePages_Free | 池内还没有分配的 huge pages 的数量 | CONFIG_HUGETLB_PAGE |
HugePages_Rsvd | 已承诺分配但尚未分配的huge pages 数量。这些保留的huge pages保证应用程序能够在出错时还能从池中可分配到huge pages。 | CONFIG_HUGETLB_PAGE |
HugePages_Surp | 大于/proc/sys/vm/nr_hugepages 设置的池内huge pages的数量。最大值受限于/proc/sys/vm/nr_overcommit_hugepages 。 |
CONFIG_HUGETLB_PAGE |
Hugepagesize | Huge pages 的尺寸 | CONFIG_HUGETLB_PAGE |
DirectMap4k | ||
DirectMap2M | CONFIG_X86_64 or CONFIG_X86_PAE | |
DirectMap4M | CONFIG_X86_64 or CONFIG_X86_PAE | |
DirectMap1G | CONFIG_X86_64 & CONFIG_X86_DIRECT_GBPAGES |
Entity | Description | Requirements |
---|---|---|
HighTotal | (>= Linux 2.6.19) Highmem总和。Highmem是860 MB以上的所有物理内存。 Highmem用于用户空间程序,或page cache。内存访问该内存需要使用tricks,所以比访问lowmem慢。 | CONFIG_HIGHMEM |
HighFree | (>= Linux 2.6.19) 空闲的highmem。 | CONFIG_HIGHMEM |
LowTotal | (>= Linux 2.6.19) Lowmem总和。Lowmem包含了highmem的功能,还用于kernel存放它的数据结构。Among many other things, it is where everything from Slab is allocated. Bad things happen when you're out of lowmem. | CONFIG_HIGHMEM |
LowFree | (>= Linux 2.6.19) 空闲的lowmem. | CONFIG_HIGHMEM |
MmapCopy | CONFIG_MMU | |
KReclaimable | Kernel allocations that the kernel will attempt to reclaim under memory pressure. Includes SReclaimable (below), and other direct allocations with a shrinker. | |
Quicklists | CONFIG_QUICKLIST | |
LazyFree | Shows the amount of memory marked by madvise(2) MADV_FREE. | |
ShmemHugePages | Memory used by shared memory (shmem) and tmpfs(5) allocated with huge pages. | CONFIG_TRANSPARENT_HUGEPAGE |
ShmemPmdMapped | Shared memory mapped into user space with huge pages. | CONFIG_TRANSPARENT_HUGEPAGE |
CmaTotal | Total CMA (Contiguous Memory Allocator) pages. | CONFIG_CMA |
CmaFree | Free CMA (Contiguous Memory Allocator) pages. ) | CONFIG_CMA |
网友评论