gpt4 book ai didi

linux - 我可以过度运行 tmpfs 大小吗

转载 作者:IT王子 更新时间:2023-10-29 00:04:43 25 4
gpt4 key购买 nike

我正在尝试使用/dev/shm tmpfs 来写入我的文件。默认是没有交换的物理 RAM 的一半。当我写入超出此装载大小的内容时,会出现错误“磁盘上没有剩余空间”。

我的问题是,它不应该使用交换空间而不是出错吗?有没有办法让我的应用程序用完比分配给 tmpfs 的更多的东西,也许是通过一个选项?

如果我的一个进程正在运行并且几乎用尽了/dev/shm 中的所有空间,而我有另一个进程正在运行(在/dev/shm 之外),它也使用了超过 50% 的 RAM 空间,会发生什么?哪一个被换掉了?

例如,假设我的总物理内存为 40 GB,tmpfs 为 20GB。其中一个进程正在使用/dev/shm,大约 20GB。现在有另一个进程正在运行,大约需要 30GB。哪个进程将换出?还是无法确定?

最佳答案

tmpfs 将在必要时使用交换空间(即使 tmpfs 大小是 RAM 大小的一半,它也可能发生,因为其他东西也使用 RAM)并且“一半 RAM”只是默认大小(非常合理的默认值)的文件系统。您可以在使用“大小”参数安装或重新安装时将其设置为任何您想要的值:

Mount options for tmpfs

  size=nbytes

Override default maximum size of the filesystem. The size is
given in bytes, and rounded up to entire pages. The default is
half of the memory. The size parameter also accepts a suffix %
to limit this tmpfs instance to that percentage of your physical
RAM: the default, when neither size nor nr_blocks is specified,
is size=50%

如果您的发行版使用 fstab 来挂载 tmpfs,您可以添加例如那里有'size=40G'。您也可以随时使用以下方式重新安装它:

mount -o remount,size=40G /dev/shm

不过要小心。如果 tmpfs 上的文件占用太多虚拟内存(RAM+swap),应用程序可能会被杀死(通过 OOM killer )并且整个系统可能会崩溃。

回到你的问题......

我认为确定将被换出的内容并不容易,因为 AFAIK 在那个级别的 Linux 一切(包括进程数据内存、缓存磁盘文件、mmaped 磁盘文件、tmpfs 文件)都是相同的“虚拟”内存'。 Linux 可能认为一些页面更重要(最近使用过),其他准备好被换出。所以它可能是 tmpfs 文件的一部分和其他进程的一部分换出。

关于linux - 我可以过度运行 tmpfs 大小吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com