我想限制一个进程可以使用的物理内存量,而不限制它可以使用的虚拟内存量。我这样做是为了测量各种算法在内存压力下的行为,并且我需要使用许多不同数量的可用物理内存来测试它们的性能 - 所以我要么需要购买大量模糊大小的内存,或者我需要一个支持以某种方式限制进程的常驻内存的操作系统。
不幸的是,Linux 不尊重/强制执行setrlimit(RLIMIT_RSS, ...)
,OSX 也没有。 [1] 你能给我推荐一个可以做到这一点的操作系统吗?任何非OSX BSD?在 Solaris 中是否有执行此操作的机制?Windows 的某些变体可以做到这一点吗?
[1] Linux 完全忽略该请求,OSX 仅使用它来决定在物理内存耗尽时首先交换什么。当只有 X Megs 内存可供使用时,这两种方法都不能帮助我分析算法的行为。事实证明,Linux 在内核中没有任何机制可以做到这一点,所以它几乎完全被淘汰了,除非有人能指出一个可以实现这一点的内核分支。Solaris 甚至没有那个选项setrlimit()
,但它可能有另一种我不知道的方式。