OS 大文件传输

OS 大文件传输

阻塞 IO :

  • 内核缓存区 (PageCache) 拷到用户缓冲区

image.png

异步 I/O 没用到 PageCache

  • 直接 I/O, 没用 PageCache
  • 缓存 I/O, 用了 PageCache
  • 对磁盘, 异步 I/O 只能用直接 I/O

image.png

传输大文件的, 用异步I/O+直接I/O 替代零拷贝

直接 I/O 应用场景:

  • 应用已实现磁盘缓存, 如: MySQL 开启直接 I/O,默认: 不开启
  • 传输大文件, 大文件难命中 PageCache, 还导致热点数据无法利用缓存,增大性能开销,因此,这时应该使用直接 I/O。

直接 I/O 绕过 PageCache 的优化:

  • 缓存多个 I/O 请求在 PageCache, 再合并成大 I/O 请求, 发给磁盘,减少磁盘寻址
  • 预读后续 I/O 请求放在 PageCache, 减少对磁盘操作

根据文件大小, 传输文件方式:

  • 传输大文件,用异步 I/O+直接 I/O
  • 传输小文件,用零拷贝技术

猜你喜欢

转载自blog.csdn.net/qq_44226094/article/details/131750344