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