Direct IO 与 Buffer IO

Direct IO 与 Buffer IO

1、Buffer I/O
(1)描述
数据在被写入的时候,默认使用的Buffer I/O。使用Buffer I/O的时候才在内存与磁盘中间加了一层page cache。
数据在写入的时候,数据会被先写入page cache。如果用户采用的时同步写(synchronous write),则数据会立即从page cache写回到磁盘中;如果使用的时延迟写(deferred writes),那么应用程序就完全不需要等到数据全部被写回到磁盘,数据只要被写到页缓存中就可以了,操作系统会定期将页缓存中的数据刷回到磁盘。
数据被读取的时候,如果这块数据已经在page cache中,则这块数据可以立即返回给程序;如果没有,则需要将数据从磁盘读取到page cache中,再从page cache到程序。
在这里插入图片描述

(2)优缺点以及优化方案
优点:
使用了page cache,提高了写入效率,减少了读盘的次数
缺点:
数据需要在程序内存以及page cache之间进行多次拷贝操作,带来cpu以及内存开销。
优化:
可以通过调整/proc/sys/vm/dirty_background_ratio来调整flush page cache的频率以及调整/proc/sys/vm/dirty_ratio来控制阻塞写操作进行flush的动作。
2、Direc I/O
(1)描述
数据在磁盘与程序内存之间进行直接传输不经过page cache。
适用于self-caching的程序,自己管理数据的读写以及缓存,降低数据在page cache中的拷贝带来的开销,提高性能
在这里插入图片描述

(2)优缺点
优点:
如果要传输的数据量很大,降低数据在page cache中的拷贝带来的开销,提高性能。
缺点:
(1)Direct I/O的开销大
(2)因为没有page cache的使用,读的时候需要从磁盘中读取数据,写的时候也没有办法延迟写只能同步写,降低了性能。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

京天不下雨

thanks

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值