我想限制進程可以使用的物理內存量,而不限制它可以使用的虛擬內存量。我正在努力測量內存壓力下各種算法的行爲,我需要用許多不同數量的物理內存來測試它們的性能 - 所以我要麼需要購買大量模糊大小的內存,或者我需要一個支持以某種方式限制進程駐留內存的操作系統。限制常駐內存使用量
不幸的是,Linux不尊重/強制執行setrlimit(RLIMIT_RSS, ...)
,OSX也沒有。[1]你能推薦我一個可以做到這一點的操作系統嗎?任何非OSX BSD?有沒有一種機制可以在Solaris中執行此操作? Windows的某些變體可以做到這一點嗎?
Linux完全忽略了這個請求,而OSX只是用它來決定在物理內存耗盡時要先交換什麼。當只有X兆內存可用時,這兩種方法都不能幫助我分析算法的行爲。事實證明,Linux在內核中沒有任何機制可以做到這一點,所以它幾乎完全沒有,除非有人能指出我使用內核fork來啓用它。 Solaris甚至沒有setrlimit()
的選項,但它可能有另一種我不知道的方式。
也許虛擬化是這裏的答案? – 2010-07-12 21:38:09