MemoryAuditor.cpp
Go to the documentation of this file.00001
00002
00003
00004 #ifdef __ICC
00005
00006
00007 #pragma warning(disable:654)
00008 #endif
00009
00010 #include "MemoryAuditor.h"
00011 #include "ProcStats.h"
00012 #include "GaudiKernel/MsgStream.h"
00013 #include "GaudiKernel/AudFactory.h"
00014
00015 DECLARE_AUDITOR_FACTORY(MemoryAuditor)
00016
00017 MemoryAuditor::MemoryAuditor(const std::string& name, ISvcLocator* pSvcLocator) :
00018 Auditor(name, pSvcLocator)
00019 {
00020 declareProperty("CustomEventTypes",m_types);
00021
00022 }
00023
00024 MemoryAuditor::~MemoryAuditor(){
00025 }
00026
00027 void MemoryAuditor::beforeInitialize(INamedInterface* alg) {
00028 std::string theString = "Memory usage before ";
00029 theString += alg->name() ;
00030 theString += " Initialization Method";
00031 printinfo(theString);
00032 }
00033 void MemoryAuditor:: afterInitialize(INamedInterface* alg){
00034 std::string theString = "Memory usage has changed after ";
00035 theString += alg->name() ;
00036 theString += " Initialization Method";
00037 printinfo(theString);
00038 }
00039 void MemoryAuditor::beforeReinitialize(INamedInterface* alg) {
00040 std::string theString = "Memory usage before ";
00041 theString += alg->name() ;
00042 theString += " Reinitialization Method";
00043 printinfo(theString);
00044 }
00045 void MemoryAuditor:: afterReinitialize(INamedInterface* alg){
00046 std::string theString = "Memory usage has changed after ";
00047 theString += alg->name() ;
00048 theString += " Reinitialization Method";
00049 printinfo(theString);
00050 }
00051 void MemoryAuditor:: beforeExecute(INamedInterface* alg){
00052 std::string theString = "Memory usage has changed before ";
00053 theString += alg->name() ;
00054 theString += " Execute Method";
00055 printinfo(theString);
00056 }
00057 void MemoryAuditor:: afterExecute(INamedInterface* alg, const StatusCode& ) {
00058 std::string theString = "Memory usage has changed after ";
00059 theString += alg->name() ;
00060 theString += " Execute Method";
00061 printinfo(theString);
00062 }
00063 void MemoryAuditor::beforeBeginRun(INamedInterface* ini) {
00064 std::string theString = "Memory usage before ";
00065 theString += ini->name() ;
00066 theString += " BeginRun Method";
00067 printinfo(theString);
00068 }
00069 void MemoryAuditor:: afterBeginRun(INamedInterface* ini){
00070 std::string theString = "Memory usage has changed after ";
00071 theString += ini->name() ;
00072 theString += " BeginRun Method";
00073 printinfo(theString);
00074 }
00075 void MemoryAuditor::beforeEndRun(INamedInterface* ini) {
00076 std::string theString = "Memory usage before ";
00077 theString += ini->name() ;
00078 theString += " EndRun Method";
00079 printinfo(theString);
00080 }
00081 void MemoryAuditor:: afterEndRun(INamedInterface* ini){
00082 std::string theString = "Memory usage has changed after ";
00083 theString += ini->name() ;
00084 theString += " EndRun Method";
00085 printinfo(theString);
00086 }
00087 void MemoryAuditor:: beforeFinalize(INamedInterface* alg) {
00088 std::string theString = "Memory usage has changed before ";
00089 theString += alg->name() ;
00090 theString += " Finalize Method";
00091 printinfo(theString);
00092 }
00093 void MemoryAuditor:: afterFinalize(INamedInterface* alg){
00094 std::string theString = "Memory usage has changed after ";
00095 theString += alg->name() ;
00096 theString += " Finalize Method";
00097 printinfo(theString);
00098 }
00099
00100 void
00101 MemoryAuditor::before(CustomEventTypeRef evt, const std::string& caller) {
00102 if (m_types.value().size() != 0) {
00103 if ( (m_types.value())[0] == "none") {
00104 return;
00105 }
00106
00107 if ( find(m_types.value().begin(), m_types.value().end(), evt) ==
00108 m_types.value().end() ) {
00109 return;
00110 }
00111 }
00112
00113 std::string theString = "Memory usage before ";
00114 theString += caller + " with auditor trigger " + evt;
00115 printinfo(theString);
00116
00117 }
00118
00119 void
00120 MemoryAuditor::after(CustomEventTypeRef evt, const std::string& caller, const StatusCode&) {
00121
00122 if (m_types.value().size() != 0) {
00123 if ( (m_types.value())[0] == "none") {
00124 return;
00125 }
00126
00127 if ( find(m_types.value().begin(), m_types.value().end(), evt) ==
00128 m_types.value().end() ) {
00129 return;
00130 }
00131 }
00132
00133 std::string theString = "Memory usage has changed after ";
00134 theString += caller + " with auditor trigger " + evt;
00135 printinfo(theString);
00136
00137 }
00138
00139
00140 StatusCode MemoryAuditor::sysFinalize( )
00141 {
00142 return StatusCode::SUCCESS;
00143 }
00144
00145 bool MemoryAuditor::printinfo(std::string theString)
00146 {
00147 ProcStats* p = ProcStats::instance();
00148 procInfo info;
00149
00150
00151 if( p->fetch(info) == true) {
00152 MsgStream log(msgSvc(), name());
00153 log << MSG::INFO << theString <<
00154 " virtual size = " << info.vsize << " MB" <<
00155 " resident set size = " << info.rss << " MB" << endmsg;
00156 return true;
00157 }
00158 else {
00159 return false;
00160 }
00161 }