Slab: 用于内核数据结构的缓存内存。显示8628 kB,包括SReclaimable和SUnreclaim。 SReclaimable: 可以回收的 Slab 内存。显示2484 kB。 SUnreclaim: 不能回收的 Slab 内存。显示6144 kB。 KernelStack: 内核堆栈使用的内存量。显示944 kB。 交换内存相关字段 SwapTotal: 总交换分区的大小。这里是0 kB,表示没有配置交...
Slab: slab中所有的内存,等于以上两者之和。 1.2 VmallocUsed 通过vmalloc分配的内存都统计在/proc/meminfo的 VmallocUsed 值中,但是要注意这个值不止包括了分配的物理内存,还统计了VM_IOREMAP、VM_MAP等操作的值,譬如VM_IOREMAP是把IO地址映射到内核空间、并未消耗物理内存,所以我们要把它们排除在外。从物理内存分...
usedram = total - free -buff/cache 其中buff/cache = bufferram + cached + sreclaimable (可回收的slab大小),为了获取完整的mem 信息,可以直接读取/proc/meminfo ,这里会存在一个疑问,/proc/meminfo 是file system,那这个文件结点的更新频率足够快吗,每次读取是否最新的信息? structsysinfo{__kernel_long_t...
通过slab层分配的内存会被精确统计,可以参见/proc/meminfo中的slab/SReclaimable/SUnreclaim; 通过vmalloc分配的内存也有统计,参见/proc/meminfo中的VmallocUsed 和 /proc/vmallocinfo(下节中还有详述); 而通过alloc_pages分配的内存不会自动统计,除非调用alloc_pages的内核模块或驱动程序主动进行统计,否则我们只能看到free...
/proc/meminfo中的MemAvailable是内核使用特定的算法估算出来的,要注意这是一个估计值,并不精确。 内存黑洞 追踪Linux系统的内存使用一直是个难题,很多人试着把能想到的各种内存消耗都加在一起,kernel text、kernel modules、buffer、cache、slab、page table、process RSS…等等,却总是与物理内存的大小对不上,这是...
通过分析/proc/meminfo的输出信息,我们可以清晰地了解系统中的内存瓶颈所在,以及内存被块设备IO、Buffer、Cache、slab内存、匿名映射等各种元素所占用的情况。这些信息对于定位和解决内存相关的问题至关重要。系统内存瓶颈定位 首先,/proc/meminfo可以帮助我们清晰地知道系统中的内存瓶颈究竟在哪里。由于内核使用内存的...
Slab: 内核使用的 slab 结构. 参考 /proc/slabinfo (对应工具 slabtop) 和 /proc/slab_allocators (开对应 config debug 后可见) SReclaimable / SUnreclaim: 有对应标记的 slab 页面数量, 参见注3 Committed_AS: 真正的必要内存量, VM Balloon 参考这个数值 ...
通过分析/proc/meminfo的内容,我们可以清晰地了解内存瓶颈所在、内存被哪些元素占用、slab内存使用情况以及匿名映射内存的使用量,从而更好地定位和解决系统内存问题。因此,在实际的开发和调试过程中,我们应当充分利用/proc/meminfo的输出信息,结合其他调试工具,全面分析系统内存使用情况,提高系统性能和稳定性。
Slab: 22952 kB SReclaimable: 15512 kB SUnreclaim: 7440 kB PageTables: 2640 kB NFS_Unstable: 0 kB Bounce: 0 kB CommitLimit: 1233696 kB Committed_AS: 828508 kB VmallocTotal: 516088 kB VmallocUsed: 5032 kB VmallocChunk: 510580 kB MemTotal: 所有可用RAM大小 (即物理内存减去一些预留位和内核的二...
cat /proc/meminfo 各字段详解 /proc/meminfo是了解Linux系统内存使用状况的主要接口,我们最常用的”free”、”vmstat”等命令就是通过它获取数据的 ,/proc/meminfo所包含的信息比”free”等命令要丰富得多,因此需要了解这些字段的含义。 / $ cat /proc...