how to forbid a process to use swap?
Mehmet Erol Sanliturk
m.e.sanliturk at gmail.com
Sun Mar 10 01:19:31 UTC 2013
On Sat, Mar 9, 2013 at 4:30 PM, Anton Shterenlikht <mexas at bristol.ac.uk>wrote:
> 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
>
It is not necessary to know C for the above steps .
If you have source and if it is compilable by Fortran 90 or later standard
, it may use allocation .
( Please see ALLOCATABLE , ALLOCATE , DEALLOCATE in a Fortran >= 90 manual
).
I am compiling Fortran 77 programs with respect to 2003 standart by
specifying lines as "fixed"
by G95 which it is available in FreeBSD also ( www.g95.org ) . It may be
necessary to convert
Hollerith format specifiers to apostrophes .
Personally I do not any idea about the above parameters .
You may use "System Monitor" or "top" to see memory usage . If there is no
sufficient memory , you may not start your program , or it starts to swap
you may kill suitable programs , etc. .
Thank you very much .
Mehmet Erol Sanliturk
More information about the freebsd-questions
mailing list