`
cocos
  • 浏览: 402951 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

pdflush

阅读更多

 

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

1 定时方式:
     定时机制定时唤醒pdflush内核线程,周期为/proc/sys/vm/dirty_writeback_centisecs ,单位
是(1/100)秒,每次周期性唤醒的pdflush线程并不是回写所有的脏页,而是只回写变脏时间超过
/proc/sys/vm/dirty_expire_centisecs(单位也是1/100秒)。
注意:变脏的时间是以文件的inode节点变脏的时间为基准的,也就是说如果某个inode节点是10秒前变脏的,
pdflush就认为这个inode对应的所有脏页的变脏时间都是10秒前,即使可能部分页面真正变脏的时间不到10秒,
细节可以查看内核函数wb_kupdate()。

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

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

 

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

分享到:
评论

相关推荐

    Linux下的磁盘缓存.docx

    内核还会利用pdflush内核线程来管理这一过程,早期版本的Linux有bdfllush和kupdate线程,但在Linux 2.6及以后版本,pdflush线程取代了这两个,它们根据系统负载动态调整数量,以优化性能。 pdflush线程负责扫描页...

    linux 内核参数VM调优 之 参数调节和场景分析

    例如,若`dirty_expire_centisecs`设置得较小,则pdflush将更频繁地执行刷新操作,从而降低了脏数据所占比例达到`dirty_background_ratio`的可能性。反之,若`dirty_background_ratio`设置得较小而`dirty_expire_...

    Linux System and Performance Monitoring

    Linux 系统和性能监控 - 磁盘 I/O 子系统 Linux 系统中的磁盘 I/O 子系统是整个系统中最慢的一部分,主要是由于 CPU 到...应用程序有很多选择可以写脏页回磁盘上,例如通过 I/O 调度程序或 pdflush 程序写回磁盘上。

    Linux 性能监测:Memory

    例如,当脏页面的数量达到总内存页面的 10% 时,pdflush 就会启动写入操作。 #### 四、vmstat 工具的使用 vmstat 是一个非常有用的工具,用于监控系统的内存使用情况。以下是一些重要的指标及其含义: - **procs*...

    精通Linux设备驱动程序开发-第三章-内核组件.pdf

    此外,还有`[pdflush]`负责管理页缓存中的脏页写回,以及`[kjournald]`作为日志记录线程,服务于文件系统日志功能。 #### 工作队列与软中断:延后执行的策略 工作队列和软中断是内核线程管理中的两个重要概念。...

    系统原理基础及系统调优1

    - 磁盘IO体系:包括缓存、pdflush、bio、磁盘队列、IO调度器等,优化数据读写效率。 - IO调优:涉及IO调度策略,如NOOP、Deadline、CFQ等。 5. **Linux虚拟文件系统(VFS)**: - VFS提供统一的接口,支持多种...

    linux操作系统内核技术-uestc课件

    教学内容与要求  1掌握处理器在进程地址空间上的三种运行位置,了解内核编程不能使用C库函数和FPU,以及可能产生内存故障、核心栈溢出... 13熟悉页cache和radix_tree,缓冲区cache,和pdflush内核线程原理。(2小时)

    线上问题调查常用命令

    - **pdflush**:负责将内存中的内容与文件系统进行同步操作,即将写操作返回时数据并没有真正写到磁盘上,而是先写到了系统的cache中,随后由pdflush内核线程将系统中的脏页写到磁盘上。 ##### 工具介绍 - **cat /...

    Linux系统监控

    - **pdflush**:负责将脏页(已修改但未写回磁盘的内存页)写回磁盘,防止内存过度压力。 3. **问题识别**: - 高频率的上下文切换和系统时间可能表明程序大量使用系统调用。 - 高内存使用率和SWAP活动可能意味...

    Linux Performance

    pdflush是另一个重要的内核进程,它负责将脏页写回磁盘。合理的配置可以减少磁盘I/O操作带来的延迟。 ##### 5.6 案例研究:大量入站I/O 本案例研究探讨了在面临大量入站I/O请求时,虚拟内存管理机制如何工作,以及...

    Linux操作系统性能监测:磁盘IO篇

    脏页由内核的pdflush进程负责同步到磁盘,以确保数据一致性。 3. **Anonymous Pages(匿名页)**:这些页面属于某个进程但不与任何文件关联,因此无法被同步到磁盘。当内存紧张时,内核会将匿名页写入交换分区并...

    漫谈linux文件IO

    3. **Page Cache**:内核使用 pdflush 线程监控 Page Cache 中的脏页,并根据需要将其提交到 IO 调度队列。IO 调度器负责决定何时以及如何将数据写回磁盘。 #### 五、磁盘 I/O 调度与优化 磁盘 I/O 调度是一个复杂...

    linux monitoring

    - **pdflush**:另一个与内存管理相关的内核进程,主要用于将脏页面(即修改后未同步到磁盘的页面)写回到磁盘上。 #### 七、I/O监控 - **读写数据页**:I/O操作涉及到的数据传输,包括从磁盘读取到内存以及从内存...

    线上问题排查

    - **pdflush**:负责将内存中已修改的内容同步到磁盘上的内核线程。 - **经验参考值**:当系统开始频繁地使用虚拟内存时,可能意味着物理内存不足,需考虑增加物理内存或优化应用。 ##### 3. 磁盘 I/O - **...

    Linux System and Performance Monitoring 英文教程

    - **pdflush守护进程**:用于加快数据页写回磁盘的速度,从而释放更多的物理内存供系统使用。 #### 七、I/O监控 - **读写数据**:监控应用程序对磁盘的读写活动,评估其对磁盘I/O的影响。 - **主要和次要页面故障*...

    oscon2009-linux-monitoring1.pdf

    - **pdflush**:用于强制将修改过的内存页写回磁盘,从而释放更多的物理内存供其他进程使用。 #### 五、I/O监控介绍 - **读写数据**:I/O操作涉及将数据从磁盘读取到内存或将数据从内存写入磁盘。 - **页错误**:...

    疯狂内核之——虚拟文件系统

    - **4.5.1 pdflush内核线程**:负责定期将脏页写回磁盘。 - **4.5.2 搜索要刷新的脏页**:在写回之前,需要找到哪些页面是脏页。 - **4.5.3 回写陈旧的脏页**:将脏页写回到磁盘上,以保持数据一致性。 #### 五、...

    Linux Page Cache参数调优

    1. pdflush刷新脏数据条件 cached中的脏数据满足如下几个条件中一个或者多个的时候就会被pdflush刷新到磁盘: (1)数据存在的时间超过了dirty_expire_centisecs(默认30s)时间 (2)脏数据所占内存 /(MemFree + ...

    嵌入式系统/ARM技术中的Linux 内存管理机制简介

    当空闲内存低于 `dirty_background_ratio` 配置的值时,pdflush 线程开始写回脏页,直到空闲内存恢复到阈值之上或所有脏页都被写回。此外,pdflush 线程还会定期唤醒以清理长时间未写回的脏页,以防因系统崩溃造成...

    Android高性能日志写入方案的实现

    用户 write 调用完成后,页被修改后成为脏页,操作系统有两种机制将脏页写回磁盘,一是用户手动调用 fsync(),二是由 pdflush 进程定时将脏页写回磁盘。 然而,这个过程中牵涉到两次数据拷贝:一次是用户空间内存...

Global site tag (gtag.js) - Google Analytics