how to forbid a process to use swap?
Anton Shterenlikht
mexas at bristol.ac.uk
Sun Mar 10 00:30:56 UTC 2013
From m.e.sanliturk at gmail.com Sun Mar 10 00:25:27 2013
On Sat, Mar 9, 2013 at 3:55 PM, Anton Shterenlikht <mexas at 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
More information about the freebsd-questions
mailing list