超出 sysconfig 限制的共享内存大小
Posted
技术标签:
【中文标题】超出 sysconfig 限制的共享内存大小【英文标题】:shared memory size beyond sysconfig limit 【发布时间】:2011-09-13 11:02:02 【问题描述】:是否可以使用 ftruncate 将共享内存块的大小增加到超过 sysconfig 给出的共享内存限制大小?如果物理内存用完,如何让它使用交换?
【问题讨论】:
/dev/shm 大小默认为总物理内存的 50%。如果 50% 的限制全部用完,我如何让我在 linux 上的 C 应用程序使用交换空间。默认行为是它给出一个错误“磁盘上没有剩余空间”。 【参考方案1】:可以使用ftruncate来增加共享内存块的大小...
ftruncate()
调整文件大小。它不会调整该文件的内存映射大小。所以,答案是否定的。
...超出 sysconfig 给定的共享内存限制大小?
这个限制不能被打破。 root
用户可以更改该限制。
如果物理内存用完,我如何让它使用交换?
假设 it 是一个内存映射文件,一种方法是一次只映射文件的一部分,而不是整个文件。如果一个进程使用的虚拟内存多于可用的物理内存,操作系统将自动使用交换为您释放一些物理内存。
【讨论】:
感谢您的回答。问题是进程 1 转储的文件需要由进程 2 再次加载。所以即使我映射文件的一部分,我最终还是需要转储整个文件以供后续进程使用它。我需要使用交换。 抱歉,不太明白你的问题。 我需要一个 20 GB 的文件留在共享内存块中,而我的物理 RAM 是 20 GB,但 /dev/shm/ 是 10 GB。我没有root权限。 您可以将文件存储为磁盘文件并将其映射到内存中。您无需将其保留在/dev/shm
。以上是关于超出 sysconfig 限制的共享内存大小的主要内容,如果未能解决你的问题,请参考以下文章
在 Clickhouse 中运行非常简单的查询时超出内存限制
是否有任何有效的方法可以以最新的一阶对给定的 mongodb 数据进行分页并避免排序超出大数据的内存限制?
容器因超出内存限制而被 YARN 杀死。使用了 14.8 GB 的 6 GB 物理内存