RAM减去保留的以及内核代码占用的,系统启动后一般固定不变)
MemFree不代表所有可用的内存,Cache/Buffer、Slab均有部分可以临时释放的内存要计算在内)- 与文件关联的内存页(
File-backed Pages), 比如程序文件、读取文件时数据对应的缓存页
- 与文件无关的匿名内存页(
Anonymous Pages),比如进程的堆、栈等分配的内存
Page Cache里的页面都是File-backed Pages,File-backed Pages在内存不足的时候可以直接写回对应的硬盘文件里,即Page-out 。而Anonymous Pages在内存不足时就只能写到硬盘上的交换区Swap里来释放内存,称之为Swap-out 。Anonymous Pages与用户进程共存,进程退出则Anonymous pages释放,而Page Cache即使在进程退出后还可以缓存 。下面是磁盘缓存相关的统计项:
- Buffers — 块设备所占用的缓存页,比如磁盘文件系统的
meta信息如SuperBlock等,直接读写块设备产生的缓存也统计在这里(例如dd命令)
- Cached — 从磁盘读取的文件内容缓存(即
Page cache)
- SwapCached —
Swap中包含的确定要被换出,但是尚未写入物理交换区的匿名内存页
- SwapTotal — 可用的磁盘
Swap总大小
- SwapFree — 磁盘
Swap的free大小
- Dirty — 修改了等待写回磁盘的内存大小
- Writeback — 正在写回磁盘的内存大小
页面回收算法(Page Frame Reclaiming)相关,Page Cache和所有用户进程的内存(除内核栈和HugePages外)都在相关的LRU Lists上 。内核在 2.6 以前就引入了增强的LRU算法来解决朴素的LRU算法完全不考虑使用频率的问题 。具体的Active 链表和Inactive 链表的使用详情请参阅其他资料 。- Active — 最近使用的内存,回收的优先级低
- Inactive — 最近较少使用的内存,回收的优先级高
- Active (anon) —
Active 链表中的匿名页(Anonymous Pages)部分
- Inactive (anon) —
Inactive 链表中的匿名页(Anonymous Pages)部分
- Active (file) —
Active 链表中的File-backed Pages部分
- Inactive (file) —
Inactive 链表中的File-backed Pages部分
- Unevictable — 禁止换出的页,对应
Unevictable 链表,其中包括VM_LOCKED的内存页、SHM_LOCK的共享内存页(也统计在Mlocked中)、和Ramfs等
- Mlocked —
mlock系统调用锁定的内存大小
- SystemV Shared Memory —
shmget
- POSIX Shared Memory —
shm_open
- Shared Anonymous Memory —
mmap(MAP_ANONYMOUS | MAP_SHARED)
AnonPages的统计项,而只能计入Cached和MApped统计项 。但是,tmpfs背后并没有真实的磁盘文件存在,如果想要被临时释放出来,只能通过Swap的方式,所以内存页被链接到了Inactive(anon)和Active(anon)里 。也就是说,共享内存的页面属于
File-backed Pages,但是被放在Inactive(anon)和Active(anon)链表里,统计也不算在AnonPages里,而是算在Cached和Mapped里 。特别地,如果这些页被mlock的话,就放在Unevictable链里并计算在内 。所以从数值上看,Inactive(anon)项 +Active(anon)项 不等于AnonPages项,因为前者包括共享内存的部分 。Active(file)项 +Inactive(file)项 也不等于M
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 普洱茶十大学费茶,中国最受媒体关注的十大普洱茶品牌排名四大特点
- 普洱茶十大名牌,中国最受媒体关注的十大普洱茶品牌排名四大特点
- 我对网络IO的理解
- 普洱茶分类,普洱茶的分类及名称
- 网络推广有哪些
- linux压缩打包命令—tar命令
- 淘宝直播怎么看自己的邀请码 淘宝直播邀请码在哪里
- 关于年长程序员的5个误传
- 程序员在5G时代中的机遇!
- 高流量大并发Linux TCP性能调优
