作者kimi9235 (惡人毛)
看板LinuxDev
標題[問題] Linux Read/Write buffer\cache問題
時間Fri Jul 31 14:23:17 2020
Hi 各位大大好
最近在開發板錄影寫檔到USB隨身碟,由於4K frame過大,所以只要一寫檔就會讓buffer/c
ache吃滿滿。
但程式也不會突然中止,但寫完檔也不會還回去,除非將檔案移除後才會將buffer/cache
回到free的狀態,本來以為是自己程式有誤,拿DD去測試寫檔也是同樣問題。
(dd if=/dev/zero of=/mnt/usb/123.xxx bs=1M count=1K conv=fsync)
雖然有些文章是寫說,當有user program需要memory會優先釋放buffer/cache,但還是覺
得怪怪的,畢竟都會吃到memory剩下2~3MB,後來也開檔 mount下過sync,但還是會吃記憶
體,不知各位有沒有遇到這類問題。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.31.12 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1596176599.A.DBD.html
→ leolarrel: 看你的敘述蠻正常的呀 07/31 17:50
推 askacis: google POSIX_FADV_DONTNEED 08/02 22:11
→ askacis: 告訴kernel不要把你的檔案cache起來 08/02 22:11
→ askacis: sync應該只是寫入IO,但還是會cache以防你之後用會用 08/02 22:13
→ kimi9235: 感謝askacis大,學到一課了!!! 08/03 16:52
→ os369510: 看不懂問題 覺得buffet cache 用太多可以drop cache 08/25 10:18
→ aweilin: Dropcache 如果是一直在寫入狀態下是無法free的,且 09/14 08:49
→ aweilin: 有一些page也無法立即的被free掉,通常寫檔都是一直在寫 09/14 08:49
推 jack7923love: dirty_ratio? 09/14 23:53