Linux
如何使 TMPFS 中的文件更有可能交換
我正在為我的
/tmp
目錄使用 tmpfs。/tmp
在換出應用程序正在使用的任何內容之前,如何讓電腦決定換出其中的文件?基本上,
/tmp
與程序使用的記憶體相比,裡面的文件應該具有更高的交換性。似乎這個答案https://unix.stackexchange.com/a/90337/56970很有意義,但是您不能更改單個目錄的交換性。雖然我知道 cgroups,但我沒有看到任何將 tmp 變成 cgroup 的方法?
如果一切順利,你的核心應該決定自己“做正確的事”。它使用許多奇特的啟發式方法來決定在記憶體壓力時交換什麼以及保留什麼。這些啟發式算法是由在記憶體管理方面具有豐富經驗的非常聰明的人精心建構的,並且已經足夠好,很難改進。
核心使用這樣的組合來決定交換什麼:
- 記憶體的使用時間。
- 自映射後記憶體是否已被修改。例如,一個共享庫將被推到堆記憶體之前,因為堆記憶體是臟的,需要寫入交換,而共享庫映射記憶體可以從磁碟上的原始文件再次載入,以防再次需要它,所以不需要寫那些頁面來交換。在這裡你應該意識到
tmpfs
記憶體總是臟的(除非它是一個用零填充的新頁面),因為它沒有任何支持。- 來自 的提示
mprotect()
。- 可能還有更多。
簡短的回答:不,你不能直接覆蓋核心關於如何管理記憶體的決定。