的大小由什么决定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这是类似的,但不强制执行大小限制并且不交换。