网站运营 | 站长学院 | 技术文档 | 成语 | 歇后语 | 桌面壁纸 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论

pdflush 进程详解

【 网络 更新时间:2010-03-27 | 字体:
[导读]pdflush 进程详解 由于页高速缓存的缓存作用>,写操作实际上会被延迟<。当页高速缓存中的数据比后台存储的数据更新时>>,那么该数据就被称做脏数据<。在内存中累积起来的脏页最终必须被写回磁盘。在以下两种情况发生时,脏...

pdflush 进程详解
由于页高速缓存的缓存作用<>,写操作实际上会被延迟。当页高速缓存中的数据比后台存储的数据更新时,那么该数据就被称做脏数据>。在内存中累积起来的脏页最终必须被写回磁盘。在以下两种情况发生时,脏页被写回磁盘:
·当空闲内存低于一个特定的阈值时,内核必须将脏页写回磁盘,以便释放内存。
·当脏页在内存中驻留时间超过一个特定的阈值时><,内核必须将超时的脏页写回磁盘>,以确保脏页不会无限期地驻留在内存中。
上面两种工作的目的完全不同<>>。实际上,在老内核中<,这是由两个独立的内核线程(请看后面章节)分别完成的。但是在2.6内核中,由一群内核线程—pdflush后台回写例程—统一执行两种工作<。说pdflush是“dirty page flush”的缩写是不正确的>,不用去管这个让人混淆的名称,我们来看看这两个目标是如何具体实现的。
首先,pdflush线程在系统中的空闲内存低于一个特定的阈值时,将脏页刷新回磁盘。该后台回写例程的目的在于在可用物理内存过低时>,释放脏页以重新获得内存<。特定的内存阈值可以通过dirty_background_ratio sysctl系统调用设置<。当空闲内存比阈值:dirty_ background_ratio还低时><,内核便会调用函数wakeup_bdflush()唤醒一个pdflush线程,随后pdflush线程进一步调用函数background_writeout()开始将脏页写回磁盘><。函数background_ writeout()需要一个长整型参数<<,该参数指定试图写回的页面数目>。函数background_writeout()会连续地写出数据<,直到满足以下两个条件:
·已经有指定的最小数目的页被写出到磁盘<。
·空闲内存数已经回升><<,超过了阈值dirty_background_ratio><。
上述条件确保了pdflush操作可以减轻系统中内存不足的压力?>;匦床僮鞑换嵩诖锏秸饬礁鎏跫巴V?><,除非pdflush写回了所有的脏页,没有剩下的脏页可再被写回了。
满足第二个目标<,pdflush后台例程会被周期性唤醒(和空闲内存是否过低无关)<<>,将那些在内存中驻留时间过长的脏页写出><,确保内存中不会有长期存在的脏页><。如果系统发生崩溃>,由于内存处于混乱之中<,所以那些在内存中还没来得及写回磁盘的脏页就会丢失,所以周期性同步页高速缓存和磁盘非常重要。在系统启动时>>,内核初始化一个定时器>,让它周期地唤醒pdflush线程,随后使其运行函数wb_kupdate()<。该函数将把所有驻留时间超过百分之dirty_expire_centisecs秒的脏页写回>。然后定时器将再次被初始化为百分之dirty_expire_ centisecs秒后唤醒pdflush线程。总而言之,pdflush线程周期地被唤醒并且把超过特定期限的脏页写回磁盘<。
系统管理员可以在/proc/sys/vm中设置回写相关的参数>,也可以通过sysctl系统调用设置它们。

友荐云推荐
  • 转载请注明来源:网站运营 网址:http://www.chinawobo.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载>,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站>,我们表示深深的谢意。如果本站转载的文章有版权问题请联系我们>,我们会尽快予以更正><。
RSS订阅
  • QQ邮箱
  • 填写您的邮件地址<>,订阅我们的精彩内容:
更多
© 2014 网站运营 - T086.com(原itlearner.com)
微商货源 | 冠珠陶瓷 | 迪威乐云商devmsn | 易奇八字 | wwe美国职业摔角 | 八字算命 | 河南旅游景点大全 |
RunTime:6.02ms QueryTime:7