Re: set limits for memory usage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Cameron Simpson schrieb:
On 18:28 17 Apr 2004, Ladinig Rudolf <r.ladinig@xxxxxx> 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,

Thanks for your answer,


I did the following:

[rladinig@boss rladinig]$ (ulimit -d 100000 ; exec /usr/local/netscape/netscape) &
[1] 5351
[rladinig@boss rladinig]$ top -b | grep netscape
5357 rladinig 18 0 17036 15M 11028 S 0,0 6,2 0:00 0 netscape-bin
5357 rladinig 21 0 21432 19M 13156 R 14,7 7,9 0:01 0 netscape-bin
5357 rladinig 20 0 24904 23M 14488 S 14,5 9,3 0:02 0 netscape-bin
5357 rladinig 15 0 25540 23M 14892 S 6,7 9,6 0:02 0 netscape-bin
5357 rladinig 15 0 25576 23M 14900 S 6,9 9,6 0:02 0 netscape-bin
5357 rladinig 16 0 27836 26M 15216 R 11,7 10,5 0:03 0 netscape-bin
5357 rladinig 16 0 28668 27M 15632 S 22,5 10,8 0:04 0 netscape-bin
5357 rladinig 17 0 29244 27M 15680 S 18,5 11,0 0:05 0 netscape-bin
5357 rladinig 17 0 29692 28M 15800 S 21,3 11,2 0:06 0 netscape-bin
5357 rladinig 15 0 30440 28M 15800 S 9,9 11,5 0:07 0 netscape-bin
5357 rladinig 15 0 33088 31M 15812 S 9,5 12,5 0:07 0 netscape-bin
5357 rladinig 15 0 33780 31M 15812 S 11,3 12,8 0:08 0 netscape-bin
5357 rladinig 15 0 31256 29M 15812 S 12,1 11,8 0:08 0 netscape-bin
5357 rladinig 15 0 33380 31M 15812 S 14,5 12,6 0:09 0 netscape-bin
5357 rladinig 15 0 31992 30M 15816 S 16,9 12,1 0:10 0 netscape-bin
5357 rladinig 15 0 34956 33M 15816 S 18,7 13,2 0:11 0 netscape-bin
5357 rladinig 15 0 32848 31M 15816 S 17,3 12,4 0:12 0 netscape-bin
5357 rladinig 15 0 223M 158M 13884 D 16,1 63,6 0:14 0 netscape-bin
5357 rladinig 15 0 351M 187M 13380 D 16,6 75,3 0:15 0 netscape-bin
5357 rladinig 15 0 443M 199M 7060 D 14,7 79,8 0:16 0 netscape-bin
5357 rladinig 15 0 547M 189M 4248 D 18,3 76,1 0:17 0 netscape-bin
5357 rladinig 15 0 624M 195M 3424 D 9,1 78,3 0:18 0 netscape-bin
5357 rladinig 15 0 665M 223M 308 D 3,7 89,7 0:18 0 netscape-bin
5357 rladinig 15 0 667M 225M 132 D 0,9 90,4 0:18 0 netscape-bin
5357 rladinig 15 0 667M 225M 244 R 0,2 90,3 0:18 0 netscape-bin
5357 rladinig 15 0 667M 225M 260 D 0,0 90,3 0:18 0 netscape-bin
5357 rladinig 15 0 667M 224M 104 D 0,1 90,1 0:18 0 netscape-bin
/usr/local/netscape/run-mozilla.sh: line 384: 5357 Getötet $prog ${1+"$@"}



After 18 sec netscape has filled 90% of memory.


The script starts with pid 5351, netscape-bin with 5357. It looks like the limit is not working on netscape-bin.

RLadi


-- redhat-list mailing list unsubscribe mailto:redhat-list-request@xxxxxxxxxx?subject=unsubscribe https://www.redhat.com/mailman/listinfo/redhat-list

[Index of Archives]     [CentOS]     [Kernel Development]     [PAM]     [Fedora Users]     [Red Hat Development]     [Big List of Linux Books]     [Linux Admin]     [Gimp]     [Asterisk PBX]     [Yosemite News]     [Red Hat Crash Utility]


  Powered by Linux