From owner-freebsd-questions@FreeBSD.ORG Sun Mar 10 01:19:31 2013 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 4C0A0714 for ; Sun, 10 Mar 2013 01:19:31 +0000 (UTC) (envelope-from m.e.sanliturk@gmail.com) Received: from mail-vc0-f169.google.com (mail-vc0-f169.google.com [209.85.220.169]) by mx1.freebsd.org (Postfix) with ESMTP id 0DFDE3CA for ; Sun, 10 Mar 2013 01:19:30 +0000 (UTC) Received: by mail-vc0-f169.google.com with SMTP id n10so1513291vcn.14 for ; Sat, 09 Mar 2013 17:19:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=9clUjg6C70ih2GJdiaVIiJGnPFSeeM6jYUzvDn6Q2cs=; b=oQDu41Bz5MohT0enkZEx1C9d7bSobEmDNb3/q9tL389Yb46VrKPIovBQl1ugoMGAV+ bzXMu00UgjzftpJQvl5LnitNDUsOsKJm21bAKZKw00VaUMICSW7YN4NyNEvnms0Pmr/z Lr4SOXMdRyMqjlRxmInvZI3QoQNqmp3FMLkWo05VBabVEFxXiGvsnQp4APpfgT9+CwYk fCEuS/GeLBChwQN3gAR34PGie3VPO7MpnGWpeKZ5JhHdpcHTrtVQfgG1Q9qtATTh4Hju Zfb3NWqXJPA9stt0y0P4VZntDQ8GQy3hOFPOfOng6Urdlwph1+Lb4sis+gQxzbxwr9ZD C6EQ== MIME-Version: 1.0 X-Received: by 10.52.68.116 with SMTP id v20mr2545883vdt.126.1362878370114; Sat, 09 Mar 2013 17:19:30 -0800 (PST) Received: by 10.58.220.33 with HTTP; Sat, 9 Mar 2013 17:19:29 -0800 (PST) In-Reply-To: <201303100030.r2A0UjoS058395@mech-cluster241.men.bris.ac.uk> References: <201303100030.r2A0UjoS058395@mech-cluster241.men.bris.ac.uk> Date: Sat, 9 Mar 2013 17:19:29 -0800 Message-ID: Subject: Re: how to forbid a process to use swap? From: Mehmet Erol Sanliturk To: mexas@bristol.ac.uk Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: freebsd-questions@freebsd.org X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Mar 2013 01:19:31 -0000 On Sat, Mar 9, 2013 at 4:30 PM, Anton Shterenlikht wrote: > 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 > 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