Linux系统当进行文件写操作时,并不会将数据立马写入磁盘,而是写写到缓存,等待达到占用内存一定比例或超过一定时间才会批量将这些缓存数据写入磁盘,这样可以减少IO操作,提升性能和磁盘寿命。如果数据还没来得及写入磁盘发生硬件掉电,这些数据就会丢失。应用可以调用sync实时将内容写入磁盘避免丢失。排查丢失问题可以在断电前执行sync命令,看能不能复现,若无法复现,说明就是缓存没有及时写入磁盘导致。

我们可以调整系统一些参数来改善此问题,但需要均衡IO性能与数据安全。

1. /proc/sys/vm/dirty_ratio

这个参数控制文件系统的文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合时,应该降低其数值

2. /proc/sys/vm/dirty_background_ratio

这个参数控制文件系统的pdflush进程,在何时刷新磁盘。单位是百分比,表示系统内存的百分比,意思是当写缓冲使用到系统内存多少的时候,pdflush开始向磁盘写出数据。增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合时,应该降低其数值

3. /proc/sys/vm/dirty_writeback_centisecs

这个参数控制内核的脏数据刷新进程pdflush的运行间隔。单位是 1/100 秒。缺省数值是500,也就是 5 秒。如果你的系统是持续地写入动作,那么实际上还是降低这个数值比较好,这样可以把尖峰的写操作削平成多次写操作

4. /proc/sys/vm/dirty_expire_centisecs

这个参数声明Linux内核写缓冲区里面的数据多“旧”了之后,pdflush进程就开始考虑写到磁盘中去。单位是 1/100秒。缺省是 3000,也就是 30 秒的数据就算旧了,将会刷新磁盘。对于特别重载的写操作来说,这个值适当缩小也是好的,但也不能缩小太多,因为缩小太多也会导致IO提高太快

缓存数据存入磁盘的最长时间,如果这段时间写不完,就会报异常停止写,这样缓存数据会不断积累,导致内存爆掉。

echo 0 > /proc/sys/kernel/hung_task_timeout_secs

调低百分比,让缓存尽早的写入磁盘,这样缓存不会积累大量的数据,才开始写入磁盘

echo 5 > /proc/sys/vm/dirty_background_ratio

echo 10 > /proc/sys/vm/dirty_ratio

Android修改这些参数默认值:

system/core/rootdir/init.rc

570     # Tweak background writeout
571     write /proc/sys/vm/dirty_expire_centisecs 200
572     write /proc/sys/vm/dirty_background_ratio  5

另一方面可以修改mount 挂载参数,使用sync同步模式,直接将文件写入磁盘,但会降低性能

参考:

linux 磁盘cache参数设置_b779789251的博客-CSDN博客 https://blog.csdn.net/b779789251/article/details/94559911

linux调整缓存写入磁盘的时间,减少磁盘爆掉的可能性 - 脚本小娃子 - 博客园 https://www.cnblogs.com/shengulong/p/9265145.html

深入解析Linux下的磁盘缓存机制与SSD的写入放大问题_LINUX_操作系统_脚本之家 https://www.jb51.net/LINUXjishu/405114.html

https://blog.csdn.net/chuanzhilong/article/details/76020517

【集群实战】NFS网络文件共享服务2-mount挂载(参数,优化)--async sync dirsync等参数讲解

https://www.cnblogs.com/zoe233/p/12018875.html

