Gaudi Framework, version v21r9

Home   Generated: 3 May 2010

ProcStats.h

Go to the documentation of this file.
00001 // $Id: ProcStats.h,v 1.2 2004/06/08 13:40:07 mato Exp $
00002 #ifndef GAUDIAUD_PROCSTATS_H
00003 #define GAUDIAUD_PROCSTATS_H
00004 
00005 // Class: ProcStats
00006 // Description:  Keeps statistics on memory usage
00007 // Author: Jim Kowalkowski (FNAL), modified by M. Shapiro (LBNL)
00008 
00009 #include <string>
00010 #include <vector>
00011 
00012 struct procInfo
00013 {
00014   procInfo() : vsize(0), rss(0) {}
00015   procInfo(double sz, double rss_sz): vsize(sz),rss(rss_sz) {}
00016 
00017   bool operator==(const procInfo& p) const {
00018 #ifdef __ICC
00019 // disable icc remark #1572: floating-point equality and inequality comparisons are unreliable
00020 #pragma warning(push)
00021 #pragma warning(disable:1572)
00022 #endif
00023 
00024     return vsize==p.vsize && rss==p.rss;
00025 
00026 #ifdef __ICC
00027 // re-enable icc remark #1572
00028 #pragma warning(pop)
00029 #endif
00030   }
00031   
00032   // see proc(4) man pages for units and a description
00033   double vsize;  // in MB (used to be in pages?)
00034   double rss;    // in MB (used to be in pages?)
00035 };
00036 
00037 class ProcStats
00038 {
00039 public:
00040   static ProcStats* instance();
00041 
00042   bool fetch(procInfo& fill_me);
00043   double pageSize() const { return pg_size; }
00044 
00045 private:
00046   ProcStats();
00047   ~ProcStats();
00048 
00049   struct cleanup
00050   {
00051     cleanup() { }
00052     ~cleanup();
00053   };
00054 
00055   friend struct cleanup;
00056 
00057   int fd;
00058   double pg_size;
00059   procInfo curr;
00060   std::string fname;
00061   char buf[500];
00062   bool valid;
00063 
00064   static ProcStats* inst;
00065 };
00066 
00067 #endif
00068 

Generated at Mon May 3 12:14:08 2010 for Gaudi Framework, version v21r9 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004