传统IO 零拷贝 直接IO

在这里插入图片描述

场景:从磁盘读取文件并通过网络发送出去。这个过程数据从经历了哪些历程?

传统IO

  • 过程:从磁盘 通过DMA 拷贝到Page Cache(内核空间), 然后CPU从PageCache 拷贝到Memory(用户空间),然后从Memory 拷贝到Socket Cache,然后再从Socket Cache 拷贝到 网卡
  • 特点:4次上下文切换,4次数据拷贝
    在这里插入图片描述

零拷贝

  • 过程: 数据从磁盘通过DMA拷贝到PageCache,然后利用SG-DMA直接拷贝到网卡
  • 特点:2次上下文切换,2次数据拷贝
    在这里插入图片描述

直接IO

  • 过程:数据通过DMA从磁盘拷贝到Memory,再从Memory 拷贝到Socket Cache,再从Socket Cache拷贝到 网卡
  • 特点:4次上下文切换,3次数据拷贝,绕过PageCache。
    在这里插入图片描述

总结

  • 直接IO也有它的用途,就是传输大的文件,因为传输大文件没有数据局部性特点,PageCache完全没用,反而因为占用大量PageCache使得其它小文件IO变慢。一般直接IO和异步IO是一起用的。异步IO就是IO的时候不阻塞,直接返回,数据准备好再通知程序。
  • 直接IO绕过PageCahe,带来的代价就是不能享受PageCache的大保健服务,比如合并IO、预读等,这些服务能有效提升磁盘IO的性能,以为减少了磁头寻道次数。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值