博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux中的脏页写回
阅读量:6257 次
发布时间:2019-06-22

本文共 645 字,大约阅读时间需要 2 分钟。

hot3.png

为了减轻内存使用的压力,除了用户手动写回脏页以外,还有一些机制触发脏页写回。

比方说设置定时器,定期写回脏了很久的页。

具体介绍下面的写回机制,因为这种机制不像写回脏了很久的页的机制那样被动。

wakeu_bdflush 复杂唤醒写回的核心函数。

能触发此函数条件,可能会是以下几点中的一点会多:

1.用户态进程调用sync强制写回

2.grow_buffers()分配一个新的缓冲区页失败时 。此时的页中缓冲区块大小与要求的不同,因此要释放掉。

3.页框回收算法调用free_more_memoy()或try_to_free_page()     alloc_pages 分配器中就会调用后面这个函数

4.在内存池中分配元素失败。 内存池是作为动态分配失败后的最后分配手段,基本上好像驱动这部分使用内存池较多。

如果内存池分配都失败,那就一定要触发脏页写回了

 

由于以上原因,wakeu_bdflush 被唤醒。

只要此函数被唤醒,那么只要存在脏页就写回,或是如果脏页超过了一定的阈值,那么设置被写回脏页数量,然后 唤醒pdflush_operation函数,这个函数负责在pdflush内核线程链表中选择一个空闲的内核线程去执行。并去执行这个线程的回调函数。

回调函数总体的执行情况就是扫描超级块链表,如果超级块所属的索引节点有脏标记就写回。并检查脏页框是否低于阈值,如果不是,继续扫描下一个超级块

转载于:https://my.oschina.net/u/1375613/blog/489179

你可能感兴趣的文章
windows查看端口占用
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
App 卸载记录
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
计算机网络与Internet应用
查看>>
Mars说光场(3)— 光场采集
查看>>
Django 文件下载功能
查看>>
走红日本 阿里云如何能够赢得海外荣耀
查看>>
qt 学习之路2
查看>>
线上应用故障排查之二:高内存占用
查看>>
第四次作业
查看>>
异常处理汇总 ~ 修正果带着你的Code飞奔吧!
查看>>
BFS --- 素数环
查看>>
PCIE_DMA:xapp1052学习笔记
查看>>
python ----字符串基础练习题30道
查看>>
uva-10879-因数分解
查看>>
python 调用aiohttp
查看>>
Spring Boot中使用MyBatis注解配置详解
查看>>
linux下文件的一些文件颜色的含义
查看>>
跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
查看>>