簡體   English   中英

aio_read、aio_write 是否由內核緩沖? 在 Linux 的情況下,它們是否通過頁面緩存?

[英]Are aio_read, aio_write buffered by kernel? In case of Linux, does they go through page cache?

問題如標題。 在 Linux 中,傳遞O_DIRECT繞過緩沖區完成的頁面緩存。 例如,數據庫系統將使用它來管理自己的緩沖區。

我想知道aio_write / aio_read默認緩沖? 它們當然是排隊的,但這是否涉及復制數據? 如果默認情況下它們是緩沖的,可能我們可以直接open文件而不傳遞O_DIRECT ,盡管在任何情況下傳遞O_DIRECT都會繞過普通文件的內核頁面緩存。

POSIX 標准似乎表明 aio_read/aio_write 不是由內核緩沖的:

緩沖效果

如果在實際寫入設備之前對已緩沖的文件執行異步 I/O,則異步 I/O 可能不會比普通 I/O 提供任何性能優勢; 為執行異步 I/O 所竊取的周期將從正在運行的進程中帶走,並且 I/O 將在中斷時發生。 這種潛在的性能增益不足並沒有消除實時應用程序對異步 I/O 的需求,這些應用程序通常會使用專門的硬件支持、多個處理器和/或無緩沖的同步 I/O。

但是,在描述有關緩沖的 aio_read/aio_write 時沒有明確的詞。

是的。 它們通過內核緩存。 aio_fsync證明了這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM