博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pdflush的工作流程
阅读量:5879 次
发布时间:2019-06-19

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

大家知道,在linux操作系统中,写操作是异步的,即写操作返回的时候数据并没有真正写到磁盘上,而是先写到了系统cache里,随后由pdflush内核线程将系统中的脏页写到磁盘上,在下面几种情况下,系统会唤醒pdflush回写脏页。

1 、定时方式:

定时机制定时唤醒pdflush内核线程,周期为/proc/sys/vm/dirty_writeback_centisecs ,单位是(1/100)秒,默认值500(5秒)。每次周期性唤醒的pdflush线程并不是回写所有的脏页,而是只回写变脏时间超过/proc/sys/vm/dirty_expire_centisecs(单位也是1/100秒),默认值3000(30秒)。

注意:变脏的时间是以文件的inode节点变脏的时间为基准的,也就是说如果某个inode节点是10秒前变脏的,pdflush就认为这个inode对应的所有脏页的变脏时间都是10秒前,即使可能部分页面真正变脏的时间不到10秒,细节可以查看内核函数wb_kupdate()。

2、 内存不足的时候:

这时并不将所有的dirty页写到磁盘,而是每次写大概1024个页面,直到空闲页面满足需求为止。

3 、写操作时发现脏页超过一定比例:

  1. 脏页占系统内存的比例超过/proc/sys/vm/dirty_background_ratio 的时候,write系统调用会唤醒pdflush回写dirty page,直到脏页比例低于/proc/sys/vm/dirty_background_ratio,但write系统调用不会被阻塞,立即返回
  2. 脏页占系统内存的比例超过/proc/sys/vm/dirty_ratio的时候, write系统调用会被被阻塞,主动回写dirty page,直到脏页比例低于/proc/sys/vm/dirty_ratio,这一点在2.4内核中是没有的。

4 、用户调用sync系统调用:

这是系统会唤醒pdflush直到所有的脏页都已经写到磁盘为止。


 

转载自:http://blog.csdn.net/kofshower/article/details/7357968

转载请注明:
 » 
你可能感兴趣的文章
NULL不是数值
查看>>
CentOS 5 全功能WWW服务器搭建全教程
查看>>
30个优秀的后台管理界面设计案例分享
查看>>
scala111
查看>>
模块化服务规范——OSGI
查看>>
劣质代码评析——猜数字问题(上)
查看>>
纸上谈兵: 栈 (stack)
查看>>
Windows phone8 基础篇(三) 常用控件开发
查看>>
Oracle学习笔记之五,Oracle 11g的PL/SQL入门
查看>>
PHP安全编程:register_globals的安全性 全局变量注册(转)
查看>>
工程技巧Linux上建立工程项目
查看>>
Linux php 中文乱码解决
查看>>
pjsip视频通信开发(上层应用)之拨号键盘下部份拨号和删除功能
查看>>
SAP-GR/IR的理解
查看>>
Web自动化测试 Selenium 3/3 https的配置
查看>>
.NET 常用加密、解密& 数字签名算法
查看>>
“解析包时出现问题”
查看>>
Google地图之OverlayView使用(自定义叠加层)
查看>>
Android面试,与Service交互方式
查看>>
CFileDialog的使用方法简单介绍
查看>>