Я написал программу для класса, который мой профессор будет тестировать в различных средах с нехваткой памяти, чтобы посмотреть, как он себя ведет, когда программе не хватает памяти. Есть ли способ, которым я могу имитировать выполнение в среде с низким объемом памяти без создания виртуальной машины?
1 ответ
8
Вы хотите использовать Ulimit
ulimit может использоваться для ограничения использования памяти (среди прочего)
Вот пример настройки использования памяти настолько низким, что
/bin/ls
(который больше, чем/bin/cat
) больше не работает, но/bin/cat
прежнему работает.$ ls -lh /bin/ls /bin/cat -rwxr-xr-x 1 root root 25K May 24 2008 /bin/cat -rwxr-xr-x 1 root root 88K May 24 2008 /bin/ls $ date > test.txt $ ulimit -d 10000 -m 10000 -v 10000 $ /bin/ls date.txt /bin/ls: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Cannot allocate memory $ /bin/cat date.txt Thu Mar 26 11:51:16 PDT 2009 $
Примечание: если я установлю ограничения в 1000 килобайт, ни одна из программ не будет работать, потому что они загружают библиотеки, которые увеличивают их размер. выше 1000 кб.
размер сегмента данных
-м максимальный объем памяти
-v размер виртуальной памяти
Запустите ulimit -a, чтобы увидеть все ограничения ресурсов, которые может установить ulimit.