The Gaudi Framework  v29r0 (ff2e7097)
MemStatAuditor Class Reference

Just a minor modification of MemoryAuditor to allow the output memory statistics table to be printed. More...

#include <GaudiAud/MemStatAudit.h>

Inheritance diagram for MemStatAuditor:
Collaboration diagram for MemStatAuditor:

Public Member Functions

 MemStatAuditor (const std::string &name, ISvcLocator *pSvcLocator)
 local More...
 
 ~MemStatAuditor () override=default
 
StatusCode initialize () override
 
- Public Member Functions inherited from MemoryAuditor
 MemoryAuditor (const std::string &name, ISvcLocator *pSvcLocator)
 
- Public Member Functions inherited from CommonAuditor
 CommonAuditor (const std::string &name, ISvcLocator *svcloc)
 Constructor. More...
 
 ~CommonAuditor () override=default
 Destructor. More...
 
void before (StandardEventType evt, const std::string &caller) override
 
void before (StandardEventType evt, INamedInterface *caller) override
 
void before (CustomEventTypeRef evt, const std::string &caller) override
 
void before (CustomEventTypeRef evt, INamedInterface *caller) override
 
void after (StandardEventType evt, const std::string &caller, const StatusCode &sc) override
 
void after (StandardEventType evt, INamedInterface *caller, const StatusCode &sc) override
 
void after (CustomEventTypeRef evt, const std::string &caller, const StatusCode &sc) override
 
void after (CustomEventTypeRef evt, INamedInterface *caller, const StatusCode &sc) override
 
- Public Member Functions inherited from Auditor
 Auditor (const std::string &name, ISvcLocator *svcloc)
 Constructor. More...
 
 Auditor (const Auditor &a)=delete
 
Auditoroperator= (const Auditor &rhs)=delete
 
StatusCode sysInitialize () override
 Initialization method invoked by the framework. More...
 
StatusCode sysFinalize () override
 Finalization method invoked by the framework. More...
 
void before (StandardEventType, INamedInterface *) override
 The following methods are meant to be implemented by the child class... More...
 
void before (StandardEventType, const std::string &) override
 
void before (CustomEventTypeRef, INamedInterface *) override
 
void before (CustomEventTypeRef, const std::string &) override
 
void after (StandardEventType, INamedInterface *, const StatusCode &) override
 
void after (StandardEventType, const std::string &, const StatusCode &) override
 
void after (CustomEventTypeRef, INamedInterface *, const StatusCode &) override
 
void after (CustomEventTypeRef, const std::string &, const StatusCode &) override
 
void beforeInitialize (INamedInterface *) override
 
void afterInitialize (INamedInterface *) override
 
void beforeReinitialize (INamedInterface *) override
 
void afterReinitialize (INamedInterface *) override
 
void beforeExecute (INamedInterface *) override
 
void afterExecute (INamedInterface *, const StatusCode &) override
 
void beforeFinalize (INamedInterface *) override
 
void afterFinalize (INamedInterface *) override
 
void beforeBeginRun (INamedInterface *) override
 
void afterBeginRun (INamedInterface *) override
 
void beforeEndRun (INamedInterface *) override
 
void afterEndRun (INamedInterface *) override
 
virtual StatusCode finalize ()
 
const std::stringname () const override
 
bool isEnabled () const override
 
SmartIF< ISvcLocator > & serviceLocator () const override
 The standard service locator. More...
 
template<class T >
StatusCode service (const std::string &name, T *&svc, bool createIf=false) const
 Access a service by name, creating it if it doesn't already exist. More...
 
template<class T = IService>
SmartIF< T > service (const std::string &name, bool createIf=false) const
 
StatusCode setProperties ()
 Set the auditor's properties. More...
 
- Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
 PropertyHolder ()=default
 
 ~PropertyHolder () override=default
 
Gaudi::Details::PropertyBasedeclareProperty (Gaudi::Details::PropertyBase &prop)
 Declare a property. More...
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, TYPE &value, const std::string &doc="none")
 Helper to wrap a regular data member and use it as a regular property. More...
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, TYPE &value, const std::string &doc="none") const
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none")
 Declare a PropertyBase instance setting name and documentation. More...
 
Gaudi::Details::PropertyBasedeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
 Declare a remote property. More...
 
StatusCode setProperty (const Gaudi::Details::PropertyBase &p) override
 set the property form another property More...
 
StatusCode setProperty (const std::string &s) override
 set the property from the formatted string More...
 
