美文网首页
/proc/meminfo 解析

/proc/meminfo 解析

作者: 偷油考拉 | 来源:发表于2021-08-04 16:18 被阅读0次

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) 通过它来报告freeused memory 以及内核使用的sharedbuffers 内存使用情况。

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

相关文章

网友评论

      本文标题:/proc/meminfo 解析

      本文链接:https://www.haomeiwen.com/subject/hdajvltx.html