mmap的数据可靠性分析
来源:互联网 发布:吕梁广电网络客服电话 编辑:程序博客网 时间:2024/06/05 05:29
UPS项目打算用mmap做增量数据管理,对数据可靠性有一定要求,简单做了些实验,结果与大家分享下。
1. 对mmap内存的写操作,会直接进入系统page-cache;msync调用负责把脏的page-cache持久化到硬盘。
2. Page-cache操作系统自身也有管理策略:一个是定期把脏数据(有过更新的)刷回硬盘(默认30s);一个是脏数据达到一定比例,也会触发刷新(默认10%)。
具体可参考:http://www.westnet.com/~gsmith/content/linux-pdflush.htm
3. 通过mmap更新文件(PROT_WRITE和MAP_SHARED模式),文件的mtime和ctime没有发生更新,与man中对mmap的描述不一致。据说是kernel的一个bug,目前还没有修复。
可参考:http://forum.soft32.com/linux/mmap-mtime-updates-ftopict338320.html
https://lkml.org/lkml/2006/5/17/138
从上面实验结果可以判断:
1. 如果使用mmap的进程挂了,写到mmap的数据不会丢失,因为已经写到page-cache;page-cache里面的数据对所有进程都是可见的。
2. 如果是机器挂掉,比如掉电,page-cache里的数据会丢掉;mmap会最多丢失30s左右的数据。
由于机器挂掉概率较小,而且增量时可以自己做一些msync策略,比如更新1K次之后,主动调用一次msync,这样就可以减少数据丢失。
有理解不对的,还请大家补充。
- mmap的数据可靠性分析
- 单片机复位电路的可靠性分析
- 系统的可靠性分析与设计
- 【源码】canal和otter的高可靠性分析
- 基于mmap的KV数据存储实现(一)概述
- mmap的使用
- mmap 的使用
- java的Mmap二三事
- mmap的使用
- mmap的使用
- mmap函数的使用
- mmap的使用
- mmap函数的使用
- mmap的使用
- java的Mmap二三事
- mmap的一些琐碎
- mmap 的理解
- mmap函数的使用
- Dictionary与Object的区别
- 如何让WINCE系统启动直接运行自己的程序
- 今天必须得记
- Smarty 介绍与配置
- 一步一步完成自己的梦想
- mmap的数据可靠性分析
- PHP魔术方法
- 系统内核修改LCD大小
- 修改注册表校正触摸笔
- 318240-byte external allocation too large for this process 问题
- Install ESXi from USB stick
- ZJNU 1006 骑士游历
- ubuntu 10.04以及10.10启动流程分析
- Http学习之使用HttpURLConnection发送post和get请求