异步IO,直接IO,缓存IO

文章讨论了在高并发场景下,大文件传输如何利用异步I/O和直接I/O优化性能。通过对比传统的缓存I/O(使用PageCache)和异步I/O,指出在大文件操作中,PageCache可能导致热点数据淘汰,而异步I/O可以避免进程阻塞,提高效率。尽管异步I/O需要CPU参与数据传输,但在某些情况下,结合直接I/O以绕过PageCache,能更好地服务于高并发需求。
摘要由CSDN通过智能技术生成

缓存IO流程

(1)上层发起系统调用读取磁盘文件,此时发起调用的线程被阻塞,等待结果的返回
(2)操作系统检查PageCache中是否有需要的数据
(3)如果有,无需再从磁盘拷贝,线程阻塞结束
(4)如果没有,将数据从磁盘拷贝到PageCache,线程阻塞结束

对于大文件来说,如果使用PageCache的话,会把PageCache的大部分热点数据淘汰,在高并发场景下,这对于其他任务是不利的。

在IO过程中进程等待IO结果的返回,进程被阻塞,这对于进程是不利的

异步IO

进程发起系统调用读取数据后,进程继续执行其他任务,无需等待结果的返回。
当内核将磁盘控制器缓冲区中的数据拷贝到进程缓冲区后,进程将接收到内核的通知,再去处理数据;

对比

异步 I/O 并没有涉及到 PageCache,所以使用异步 I/O 就意味着要绕开 PageCache。

绕开 PageCache 的 I/O 叫直接 I/O,使用 PageCache 的 I/O 则叫缓存I/O。通常,对于磁盘,异步 I/O 只支持直接 I/O。

在高并发的场景下,针对大文件的传输的方式,应该使用异步 I/O + 直接 I/O来替代零拷贝技术。

异步I/O情况下,需要CPU将数据从磁盘控制器缓存区传输到进程缓冲区,CPU用于传输数据了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值