tmpfs 的大小由什么决定?满了会发生什么?

tmpfs 的大小由什么决定?满了会发生什么?

的大小由什么决定tmpfs? (在我的机器上,它位于/dev/shm)我可以在 中看到它的条目/etc/fstab,但没有其大小的符号。使用 检查时df -h,它似乎是系统中安装的物理内存大小的一半。这是默认行为吗?

另外,如果满了怎么办?它会动态扩展,迫使其他正在运行的程序进入swap吗?tmpfs本身是否会移动到swap分区中?

最后,内存tmpfs或应用程序的优先级是什么?即,如果我的内存tmpfs足够满(例如 40% 的物理内存),并且我的程序需要 70% 的物理内存,那么哪一个程序具有优先级?

答案1

tmpfs 的大小由什么决定? (在我的机器上,它驻留在 /dev/shm 中)我可以在 /etc/fstab 中看到它的条目,但没有其大小的符号。

内核文档在安装选项下面涵盖了这一点:

size:为此 tmpfs 实例分配的字节数限制。默认情况下是物理 RAM 的一半,没有交换。如果你的 tmpfs 实例规模过大,机器将会死锁

(强调我的)

另外,如果满了怎么办?

如上所述,如果您对 tmpfs 投入过多,您的机器将会死锁。否则(如果它刚刚达到其硬限制),它将像任何其他文件系统一样返回 ENOSPC。

最后,内存 tmpfs 或应用程序优先考虑什么?即,如果我的 tmpfs 足够满(例如物理内存的 40%),并且我的程序需要 70% 的物理内存,那么哪一个获得优先级?

这类似于程序之间的争用。最常用的页面往往位于物理内存中,而最少使用的页面往往会被换出。

如果需要确保页面始终位于物理内存中你可以使用ramfs这是类似的,但不强制执行大小限制并且不交换。

相关内容