2000-11-13 12:16:58

by aprasad

[permalink] [raw]
Subject: reliability of linux-vm subsystem

Hi,

When i run following code many times.
System becomes useless till all of the instance of this programming are
killed by vmm.
Till that time linux doesn't accept any command though it switches from one
VT to another but its useless.
The above programme is run as normal user previleges.
Theoretically load should increase but system should services other users
too.
but this is not behaving in that way.
___________________________________________________________________
main()
{
char *x[1000];
int count=1000,i=0;
for(i=0; i <count; i++)
x[i] = (char*)malloc(1024*1024*10); /*10MB each time*/

}
_______________________________________________________________________
If i run above programm for 10 times , then system is useless for around
5-7minutes on PIII/128MB.

regards,
Anil



2000-11-13 12:54:49

by Francois romieu

[permalink] [raw]
Subject: Re: reliability of linux-vm subsystem

The Mon, Nov 13, 2000 at 05:29:48PM +0530, [email protected] wrote :
[...]
> When i run following code many times.
> System becomes useless till all of the instance of this programming are
> killed by vmm.
[malloc bomb]

Check some archives of the linux-kernel list for "overcommit".

--
Ueimor

2000-11-13 13:08:59

by Erik Mouw

[permalink] [raw]
Subject: Re: reliability of linux-vm subsystem

On Mon, Nov 13, 2000 at 05:29:48PM +0530, [email protected] wrote:
> When i run following code many times.
> System becomes useless till all of the instance of this programming are
> killed by vmm.

Good, so the OOM killer works.

> Till that time linux doesn't accept any command though it switches from one
> VT to another but its useless.

VT swithing is done by the kernel itself, not by a process.

> The above programme is run as normal user previleges.
> Theoretically load should increase but system should services other users
> too.

No. The system would *like* to service other processes, but it *can't*
because it is trashing.

> but this is not behaving in that way.
> ___________________________________________________________________
> main()
> {
> char *x[1000];
> int count=1000,i=0;
> for(i=0; i <count; i++)
> x[i] = (char*)malloc(1024*1024*10); /*10MB each time*/
>
> }
> _______________________________________________________________________
> If i run above programm for 10 times , then system is useless for around
> 5-7minutes on PIII/128MB.

Sounds quite normal to me. If you don't enforce process limits, you
allow a normal user to thrash the system.


Erik

--
J.A.K. (Erik) Mouw, Information and Communication Theory Group, Department
of Electrical Engineering, Faculty of Information Technology and Systems,
Delft University of Technology, PO BOX 5031, 2600 GA Delft, The Netherlands
Phone: +31-15-2783635 Fax: +31-15-2781843 Email: [email protected]
WWW: http://www-ict.its.tudelft.nl/~erik/