Return to BSD News archive
Xref: sserve comp.unix.programmer:8782 comp.unix.questions:32762 comp.unix.bsd:11738 comp.sys.mips:2832 Newsgroups: comp.unix.programmer,comp.unix.questions,comp.unix.bsd,comp.sys.mips Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!doc.ic.ac.uk!pipex!sunic!psinntp!psinntp!sci.ccny.cuny.edu!sci.sci.ccny.cuny.edu!jeffrey From: jeffrey@sci.sci.ccny.cuny.edu (Jeffrey L Bromberger) Subject: getrusage(2) query Message-ID: <1993Apr1.170330.18061@sci.ccny.cuny.edu> Followup-To: comp.unix.programmer Summary: measured in what? Keywords: getrusage maxrss i?rss time Sender: jeffrey@sci.ccny.cuny.edu (Jeffrey L Bromberger) Reply-To: jeffrey@sci.sci.ccny.cuny.edu (Jeffrey L Bromberger) Organization: City College of New York - Biology Department Date: Thu, 1 Apr 1993 17:03:30 GMT Lines: 49 This is a followup question to my previous one - how can a process determine it's size. Even though I wanted something portable, the replies I received basically said use the BSD-ish getrusage(2) call. So, that effectively cuts out the SysV crowd (no love lost on this front). I wrote a quickie program to get the process size at the beginning, allocate a chunk of memory, and do the diff of sizes. Hopefully, the results will be the same. Well, not so. Here's the data... Memory Allocated Vax/4.3BSD DG Aviion/DGUX MIPS/RISCos4.52 in Mb maxrss maxrss maxrss ====================================================================== 1 2056 744 227 2 4102 1768 508 4 8200 3816 1037 8 ---- 7192 2051 16 ---- 16104 4123 24 ---- 24296 6165 32 ---- 32488 8236 64 ---- 65256 14596 I gave up on the VAX after waiting for the 4Mb trial :-) Analysis time... The RSS value is listed as the "Maximum Resident Set Size uiilized (in kilobytes)" from the 4.3BSD manuals, "Maximum Resident memory size (in Kbytes)" from the DG's <sys/resource.h>, and "maximum resident set size utilized (in pages)" on the MIPS platform. Already we have a discrepancy on the units. So much for portability :-( Considering that the size of the executable does not change in memory, and that the stack does not grow excessively (if at all), getrusage returns wildly inaccurate numbers. Why should 1Mb need 2056K on a VAX, 744K on an Aviion, and 908K on a MIPS? Just what is going on here? And you can forget using the idrss and isrss values - they are so time dependent (KbyteSeconds) it's amazing. Does *anyone* use these? Except for billing (gasp)? Any help would be greatly appreciated at this point. I'm ripping my hair out over this. And I'm learning the hard way that anything more than simple "Hello, world" is really non-portable. Once the process has to know about itself and it's environs, you're treading in a highly variable twilight zone. j -- Jeffrey L. Bromberger ------ Biology Department ------ City College of New York jeffrey@sci.sci.ccny.cuny.edu Anywhere!{cmcl2,philabs}!ccnysci!jeffrey