set limits for memory usage

Cameron Simpson cs at zip.com.au
Sat Apr 17 23:07:39 UTC 2004


On 18:28 17 Apr 2004, Ladinig Rudolf <r.ladinig at aon.at> wrote:
| Some days ago, when i visited Website www.hsecomputers.de and searched
| at this website for a certain product (asante), the browser didn't load
| for a long time and then all applications freezed. [...]
| When I searched for the reasons for this, I found that the browser
| (mozilla, firefox or netscape) was using more and more memory, until the
| whole physical and swap memory was used by the browser. Then the OS was
| unable to react to a user's input.
| 
| My question: I didn't find any possibility to limit the memory a single
|  application or a single user can use. I'm sure, a multitasking and
| multiuser OS has this capability.

You want the ulimit shell builtin command.

Example: to limit mozilla you might say:

	(ulimit -d 100000; exec mozilla)

which would limit it to 100MB of data segment. Note that we put the
ulimit in a subshell so as not to affect your main shell.

Also note that mozilla is a little special - the command you run is
actually a wrapper script that only runs the real mozilla if you haven't
got one up already. Otherwise it runs mozilla-xremote-client to tell the
existing one to open a new window. So if mozilla is already up this won't
work, because it will limit the mozilla-xremote-client, and not affect
the active mozilla at all. You need to get in for the first invocation
of mozilla for this.

"man sh" says:

       ulimit [-SHacdflmnpstuv [limit]]
              Provides control over the resources available to the  shell  and
              to  processes started by it, on systems that allow such control.
              The -H and -S options specify that the hard or soft limit is set
              for  the  given resource.  A hard limit cannot be increased once
              it is set; a soft limit may be increased up to the value of  the
              hard  limit.   If  neither -H nor -S is specified, both the soft
              and hard limits are set.  The value of limit can be a number  in
              the unit specified for the resource or one of the special values
              hard, soft, or unlimited,  which  stand  for  the  current  hard
              limit,  the  current soft limit, and no limit, respectively.  If
              limit is omitted, the current value of the  soft  limit  of  the
              resource  is  printed, unless the -H option is given.  When more
              than one resource is specified, the  limit  name  and  unit  are
              printed before the value.  Other options are interpreted as fol-
              lows:
              -a     All current limits are reported
              -c     The maximum size of core files created
              -d     The maximum size of a process's data segment
              -f     The maximum size of files created by the shell
              -l     The maximum size that may be locked into memory
              -m     The maximum resident set size
              -n     The maximum number of open file descriptors (most systems
                     do not allow this value to be set)
              -p     The pipe size in 512-byte blocks (this may not be set)
              -s     The maximum stack size
              -t     The maximum amount of cpu time in seconds
              -u     The  maximum  number  of  processes available to a single
                     user
              -v     The maximum amount of virtual  memory  available  to  the
                     shell

              If limit is given, it is the new value of the specified resource
              (the -a option is display only).  If no option is given, then -f
              is  assumed.  Values are in 1024-byte increments, except for -t,
              which is in seconds, -p, which is in units of  512-byte  blocks,
              and  -n and -u, which are unscaled values.  The return status is
              0 unless an invalid option or argument is supplied, or an  error
              occurs while setting a new limit.

Cheers,
-- 
Cameron Simpson <cs at zip.com.au> DoD#743
http://www.cskk.ezoshosting.com/cs/

WHAT"S A ""K3WL D00D"" AND WH3R3 CAN 1 G3T S0M3!!!!!!!!!!!????????
        - Darren Embry





More information about the redhat-list mailing list