On Sat, Mar 9, 2013 at 4:30 PM, Anton Shterenlikht <[email protected]>wrote:
> From [email protected] Sun Mar 10 00:25:27 2013 > > On Sat, Mar 9, 2013 at 3:55 PM, Anton Shterenlikht < > [email protected]>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 _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[email protected]"
