2017-01-06 1 views
0

Je veux limiter la mémoire maximale d'un processus dans Centos. Il peut y avoir des scénarios dans lesquels un processus finit par utiliser toute la mémoire disponible ou la majeure partie de la mémoire affectant d'autres processus dans le système. Par conséquent, je veux savoir comment cela peut être limité. En outre, si vous pouvez donner un exemple de programme où vous limitez l'utilisation de la mémoire d'un processus et montrez les scénarios suivants qui seraient utiles.Comment limiter la mémoire maximale qu'un processus peut utiliser dans Centos?

  1. L'allocation de mémoire est réussie lorsque la mémoire demandée est comprise dans les limites définies.
  2. L'allocation de mémoire a échoué lorsque la mémoire demandée dépassait les limites définies.

-Merci

+2

Vous voulez avoir regarder 'ulimit'. – alk

+0

Comme dit @alk, voir [this] (http://ss64.com/bash/ulimit.html) –

+0

Ulimit définit la limite pour l'ensemble du système. Mais je voulais limiter l'utilisation de la mémoire pour un processus particulier. Quelles sont mes options dans ce cas? –

Répondre

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.