The Gaudi Framework  v33r1 (b1225454)
MemStatAuditor Class Reference

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

Inheritance diagram for MemStatAuditor:
Collaboration diagram for MemStatAuditor:

Public Member Functions

StatusCode initialize () override
 
void i_before (CustomEventTypeRef, std::string_view) override
 catch all "before" method, implemented in the derived class More...
 
void i_after (CustomEventTypeRef evt, std::string_view caller, const StatusCode &) override
 catch all "after" method, implemented in the derived class More...
 
- Public Member Functions inherited from CommonAuditor
 Auditor (std::string name, ISvcLocator *svcloc)
 Constructor. More...
 
 Auditor (const Auditor &a)=delete
 Constructor. 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 (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
 
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 (std::string_view 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 (std::string_view 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
 
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, 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
 
- Public Member Functions inherited from CommonMessaging< implements< IAuditor, IProperty > >
MSG::Level msgLevel () const
 get the cached level (originally extracted from the embedded MsgStream) More...
 
bool msgLevel (MSG::Level lvl) const
 get the output level from the embedded MsgStream More...
 
- Public Member Functions inherited from CommonMessagingBase
virtual ~CommonMessagingBase ()=default
 Virtual destructor. More...
 
const 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...
 

Private Member Functions

void i_printinfo (std::string_view msg, CustomEventTypeRef evt, std::string_view caller)
 

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
using Factory = Gaudi::PluginService::Factory< IAuditor *(const std::string &, ISvcLocator *)>
 
- 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 CommonAuditor
bool i_auditEventType (std::string_view 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 > >
MSG::Level setUpMessaging () const
 Set up local caches. More...
 
MSG::Level resetMessaging ()
 Reinitialize internal states. More...
 
void updateMsgStreamOutputLevel (int level)
 Update the output level of the cached MsgStream. More...
 

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 28 of file MemStatAuditor.cpp.

Member Function Documentation

◆ i_after()

void MemStatAuditor::i_after ( CustomEventTypeRef  evt,
std::string_view  caller,
const StatusCode sc 
)
inlineoverridevirtual

catch all "after" method, implemented in the derived class

Implements CommonAuditor.

Definition at line 38 of file MemStatAuditor.cpp.

38  {
39  i_printinfo( "Memory usage has changed after", evt, caller );
40  }
void i_printinfo(std::string_view msg, CustomEventTypeRef evt, std::string_view caller)

◆ i_before()

void MemStatAuditor::i_before ( CustomEventTypeRef  evt,
std::string_view  caller 
)
inlineoverridevirtual

catch all "before" method, implemented in the derived class

Implements CommonAuditor.

Definition at line 34 of file MemStatAuditor.cpp.

34  {
35  // It's not interesting to monitor the memory usage before the methods.
36  }

◆ i_printinfo()

void MemStatAuditor::i_printinfo ( std::string_view  msg,
CustomEventTypeRef  evt,
std::string_view  caller 
)
private

Definition at line 63 of file MemStatAuditor.cpp.

63  {
64  // cannot be exactly 0
65  double deltaVSize = 0.00001;
66 
67  if ( procInfo pInfo; ProcStats::instance()->fetch( pInfo ) ) {
68 
69  if ( pInfo.vsize > 0 ) {
70  if ( m_vSize > 0 ) { deltaVSize = pInfo.vsize - m_vSize; }
71  // store the current VSize to be able to monitor the increment
72  m_vSize = pInfo.vsize;
73  }
74 
75  info() << msg << " " << caller << " " << evt << " \tvirtual size = " << pInfo.vsize << " MB"
76  << " \tresident set size = " << pInfo.rss << " MB"
77  << " deltaVsize = " << deltaVSize << " MB" << endmsg;
78  }
79  // fill the stat for every call, not just when there is a change
80  // only monitor the increment in VSize
81  // Stat stv(m_stat, caller + ":VMemUsage", pInfo.vsize);
82  // Stat str(m_stat, caller + ":RMemUsage", pInfo.rss);
83  Stat sts( m_stat, std::string{caller}.append( ":VMem" ), deltaVSize );
84 }
Small wrapper class for easy manipulation with generic counters and IStatSvc interface.
Definition: Stat.h:56
static ProcStats * instance()
Definition: ProcStats.cpp:249
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
STL class.
T append(T... args)
double m_vSize
vsize of the previous call to printinfo
SmartIF< IChronoStatSvc > m_stat
MsgStream & msg() const
shortcut for the method msgStream(MSG::INFO)
bool fetch(procInfo &fill_me)
Definition: ProcStats.cpp:272
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202

◆ initialize()

StatusCode MemStatAuditor::initialize ( )
overridevirtual

Reimplemented from Auditor.

Definition at line 52 of file MemStatAuditor.cpp.

52  {
53  return CommonAuditor::initialize().andThen( [&]() -> StatusCode {
54  m_stat = serviceLocator()->service( "ChronoStatSvc" );
55  if ( UNLIKELY( !m_stat ) ) {
56  error() << "Cannot get ChronoStatSvc" << endmsg;
57  return StatusCode::FAILURE;
58  }
59  return StatusCode::SUCCESS;
60  } );
61 }
#define UNLIKELY(x)
Definition: Kernel.h:106
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
SmartIF< ISvcLocator > & serviceLocator() const override
The standard service locator.
Definition: Auditor.cpp:192
StatusCode andThen(F &&f, ARGS &&... args) const
Chain code blocks making the execution conditional a success result.
Definition: StatusCode.h:198
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:86
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
SmartIF< IChronoStatSvc > m_stat
constexpr static const auto FAILURE
Definition: StatusCode.h:101
virtual StatusCode initialize()
Definition: Auditor.cpp:75
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202

Member Data Documentation

◆ m_stat

SmartIF<IChronoStatSvc> MemStatAuditor::m_stat
private

Definition at line 44 of file MemStatAuditor.cpp.

◆ m_vSize

double MemStatAuditor::m_vSize = -1
private

vsize of the previous call to printinfo

Definition at line 47 of file MemStatAuditor.cpp.


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