process memory peak recording

Jesse Guardiani jesse at wingnet.net
Fri Sep 5 07:09:47 PDT 2003


Matthew Seaman wrote:

> On Wed, Sep 03, 2003 at 06:53:09PM -0400, Jesse Guardiani wrote:
>> Howdy list,
>> 
>> I'm a Sys Admin running FreeBSD 4.8-RELEASE
>> servers.
>> 
>> During a recent programming/installation
>> project, I found myself wanting to know
>> the peak memory usage of a given command/process.
>> 
>> Is there any way to gather this information
>> without recompiling an application with a
>> sleep or wait statement at the (assumed)
>> point of peak memory usage and then looking
>> at the process with 'ps'?
> 
> That depends on exactly how much time you've got to record the peak
> memory usage.  If it's going to be changing faster than you could
> catch just by running ps(1) -- like:
> 
>     % ps -p NNN -o rsz
> 
> where NNN is the pid of your process, then you're probably going to
> have to interrupt the process somehow.  You can do that by attaching
> to the process using gdb(1), eg:
> 
>     % gdb PROGNAME NNN
> 
> this will stop the process and leave you in the debugger at the
> current program counter.  You'ld have to create a break point when the
> program calls malloc(3) or friends, continue running until it hits the
> break point, step over the malloc call, check the size using ps(1),
> and then continue running again until the next malloc(3) call. Repeat
> until the program ends. See the gdb info pages for the gory details.
> Nb. this whole thing with gdb(1) is going to be a great deal easier if
> you have the source code to your program available and you can run an
> unstripped binary.  Doing such a trick on a stripped binary is getting
> into real guru territory.  Programs run a lot slower when attached in
> a debugger, plus if the program makes heavy use of malloc, it's going
> to get really tedious very quickly.

Thanks for the reply, Matthew.

Sorry for the misleading subject. I meant to post a different message
under that subject. "process memory peak recording" should have been the
subject for this message. I'm not sure if that was a bug in my human CPU
or a bug in KNode... :)

Anyway, I was really hoping that someone would write me back and tell me
that there is already some voodoo kernel debugging switch that I could
turn on to let me log/record peak memory usage for a particular process.

I guess you're saying that isn't the case though, right?


Sincerely,

-- 
Jesse Guardiani, Systems Administrator
WingNET Internet Services,
P.O. Box 2605 // Cleveland, TN 37320-2605
423-559-LINK (v)  423-559-5145 (f)
http://www.wingnet.net




More information about the freebsd-questions mailing list