1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
O_DIRECT
沒有按照你的想法去做。雖然它減少了內(nèi)存復(fù)制(因?yàn)樗粫?huì)在復(fù)制到設(shè)備驅(qū)動(dòng)程序之前復(fù)制到緩存),但這并不能提高性能。
文件系統(tǒng)緩存確保系統(tǒng)調(diào)用可以在數(shù)據(jù)寫入設(shè)備之前盡早返回,并緩沖數(shù)據(jù)以更大的塊發(fā)送數(shù)據(jù)。
使用O_DIRECT
,系統(tǒng)調(diào)用會(huì)一直等待,直到數(shù)據(jù)完全傳輸?shù)皆O(shè)備。
O_DIRECT
(自 Linux 2.4.10 起)盡量減少進(jìn)出此文件的 I/O 的緩存效應(yīng)。 通常這會(huì)降低性能,但在特殊情況下很有用,例如當(dāng)應(yīng)用程序進(jìn)行自己的緩存時(shí)。文件 I/O 直接從用戶空間緩沖區(qū)完成。
O_DIRECT
標(biāo)志本身努力同步傳輸數(shù)據(jù),但不保證O_SYNC
數(shù)據(jù)和必要的元數(shù)據(jù)被傳輸。
另請(qǐng)參閱:O_DIRECT 的真正含義是什么?
使用后無需手動(dòng)釋放緩存。緩存被 Linux 內(nèi)核視為可用的可用內(nèi)存。如果進(jìn)程需要緩存占用的內(nèi)存,內(nèi)核將在此時(shí)刷新/釋放緩存。緩存不會(huì)“用完”內(nèi)存。
- 1 回答
- 0 關(guān)注
- 154 瀏覽
添加回答
舉報(bào)