Ограничение использования резидентной памяти - PullRequest
1 голос
/ 13 июля 2010

Я хотел бы ограничить объем физической памяти, который может использовать процесс, без ограничения объема виртуальной памяти, которую он может использовать. Я делаю это для того, чтобы измерить поведение различных алгоритмов под давлением памяти, и мне нужно проверить их производительность при наличии большого количества разных объемов физической памяти, поэтому мне нужно либо купить краптон памяти большого количества непонятных размеров, или мне нужна операционная система, которая каким-либо образом поддерживает ограничение резидентной памяти процесса.

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


[1] Linux полностью игнорирует запрос, а OSX использует его только для того, чтобы решить, что выгрузить первым, когда физическая память исчерпана. Ничто из этого не помогает мне анализировать поведение алгоритма, когда для использования доступны только X мегабайт памяти. Оказывается, в Linux нет никакого механизма для выполнения этого в ядре, так что он почти полностью отсутствует, если кто-то не может указать мне на разветвление ядра, которое позволяет это. У Solaris даже нет этой опции для setrlimit(), но может быть и другой способ, о котором я не знаю.

1 Ответ

0 голосов
/ 16 июля 2010

Разобрался. Итак, вы почти не можете сделать это с любым Unix, который я смог найти.

Следовательно, нужно запустить виртуализированную ОС, у которой столько памяти, сколько вы хотите выделить. Затем виртуальная ОС будет загружена в swap, но ваша основная ОС будет работать нормально. Более того, если вы хотите просто считать ошибки страниц, а не измерять время на настенных часах, с этим подходом вы можете сделать диск подкачки для виртуальной машины виртуальным диском не виртуализированного диска - таким образом, устранение ошибок страниц практически не займет времени. виртуализированная машина!

...