[MOAB-dev] Measuring memory
    Steve Jackson 
    sjackson at cae.wisc.edu
       
    Wed Jul 28 14:24:26 CDT 2010
    
    
  
This code snippet is duplicated several times in moab:
// estimate total program memory usage and store into tot_mem
struct rusage r_usage;
getrusage(RUSAGE_SELF, &r_usage);
...
if( 0 != r_usage.ru_maxrss ){
  tot_mem = r_usage.ru_idrss;
}
else{ 
  // parse data from file /proc/self/stat
}
This code is used to estimate memory usage in mbskin and mbperf, as well as in dagmc's ray_fire_test. 
This code is broken under Linux kernel 2.6.32, because under this kernel, getrusage() does report ru_maxrss, but does not report ru_idrss.  (Previous versions of the kernel reported neither value.)  See http://www.kernel.org/doc/man-pages/online/pages/man2/getrusage.2.html .  The result is that our tools always report a memory use of 0 with this kernel version.
Should this be fixed by changing the if statement to check for data in ru_idrss instead of ru_maxrss?  Or would a different approach be preferred?  Also, ought we to move the get_time_mem function to a shared location, to reduce code duplication?
~S
    
    
More information about the moab-dev
mailing list