StatusCode setProperty (const std::string &n, const std::string &v) override
 set the property from name and the value More...
 
StatusCode setProperty (const std::string &name, const TYPE &value)
 set the property form the value More...
 
StatusCode getProperty (Gaudi::Details::PropertyBase *p) const override
 get the property More...
 
const Gaudi::Details::PropertyBasegetProperty (const std::string &name) const override
 get the property by name More...
 
StatusCode getProperty (const std::string &n, std::string &v) const override
 convert the property to the string More...
 
const std::vector< Gaudi::Details::PropertyBase * > & getProperties () const override
 get all properties More...
 
bool hasProperty (const std::string &name) const override
 Return true if we have a property with the given name. More...
 
 PropertyHolder (const PropertyHolder &)=delete
 
PropertyHolderoperator= (const PropertyHolder &)=delete
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, GaudiHandleBase &ref, const std::string &doc="none")
 Specializations for various GaudiHandles. More...
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, GaudiHandleArrayBase &ref, const std::string &doc="none")
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, DataObjectHandleBase &ref, const std::string &doc="none")
 
- Public Member Functions inherited from CommonMessagingBase
virtual ~CommonMessagingBase ()=default
 Virtual destructor. More...
 
SmartIF< IMessageSvc > & msgSvc () const
 The standard message service. More...
 
MsgStreammsgStream () const
 Return an uninitialized MsgStream. More...
 
MsgStreammsgStream (const MSG::Level level) const
 Predefined configurable message stream for the efficient printouts. More...
 
MsgStreamalways () const
 shortcut for the method msgStream(MSG::ALWAYS) More...
 
MsgStreamfatal () const
 shortcut for the method msgStream(MSG::FATAL) More...
 
MsgStreamerr () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamerror () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamwarning () const
 shortcut for the method msgStream(MSG::WARNING) More...
 
MsgStreaminfo () const
 shortcut for the method msgStream(MSG::INFO) More...
 
MsgStreamdebug () const
 shortcut for the method msgStream(MSG::DEBUG) More...
 
MsgStreamverbose () const
 shortcut for the method msgStream(MSG::VERBOSE) More...
 
MsgStreammsg () const
 shortcut for the method msgStream(MSG::INFO) More...
 
MSG::Level msgLevel () const
 get the output level from the embedded MsgStream More...
 
MSG::Level outputLevel () const __attribute__((deprecated))
 Backward compatibility function for getting the output level. More...
 
bool msgLevel (MSG::Level lvl) const
 get the output level from the embedded MsgStream More...
 

Private Member Functions

void i_before (CustomEventTypeRef evt, const std::string &caller) override
 Re-implement i_before to avoid monitoring the memory usage before a function. More...
 
void i_printinfo (const std::string &msg, CustomEventTypeRef evt, const std::string &caller) override
 Report the memory usage. More...
 
SmartIF< IChronoStatSvc > & statSvc ()
 

Private Attributes

SmartIF< IChronoStatSvcm_stat
 
double m_vSize = -1
 vsize of the previous call to printinfo More...
 

Additional Inherited Members

- Public Types inherited from Auditor
typedef Gaudi::PluginService::Factory< IAuditor *, const std::string &, ISvcLocator * > Factory
 
- Public Types inherited from PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
using PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
 Typedef used to refer to this class from derived classes, as in. More...
 
- Public Types inherited from CommonMessaging< implements< IAuditor, IProperty > >
using base_class = CommonMessaging
 
- Protected Member Functions inherited from MemoryAuditor
void i_after (CustomEventTypeRef evt, const std::string &caller, const StatusCode &sc) override
 Default (catch-all) "after" Auditor hook. More...
 
- Protected Member Functions inherited from CommonAuditor
bool i_auditEventType (const std::string &evt)
 Check if we are requested to audit the passed event type. More...
 
- Protected Member Functions inherited from PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
Gaudi::Details::PropertyBaseproperty (const std::string &name) const
 
- Protected Member Functions inherited from CommonMessaging< implements< IAuditor, IProperty > >
void updateMsgStreamOutputLevel (int level)
 Update the output level of the cached MsgStream. More...
 
- Static Protected Member Functions inherited from MemoryAuditor
static bool getProcInfo (procInfo &info)
 Get the process informations. More...
 
- Protected Attributes inherited from CommonAuditor
Gaudi::Property< std::vector< std::string > > m_types
 
Gaudi::Property< std::vector< std::string > > m_customTypes
 

