Linux - 怎么实现大文件传输
生活随笔
收集整理的這篇文章主要介紹了
Linux - 怎么实现大文件传输
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一 前言
博文《PageCache》中介紹了 PageCache 的優(yōu)缺點,其實在處理大文件中 PageCache 作用反而沒有那么好。所以本文介紹 Linux 是怎么處理大文件的。
二 起因
首先看一下一個 read() 系統(tǒng)調用流程發(fā)生了什么,如下圖:
從上圖不難發(fā)現(xiàn)兩個問題:1,這是一個同步 I/O;2,數(shù)據(jù)多次拷貝。通常分別采用 異步 I/O 和 直接 I/O 來優(yōu)化上面的問題。
三 異步 I/O、 直接 I/O
異步 I/O 是指發(fā)起 I/O 請求后,不再阻塞等待。而是先去處理其他任務,當拷貝完成后再進行處理。
異步 I/O 并沒有涉及到 PageCache,所以使用異步 I/O 就意味著要繞開 PageCache。
繞開 PageCache 的 I/O 叫直接 I/O,使用 PageCache 的 I/O 則叫緩存 I/O。通常,對于磁盤,異步 I/O 只支持直接 I/O。
如下圖:
四 總結
針對大文件的傳輸?shù)姆绞?#xff0c;應該使用「異步 I/O + 直接 I/O」來替代零拷貝技術。常見的兩種 直接 I/O 應用場景:
總結
以上是生活随笔為你收集整理的Linux - 怎么实现大文件传输的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Azure blob 文件下载
- 下一篇: linux 修复yum,centos7.