2017-01-06 9 views
0

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

Кроме того, если вы можете предоставить пример программы, в которой вы ограничиваете использование памяти процессом и показываете следующие сценарии, которые были бы полезны.

  1. Распределение памяти удалено, когда запрашиваемая память находится в установленных пределах.
  2. Распределение памяти не удалось, когда запрошенная память превысила установленные пределы.

-Спасибо

+2

Вы хотите, чтобы посмотреть на 'ulimit'. – alk

+0

Как @alk сказал, см. [This] (http://ss64.com/bash/ulimit.html) –

+0

Ulimit устанавливает лимит для всей системы. Но я хотел ограничить использование памяти для определенного процесса. Какие у меня варианты в этом случае? –

ответ

0
ulimit can be used to limit memory utilization (among other things) 

Here is an example of setting memory usage so low that /bin/ls (which is larger than /bin/cat) no longer works, but /bin/cat still works. 

$ 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 
$ 

Note: If I set the limits to 1000 kilobytes, neither program works, because they load libraries, which increase their size. above 1000 KB. 

-d data segment size 

-m max memory size 

-v virtual memory size 

Run ulimit -a to see all the resource caps ulimits can set.