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性能调优