看板 LinuxDev 關於我們 聯絡資訊
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