Hello list,

I have written a program and would like to trace its memory usage as it runs 
and output the data to a file for easy logging/comparison/graphing.

getrusage(2) looks as though it would be appropriate for this. Unfortunately I 
seem to be misunderstanding how it should be used, since I would not expect the 
program below to output five 0's, yet it does on 4.8-release (i386) and a 
slightly out of date 4.8-current (amd64).

Could somebody give me a hint as to where my misunderstanding lies or how else 
I might track the memory usage of my program?

Many thanks,
Patsy



#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>

int main()
{
        struct rusage val;
        int retval;
        long buf[10000];

        retval = getrusage(RUSAGE_SELF, &val);

        printf("retval = %d\n", retval);
        printf("mem = %ld\n", val.ru_maxrss);
        printf("mem = %ld\n", val.ru_ixrss);
        printf("mem = %ld\n", val.ru_idrss);
        printf("mem = %ld\n", val.ru_isrss);

        return 0;
}

Reply via email to