set limits for memory usage
Ladinig Rudolf
r.ladinig at aon.at
Sun Apr 18 13:29:41 UTC 2004
Cameron Simpson schrieb:
> 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,
Thanks for your answer,
I did the following:
[rladinig at boss rladinig]$ (ulimit -d 100000 ; exec
/usr/local/netscape/netscape) &
[1] 5351
[rladinig at 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
More information about the redhat-list
mailing list