如何使 TMPFS 内的文件更有可能交换

CMC*_*kai 8 linux swap tmpfs

我正在为我的/tmp目录使用 tmpfs 。/tmp在换出应用程序正在使用的任何内容之前,如何让计算机决定换出里面的文件?

基本上,/tmp与进程使用的内存相比,里面的文件应该具有更高的交换率。

似乎这个答案https://unix.stackexchange.com/a/90337/56970很有道理,但你不能改变单个目录的 swappiness。虽然我知道 cgroups,但我没有看到任何将 tmp 变成 cgroup 的方法?

Cel*_*ada 6

如果一切顺利,您的内核应该自行决定“做正确的事”。它使用了许多奇特的启发式方法来决定在内存压力较大时要换出哪些内容以及保留哪些内容。这些启发式方法是由在内存管理方面具有丰富经验的非常聪明的人精心构建的,并且已经足够好,以至于很难改进。

内核使用这样的组合来决定换出什么:

  • 最近使用了多少内存。
  • 自映射以来内存是否已被修改。因此,例如共享库将在堆内存之前被推出,因为堆内存很脏并且需要写入交换,而共享库映射内存可以从磁盘上的原始文件再次加载,以防再次需要它,因此无需将这些页面写入交换。在这里你应该意识到tmpfs内存总是脏的(除非它是一个充满零的新页面),因为它没有任何支持。
  • 来自的提示mprotect()
  • 可能还有更多。

简短回答:不,您不能直接覆盖内核关于如何管理内存的决定。