• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java page cache回写机制案例详解

java 搞代码 4年前 (2022-01-09) 24次浏览 已收录 0个评论
文章目录[隐藏]

JAVA写文件的基本流程

在不使用堆外内存的情况下,java在写文件时,先将字节写入JVM的堆内内存中;然后调用jvm的写文件函数,将字节写入jvm的堆外内存中,jvm再调用系统内核的写文件函数,将字节写入内核的heap中;然后内核将字节写入page cache中,将page cache状态改为dirty,根据page cache的回写机制在合适的时机将字节写入磁盘。

page cache 自动回写机制

page cache的回写时机由系统配置/etc/sysctl.conf 中的几个参数决定,分别是:

  • dirty_background_bytes

默认值:0  表示不启用

当脏页所占的内存大小超过dirty_background_bytes时,内核的pdflush线程会从后台开始回写脏页,不会影响应用程序的后序IO操作。

  • dirty_background_ratio   

默认值 :10

参数意义:当脏页所占的百分比(相对于所有可用内存,即空闲内存页+可回收内存页)达到dirty_background_ratio时内核的pdflush线程从后台开始回写脏页,不会影响应用程序的后序IO操作。增大会使用更多内存用于缓冲,可以提高系统的读写性能。当需要持续、恒定的写入场合时,应该降低该数值。

注意:dirty_background_bytes参数和dirty_background_ratio参数是相对的,只能指定其中一个。当其中一个参数文件被写入时,会立即开始计算脏页限制,并且会将另一个参数的值清零。

  • dirty_bytes

默认值:0  表示不启用

当脏页所占的内存数量达到dirty_bytes时,内核将脏页中的数据刷入磁盘并阻塞后序的IO操作。

 注意:dirty_bytes参数和dirty_ratio参数是相对的,只能指定其中一个。当其中一个参数文件被写入时,会立即开始计算脏页限制,并且会将另一个参数的值清零

  • dirty_ratio

默认值:20

参数意义:当脏页所占的百分比(相对于所有可用内存,即空闲内存页+可回收内存页)达到dirty_ratio时,内核将脏页中的数据刷入磁盘并阻塞后序的IO操作。

  • dirty_background_ratio与dirty_r
    本文来源gaodai.ma#com搞#代!码网_

    atio比较

dirty_ratio是属于强制性的回写,也就是说当一个内存区的脏页达到这个比例时就会触发内核内存管理把脏页强制回写的流程,但dirty_background_ratio是属于软性的行为,因为这是透过pdflush内核线程进行的流程,可以在后台执行对这些脏页面回写,并不会因此影响到当下正在执行中的过程。 所以看Linux内核中预设的比例是脏页达到5%的比例时就会先透过pdflush内核线程进行回写,当脏页达到10%比例时,就等于是一个很严重的状况,此时就会在平衡脏页面流程中触发强制的回写,让系统可以回复到原本预设合理的状态。

  • dirty_expire_centisecs

默认值:3000

参数意义:用来指定脏数据能存活的时间。指定的值是按100算做一秒计算。只有当超过这个值后,才会被内核进程pdflush写到磁盘。

  • dirty_writeback_centisecs

默认值:500

参数意义:pdflush回写的频率,每次的唤醒的间隔,是以数字100算做1秒。如果将这项值设为500就相当5秒唤醒pdflush进程。如果将这项值设为0就表示完全禁止定期回写数据。

  • drop_caches

向/proc/sys/vm/drop_caches文件中写入数值可以使内核释放page cache,dentries和inodes缓存所占的内存。

  只释放pagecache:

echo 1 > /proc/sys/vm/drop_caches

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java page cache回写机制案例详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址