Я хотел бы ограничить объем физической памяти, который может использовать процесс, без ограничения объема виртуальной памяти, которую он может использовать. Я делаю это для того, чтобы измерить поведение различных алгоритмов под давлением памяти, и мне нужно проверить их производительность при наличии большого количества разных объемов физической памяти, поэтому мне нужно либо купить краптон памяти большого количества непонятных размеров, или мне нужна операционная система, которая каким-либо образом поддерживает ограничение резидентной памяти процесса.
К сожалению, Linux не уважает / не применяет setrlimit(RLIMIT_RSS, ...)
, как и OSX. [1] Не могли бы вы порекомендовать мне операционную систему, которая МОЖЕТ сделать это? Любой из не OSX BSD? Есть ли механизм сделать это в Solaris? Может ли какой-то вариант Windows сделать это?
[1] Linux полностью игнорирует запрос, а OSX использует его только для того, чтобы решить, что выгрузить первым, когда физическая память исчерпана. Ничто из этого не помогает мне анализировать поведение алгоритма, когда для использования доступны только X мегабайт памяти. Оказывается, в Linux нет никакого механизма для выполнения этого в ядре, так что он почти полностью отсутствует, если кто-то не может указать мне на разветвление ядра, которое позволяет это. У Solaris даже нет этой опции для setrlimit()
, но может быть и другой способ, о котором я не знаю.