robot
最新文章(10)
快樂的小成就
Pythonkey 計劃
Mqskit 和其它相關工具
CPython 的 GC 二、三事
寫 Mecurial Extension 是件快樂的事!
Mozilla 台灣辨公室徵人啟事
關於 Apple 的兩項專利
core dump 之前的 frame
怎麼發出 beep 聲?
先承認你要找的是奴才吧!
首頁
新編
最新留言
Entries RSS
重要關鍵字(10)
coding (122)
Python (91)
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: