Как я ограничиваю использование памяти определенного процесса в Linux?

Я записал программу для класса, который мой преподаватель будет тестировать в различных низких средах памяти, чтобы видеть, как это ведет себя когда прогоны программы из памяти. Существует ли способ, которым я могу моделировать выполнение в низкой среде памяти, не создавая виртуальную машину?

7
задан 24.04.2010, 13:58

1 ответ

Вы захотите использовать 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
$

Примечание: Если я установил пределы к 1 000 килобайтов, никакая программа работают, потому что они загружают библиотеки, которые увеличивают их размер. выше 1 000 КБ.

- d размер сегмента данных

- m макс. емкость памяти

- v размер виртуальной памяти

Выполненный ulimit-a для наблюдения всех ограничений ресурсов ulimits может установить.

8
ответ дан 07.12.2019, 14:57

Теги

Похожие вопросы