本文主要分析内存以及I/O相关的系统调用和库函数的实现原理,根据原理给出在使用过程中需要注意的问题和优化的侧重点,本文涉及到的系统调用包括readahead,pread/pwrite,read/write,mmap,readv/writev,sendfile,fsync/fdatasync/msync,shmget,malloc。
本文先简单介绍应用程序对内存的使用以及I/O系统对...
分类:
其他好文 时间:
2014-09-23 12:55:44
阅读次数:
380
1 AOF日常命令append:
1.1. Redis执行文件事件:执行用户命令,并将该命令缓存于Server.aof_buf中{函数1}
1.2. Redis执行时间时间的ServerCron:依据参数server.aof_flush_postponed_start,{函数4}
1.2.1. 将redisServer.aof_buf写入文件Server.aof_fd。
1.2.2. 该文件何时fsync到磁盘有三种机制:
AOF_FSYNC_EVERYSEC 每秒调用...
分类:
其他好文 时间:
2014-09-14 19:23:57
阅读次数:
402
一、备份 1.锁定数据库: use admin db.runCommand({fsync:1,lock:1}) { “info” : “now locked against writes, use db.fsyncUnlock() to unlock”, “seeAlso” : “http://www.mongodb.org/display/DOCS/fsy...
分类:
数据库 时间:
2014-09-11 17:37:42
阅读次数:
237
最近阅读leveldb源码,作为一个保证可靠性的kv数据库其数据与磁盘的交互可谓是极其关键,其中涉及到了不少内存和磁盘同步的操作和策略。为了加深理解,从网上整理了linux池畔同步IO相关的函数,这里做一个罗列和对比。大部分为copy,仅为记录,请各位看官勿喷。 传统的UNIX实现在内核中设有缓冲区...
分类:
系统相关 时间:
2014-07-04 00:08:09
阅读次数:
414
同步就是将物理内存中dirty的页写入到磁盘中,保证磁盘和物理页之间的内容一致。 触发同步操作的时机: 1、周期性内核线程,扫描脏页,根据一定的规则选择脏页,将页写回到磁盘。 2、如果内核中的脏页过多,会触发同步 3、内核中其它组件触发同步操作(如sync、fsync和fdatasync...
分类:
系统相关 时间:
2014-06-14 16:26:58
阅读次数:
405
前言:
Linux,unix在内核中设有 缓冲区高速缓冲或页面高速缓冲,大多数磁盘I/O都通过缓冲进行,采用延迟写技术。
sync:将所有修改过的快缓存区排入写队列,然后返回,并不等待实际写磁盘操作结束
fsync:只对有文件描述符制定的单一文件起作用,并且等待些磁盘操作结束,然后返回。
fdatasync:类似fsync,但它只影响文件的数据部分。fsync还会同步更...
分类:
系统相关 时间:
2014-05-13 08:57:25
阅读次数:
507