Detailed Description

Just a minor modification of MemoryAuditor to allow the output memory statistics table to be printed.

Author
Vanya Belyaev
Marco Clemencic
Date
04/02/2001

Definition at line 15 of file MemStatAuditor.h.

Constructor & Destructor Documentation

MemStatAuditor::MemStatAuditor ( const std::string name,
ISvcLocator pSvcLocator 
)

local

Definition at line 18 of file MemStatAuditor.cpp.

18  : MemoryAuditor( name, pSvcLocator )
19 {
20 }
MemoryAuditor(const std::string &name, ISvcLocator *pSvcLocator)
MemStatAuditor::~MemStatAuditor ( )
overridedefault

Member Function Documentation

void MemStatAuditor::i_before ( CustomEventTypeRef  evt,
const std::string caller 
)
overrideprivatevirtual

Re-implement i_before to avoid monitoring the memory usage before a function.

Reimplemented from MemoryAuditor.

Definition at line 35 of file MemStatAuditor.cpp.

36 {
37  // It's not interesting to monitor the memory usage before the methods.
38 }
void MemStatAuditor::i_printinfo ( const std::string msg,
CustomEventTypeRef  evt,
const std::string caller 
)
overrideprivatevirtual

Report the memory usage.

Reimplemented from MemoryAuditor.

Definition at line 40 of file MemStatAuditor.cpp.

41 {
42  // cannot be exactly 0
43  double deltaVSize = 0.00001;
44 
45  procInfo pInfo;
46  if ( getProcInfo( pInfo ) ) {
47 
48  if ( pInfo.vsize > 0 ) {
49  if ( m_vSize > 0 ) {
50  deltaVSize = pInfo.vsize - m_vSize;
51  }
52  // store the current VSize to be able to monitor the increment
53  m_vSize = pInfo.vsize;
54  }
55 
56  info() << msg << " " << caller << " " << evt << " \tvirtual size = " << pInfo.vsize << " MB"
57  << " \tresident set size = " << pInfo.rss << " MB"
58  << " deltaVsize = " << deltaVSize << " MB" << endmsg;
59  }
60  // fill the stat for every call, not just when there is a change
61  // only monitor the increment in VSize
62  // Stat stv(statSvc(), caller + ":VMemUsage", pInfo.vsize);
63  // Stat str(statSvc(), caller + ":RMemUsage", pInfo.rss);
64  Stat sts( statSvc(), caller + ":VMem", deltaVSize );
65 }
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Small wrapper class for easy manipulation with generic counters and IStatSvc&ICounterSvc interface...
Definition: Stat.h:46
double rss
Definition: ProcStats.h:39
double m_vSize
vsize of the previous call to printinfo
static bool getProcInfo(procInfo &info)
Get the process informations.
Definition: MemoryAuditor.h:28
double vsize
Definition: ProcStats.h:38
SmartIF< IChronoStatSvc > & statSvc()
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
evt
Definition: IOTest.py:96
StatusCode MemStatAuditor::initialize ( )
overridevirtual

Reimplemented from Auditor.

Definition at line 22 of file MemStatAuditor.cpp.

23 {
25  if ( UNLIKELY( sc.isFailure() ) ) return sc;
26 
27  m_stat = serviceLocator()->service( "ChronoStatSvc" );
28  if ( UNLIKELY( !m_stat.get() ) ) {
29  error() << "Cannot get ChronoStatSvc" << endmsg;
30  return StatusCode::FAILURE;
31  }
32  return StatusCode::SUCCESS;
33 }
#define UNLIKELY(x)
Definition: Kernel.h:128
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:82
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:79
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
SmartIF< ISvcLocator > & serviceLocator() const override
The standard service locator.
Definition: Auditor.cpp:206
SmartIF< IChronoStatSvc > m_stat
virtual StatusCode initialize()
Definition: Auditor.cpp:70
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
SmartIF<IChronoStatSvc>& MemStatAuditor::statSvc ( )
inlineprivate

Definition at line 29 of file MemStatAuditor.h.

29 { return m_stat; }
SmartIF< IChronoStatSvc > m_stat

Member Data Documentation

SmartIF<IChronoStatSvc> MemStatAuditor::m_stat
private

Definition at line 30 of file MemStatAuditor.h.

double MemStatAuditor::m_vSize = -1
private

vsize of the previous call to printinfo

Definition at line 33 of file MemStatAuditor.h.


The documentation for this class was generated from the following files: