- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试使用/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/
我正在开发适用于 Wordpress 的 PSD,并面临着根据颜色过度对齐背景图像或相反的问题。 在桌面上一切都很好,但在移动设备上背景图像变小了(我使用了 background-size: 100%
在标准 Modelica 流体流量源中,通常指定流量或压力。例如,以下边界设置(P 表示压力边界,F 表示流量边界)通常会围绕管道组件: P - 管道 - P F - 管道 - P 但是,有时在同一侧
我正处于设计基于 Azure 的应用程序的早期阶段。考虑到我可能预期的需求的变化性,Azure 吸引我的地方之一是它的可扩展性。因此,我试图保持事物松散耦合,以便我可以在需要时添加实例。 我看到的关于
我与 Xcode 4 dot notation code sense problem 正好相反!点符号的代码完成不仅显示属性,还显示我的方法(在每个完成的左侧标记 P 或 M 分别指示它是属性还是方法
我是一名优秀的程序员,十分优秀!