Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 Mar 2013 00:30:45 GMT
From:      Anton Shterenlikht <mexas@bristol.ac.uk>
To:        m.e.sanliturk@gmail.com, mexas@bristol.ac.uk
Cc:        freebsd-questions@freebsd.org
Subject:   Re: how to forbid a process to use swap?
Message-ID:  <201303100030.r2A0UjoS058395@mech-cluster241.men.bris.ac.uk>
In-Reply-To: <CAOgwaMtBN%2BLxA5k0zQTbjdM%2BjmWuNT58UYp5eX7cbqPnFbhKfA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
	From m.e.sanliturk@gmail.com Sun Mar 10 00:25:27 2013

	On Sat, Mar 9, 2013 at 3:55 PM, Anton Shterenlikht <mexas@bristol.ac.uk>wrote:

	> I run a program that uses large arrays.
	> I don't want it to use swap, because it's
	> too slow. I want the program to fail when
	> there's not enough RAM, rather than using
	> swap. How to do this?
	>
	> Is it something to do with these kernel
	> variables:
	>
	> kern.dfldsiz: 34359738368
	> kern.dflssiz: 8388608
	>
	> kern.maxdsiz: 34359738368
	> kern.maxssiz: 536870912
	> kern.maxtsiz: 134217728
	>
	> Many thanks
	>
	> Anton
	>



	If you have program source , you may do the following :



	Define a constant :  Maximum_Allocatable_Memory = ?


	Define a variable : Total_Allocated_Memory = 0



	Before allocating a memory of size M ,
	check whether  Total_Allocated_Memory + M < Maximum_Allocatable_Memory

	If yes : Allocate memory ;
	          Add M to Total_Allocated_Memory .

	If no :

	Return an error and gracefully stop your program instead of a crash which
	will loose data .

It's a fortran program. I'm not very stong in C.
Ideally I'd just use the OS (shell) means,
but I need to understand better which resourse
limit controls what.

For example, with sh limits(1), I see:

$ limits
Resource limits (current):
  cputime              infinity secs
  filesize             infinity kB
  datasize               524168 kB
  stacksize              524168 kB
  coredumpsize         infinity kB
  memoryuse            infinity kB
  memorylocked               64 kB
  maxprocesses            12200
  openfiles              117594
  sbsize               infinity bytes
  vmemoryuse           infinity kB
  pseudo-terminals     infinity
  swapuse              infinity kB
$ 

Which of these are relevant to my case?

Finally, the actual problem is on linux,
but I hope if I'm able to understand how
things work on FreeBSD, then I could do
it on linux too, especially if it's just
a sh command.

Thanks

Anton



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303100030.r2A0UjoS058395>