robot
最新文章(10)
Mqskit 和其它相關工具
CPython 的 GC 二、三事
寫 Mecurial Extension 是件快樂的事!
Mozilla 台灣辨公室徵人啟事
關於 Apple 的兩項專利
core dump 之前的 frame
怎麼發出 beep 聲?
先承認你要找的是奴才吧!
程式碼要清的多乾淨?
FreeBSD 的 Thread-Local Storage 實作
首頁
新編
最新留言
Entries RSS
重要關鍵字(10)
coding (122)
Python (93)
FreeBSD (71)
WEB (61)
URL (48)
hardware (46)
javascript (36)
Linux (34)
blog (30)
C++ (16)
所有關鍵字
新增 URL
回收 Linux cached memory
by thinker
2 Columns
關鍵字:
coding
Linux
最近常被問到,當程式讀取大量資料, kernel 會使用大量記憶體當 cache,又不會在記憶體不足時進行回收,造成程式無法執行。這時該怎麼辨? 方法一: {{{#!raw echo 1 > /proc/sys/vm/drop_caches or sysctl -w vm.drop_caches=1 }}} 這會觸發 kernel 回收用於 cache 的記憶體。 方法二: {{{ fcntl(fd, F_SETFL, O_DIRECT) }}} 在程式裡,為 file descriptor 設上 O_DIRECT,使 filesystem 避免 cache 該檔案的內容。這適用於某些大檔案。例如,播放隨便就上 Giga bytes 的影片的 media player,就能在 file descriptor 設定 O_DIRECT,避免吃掉大量的系統記憶體。 方法三: {{{#!raw sysctl -w vm.vfs_cache_pressure=n (n > 100) }}} 這會使 kernel 更勤於回收 cache。 以上作為參考。
最後更新時間: 2010-08-20 00:17:50 CST |
引用
查詢:
COMMENTS: