Linux上的檔案IO效能優化

對於一個要求數據讀寫同步的程式,通常可能加上O_DIRECTO_SYNC來改變kernel的IO操作

呼叫流程的圖可以在這邊找到

也可以參考這篇文章的圖

這邊

在預設情況下使用檔案相關API即是與VFS互動

VFS內部會利用Page Cache進行IO快取加速,因此mmap實際上也是與Page Cache互動

而Buffer Cache主要是針對device讀寫的加速

O_SYNCO_DSYNC是對於Page Cache在寫時附帶進行flush

O_DIRECT則是不使用Page Cache,直接讀寫 (DMA as possible),且必須自己進行對齊與固定大小

參考
linux系统数据落盘之细节