Android/Linux 磁盘写入缓存/等待时间 参数修改相关推荐

  1. android向本地写入缓存

    写入缓存方法: /*** 用于做本地缓存,T需要覆盖equals()方法和hashCode()方法*/ public class BufferStore<T extends Serializab ...

  2. linux磁盘读写缓存,linux读写缓存

    1. 操作系统缓存 在linux世界里,一切可读写设备都可看作是文件.文件cache设计的好坏直接影响着文件系统和磁盘的性能.最直观的是使用free命令看到的cached列. 这里面的cached列就 ...

  3. linux raid卡缓存,RAID卡的缓存与磁盘自带的缓存的关系

    RAID卡的缓存与磁盘自带的缓存的关系 RAID卡是否有(启用)缓存对"随机读写"性能有巨大的影响.中高端的RAID卡都有缓存(价格也高). 那么RAID卡的缓存与磁盘自带的缓存是 ...

  4. linux降低磁盘的读,Linux磁盘I/O优化:vm.dirty_ratio - 米扑博客

    Linux 文件缓存是一项重要的性能改进,在大多数情况下,读缓存在绝大多数情况下是有益无害的(程序可以直接从RAM中读取数据).写缓存比较复杂,Linux内核将磁盘写入缓存,过段时间再异步将它们刷新到 ...

  5. Linux磁盘I/O(二):使用vm.dirty_ratio和vm.dirty_background_ratio优化磁盘性能

    文件缓存是一项重要的性能改进,在大多数情况下,读缓存在绝大多数情况下是有益无害的(程序可以直接从RAM中读取数据).写缓存比较复杂,Linux内核将磁盘写入缓存,过段时间再异步将它们刷新到磁盘.这对加 ...

  6. Android/Linux boot time分析优化

    如果需要优化boot time,就需要一个量化的工具来分析每个阶段的时间消耗.这种类型的优化特别适合使用基于timeline的图表,有着明显的时间顺序.要求不但能给出整个流程消耗的时间,还要能对流程进 ...

  7. linux 磁盘缓存设置,Linux下的磁盘缓存

    前段时间在开发一个使用SSD做缓存的系统,在高速写入数据时会出现大量的磁盘缓存.太多的磁盘缓存如果没有及时的写入磁盘中,在机器出现问题时是非常危险的,这样会导致很多的数据丢失,但是如果实时的将数据刷入 ...

  8. linux中quota信息查看,Linux quota命令参数及用法详解---Linux磁盘配额限制设置和查看命令...

    功能说明:显示磁盘已使用的空间与限制. 语 法:quota [-quvV][用户名称...] 或 quota [-gqvV][群组名称...] 补充说明:执行quota指令,可查询磁盘空间的限制,并得 ...

  9. Android使用磁盘缓存DiskLruCache

    DiskLruCache 不同于LruCache,LruCache是将数据缓存到内存中去,而DiskLruCache是外部缓存,例如可以将网络下载的图片永久的缓存到手机外部存储中去,并可以将缓存数据取 ...

最新文章

  1. JavaScript对象,方括号和算法
  2. 脚本检测到文件特定词后做下一步动作 down restart
  3. struts2拦截器底层原理
  4. C#中IList与List区别
  5. 强化学习note2——value iteration和policy iteration的区别,MC和TD的区别
  6. 用Visual Studio 2019 开发stm32,cortex-m3, arm
  7. 当计算机从硬盘读取数据后 将数据,当计算机从硬盘读取数据后,将数据暂时储存在于()...
  8. 【C++ Primer | 16】std::move和std::forward、完美转发
  9. 2021年中国在线旅游行业分析报告
  10. php微信公众平台开发获取access_token,用CURL出现certificate verify failed错误的解决方法...
  11. nohup java -jar
  12. C/C++[codeup 1907]吃糖果
  13. chrome vue 未响应_分享几个宝藏级Vue管理后台框架 必须收藏
  14. 【协议】LLDP、ARP、STP、ICMP协议
  15. Python-docx 读写 Word 文档:插入图片、表格,设置表格样式,章节,页眉页脚等
  16. BH1750光照传感器超详细攻略(从原理到代码讲解,看完你就懂了)
  17. 几何语言点C是ab的中点,数学几何定理符号语言
  18. 问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist:...
  19. 轻松管好团队,就靠RACI模型|优思学院
  20. 华清远见Qt作业网络聊天室1014

热门文章

  1. VBSscript实现后台运行Windows bat脚本
  2. C#制作一个图片查看器,具有滚轮放大缩小,鼠标拖动,图像像素化,显示颜色RGB信息功能
  3. 支付宝沙箱模拟支付,退款等
  4. 保险代理机构管理规定
  5. 找不到msvcr110dll,无法继续执行代码,解决方法分享
  6. 易语言图片上传post
  7. macOS Ventura 13.3.1 (22E261) 正式版发布,ISO、IPSW、PKG 下载
  8. 怎么把图片修改成600x800像素图片
  9. VMare虚拟机突破锐捷多网卡限制,成功联网
  10. 赢在CSDN:我如何靠专栏在CSDN赚到第一桶金的呢?