We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
1. 观察Page Cache cat /proc/meminfo 等式两边的内容即Page Cache Buffers + Cached + SwapCached = Active(file) + Inactive(file) + Shmem + SwapCached 在 Page Cache 中,Active(file)+Inactive(file) 是 File-backed page(与文件对应的内存页),是你最需要关注的部分。因为你平时用的 mmap() 内存映射方式和 buffered I/O来消耗的内存就属于这部分。 Page Cache存在的意义:减少I/O,提升应用的IO速度。 2. Page Cache的产生与释放 产生的两个途径:Buffered IO 与Memory Mapped IO 一个page(4kb),Page Cache存在于内核态,发生缺页中断是:已经映射到虚拟内存地址的page并不在实际的内存中,由中央处理器的内存管理单元所发出的中断。这里是内核缓冲区的page不在实际内存中,需要重新分配内存,此时page cache 产生,写文件产生的page cache有脏页,而读文件产生的page cache并不会有。 # 用来监测Page Cache cat /proc/vmstat | egrep "dirty|writeback" nr_dirty 表示当前系统中积压了多少脏页,nr_writeback 则表示有多少脏页正在回写到磁盘中,他们两个的单位都是 Page(4KB) Page Cache的回收: 直接回收,后台回收。应用在申请内存的时候,即使没有 free 内存,只要还有足够可回收的 Page Cache,就可以通过回收 Page Cache 的方式来申请到内存。
cat /proc/meminfo
Buffers + Cached + SwapCached = Active(file) + Inactive(file) + Shmem + SwapCached
# 用来监测Page Cache cat /proc/vmstat | egrep "dirty|writeback"
查看如何回收的 sar -B 1 pgscank/s : kswapd(后台回收线程) 每秒扫描的 page 个数。 pgscand/s: Application 在内存申请过程中每秒直接扫描的 page 个数 pgsteal/s: 扫描的 page 中每秒被回收的个数。 %vmeff: pgsteal/(pgscank+pgscand), 回收效率,越接近 100 说明系统越安全,越接近 0 说明系统内存压力越大
第一次读写某个文件,Page Cache是 Inactive 的?如何让它变成 Active 的呢?在什么情况下 Active 的又会变成 Inactive的呢?
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Page Cache
1. 观察Page Cache
cat /proc/meminfo
等式两边的内容即Page Cache
Buffers + Cached + SwapCached = Active(file) + Inactive(file) + Shmem + SwapCached
在 Page Cache 中,Active(file)+Inactive(file) 是 File-backed page(与文件对应的内存页),是你最需要关注的部分。因为你平时用的 mmap() 内存映射方式和 buffered I/O来消耗的内存就属于这部分。
Page Cache存在的意义:减少I/O,提升应用的IO速度。
2. Page Cache的产生与释放
产生的两个途径:Buffered IO 与Memory Mapped IO
一个page(4kb),Page Cache存在于内核态,发生缺页中断是:已经映射到虚拟内存地址的page并不在实际的内存中,由中央处理器的内存管理单元所发出的中断。这里是内核缓冲区的page不在实际内存中,需要重新分配内存,此时page cache 产生,写文件产生的page cache有脏页,而读文件产生的page cache并不会有。
# 用来监测Page Cache cat /proc/vmstat | egrep "dirty|writeback"
nr_dirty 表示当前系统中积压了多少脏页,nr_writeback 则表示有多少脏页正在回写到磁盘中,他们两个的单位都是 Page(4KB)
Page Cache的回收: 直接回收,后台回收。应用在申请内存的时候,即使没有 free 内存,只要还有足够可回收的 Page
Cache,就可以通过回收 Page Cache 的方式来申请到内存。
第一次读写某个文件,Page Cache是 Inactive 的?如何让它变成 Active 的呢?在什么情况下 Active 的又会变成 Inactive的呢?
The text was updated successfully, but these errors were encountered: