限制驻留内存使用量

时间:2010-07-12 20:31:28

标签: unix memory operating-system swap virtual-memory

我想限制进程可以使用的物理内存量,而不限制它可以使用的虚拟内存量。我这样做的目的是为了测量内存压力下各种算法的行为,我需要用许多不同的物理内存来测试它们的性能 - 所以我要么需要购买很多不起眼的大小的内存,或者我需要一个支持以某种方式限制进程驻留内存的操作系统。

不幸的是,Linux不尊重/强制执行setrlimit(RLIMIT_RSS, ...),OSX也不尊重/执行。[1]你能推荐一个能做到这一点的操作系统吗?任何非OSX BSD?是否有一种机制可以在Solaris中执行此操作? Windows的某些变体可以这样做吗?


[1] Linux完全忽略了请求,并且OSX仅使用它来决定在物理内存耗尽时首先换出什么。当只有X Megs的内存可供使用时,这两者都无法帮助我分析算法的行为。事实证明Linux没有任何机制可以在内核中执行此操作,所以除非有人能指向我启用此功能的内核分支,否则它几乎完全没有。 Solaris甚至没有setrlimit()的选项,但它可能有另一种我不知道的方式。

1 个答案:

答案 0 :(得分:0)

想出来。所以,你几乎无法用我能找到的任何Unix做到这一点。

因此,要做的是运行虚拟化操作系统,该操作系统具有您想要的内存量。然后,虚拟操作系统将被驱动到交换,但你的主操作系统将嗡嗡声很好。更好的是,如果您只想计算页面错误而不是计算挂钟时间,使用这种方法可以使虚拟机的交换磁盘成为未虚拟化的磁盘 - 从而使页面错误几乎没有时间来解决虚拟机!