| # Gaudi Framework, version v25r0 |

Home |  | Generated: Mon Feb 17 2014

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
Google::AuditorBase Class Referenceabstract

Base for Google Auditors. More...

`#include <GoogleAuditor.cpp>`

Inheritance diagram for Google::AuditorBase:
[legend]
Collaboration diagram for Google::AuditorBase:
[legend]

## Public Member Functions
| AuditorBase (const std::string &name, ISvcLocator *pSvcLocator)
| Constructor.
virtual | ~AuditorBase ()
| Destructor.
StatusCode | initialize ()
| Initialize the auditor base.
StatusCode | finalize ()
| Finalize the auditor base.
void | handle (const Incident &incident)
| Implement the handle method for the Incident service.
void | before (StandardEventType type, INamedInterface *i)
| The following methods are meant to be implemented by the child class...
void | before (CustomEventTypeRef type, INamedInterface *i)
void | before (StandardEventType type, const std::string &s)
void | before (CustomEventTypeRef, const std::string &s)
void | after (StandardEventType type, INamedInterface *i, const StatusCode &sc)
void | after (CustomEventTypeRef type, INamedInterface *i, const StatusCode &sc)
void | after (StandardEventType type, const std::string &s, const StatusCode &sc)
void | after (CustomEventTypeRef, const std::string &s, const StatusCode &)
void | beforeInitialize (INamedInterface *i)
void | beforeReinitialize (INamedInterface *i)
void | beforeExecute (INamedInterface *i)
void | beforeBeginRun (INamedInterface *i)
void | beforeEndRun (INamedInterface *i)
void | beforeFinalize (INamedInterface *i)
void | afterInitialize (INamedInterface *i)
void | afterReinitialize (INamedInterface *i)
void | afterExecute (INamedInterface *i, const StatusCode &s)
void | afterBeginRun (INamedInterface *i)
void | afterEndRun (INamedInterface *i)
void | afterFinalize (INamedInterface *i)
Public Member Functions inherited from extends1< Auditor, IIncidentListener >
| extends1 (A1 a1, A2 a2, A3 a3)
| Templated constructor with 3 arguments.
| extends1 (A1 a1, A2 a2)
| Templated constructor with 2 arguments.
| extends1 (A1 a1)
| Templated constructor with 1 argument.
| extends1 ()
| Default constructor.
virtual void * | i_cast (const InterfaceID &tid) const
| Implementation of IInterface::i_cast.
virtual StatusCode | queryInterface (const InterfaceID &ti, void **pp)
| Implementation of IInterface::queryInterface.
virtual std::vector< std::string > | getInterfaceNames () const
| Implementation of IInterface::getInterfaceNames.
virtual | ~extends1 ()
| Virtual destructor.
Public Member Functions inherited from Auditor
| Auditor (const std::string &name, ISvcLocator *svcloc)
| Constructor.
virtual | ~Auditor ()
| Destructor.
StatusCode | sysInitialize ()
| Initialization method invoked by the framework.
StatusCode | sysFinalize ()
| Finalization method invoked by the framework.
virtual const std::string & | name () const
virtual bool | isEnabled () const
SmartIF< IMessageSvc > & | msgSvc () const
| The standard message service.
int | outputLevel () const
| Retrieve the output level of current auditor.
void | setOutputLevel (int level)
| Set the output level for current auditor.
SmartIF< ISvcLocator > & | serviceLocator () const
| The standard service locator.
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.
virtual StatusCode | setProperty (const Property &p)
| Set a value of a property of an auditor.
virtual StatusCode | setProperty (const std::string &s)
| Implementation of IProperty::setProperty.
virtual StatusCode | setProperty (const std::string &n, const std::string &v)
| Implementation of IProperty::setProperty.
virtual StatusCode | getProperty (Property *p) const
| Get the value of a property.
virtual const Property & | getProperty (const std::string &name) const
| Get the property by name.
virtual StatusCode | getProperty (const std::string &n, std::string &v) const
| Implementation of IProperty::getProperty.
const std::vector< Property * > & | getProperties () const
| Get all properties.
template<class TYPE >
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value
StatusCode | setProperties ()
| Set the auditor's properties.
template<class T >
Property * | declareProperty (const std::string &name, T &property, const std::string &doc="none") const
| Declare the named property.
Public Member Functions inherited from extend_interfaces1< IIncidentListener >
virtual | ~extend_interfaces1 ()
| Virtual destructor.
Public Member Functions inherited from IIncidentListener
| DeclareInterfaceID (IIncidentListener, 2, 0)
| InterfaceID.
Public Member Functions inherited from IInterface
virtual unsigned long | addRef ()=0
| Increment the reference count of Interface instance.
virtual unsigned long | release ()=0
| Release Interface instance.
virtual unsigned long | refCount () const =0
| Current reference count.
virtual | ~IInterface ()
| Virtual destructor.

## Protected Member Functions
virtual void | google_before (const std::string &s)=0
| Start the google tool.
virtual void | google_after (const std::string &s)=0
| stop the google tool
virtual bool | alreadyRunning ()=0
| check if we are already running the tool

## Protected Attributes
MsgStream | m_log
| Messaging object.

## Private Member Functions
void | startAudit ()
| Start a full event audit.
void | stopAudit ()
| stop a full event audit
bool | isSequencer (INamedInterface *i) const
| Check if the component in question is a GaudiSequencer or a Sequencer.

## Private Attributes
std::vector< std::string > | m_when
| When to audit the algorithms.
std::vector< std::string > | m_veto
| Veto list. Any component in this list will not be audited.
std::vector< std::string > | m_list
| Any component in this list will be audited. If empty, all will be done.
unsigned long long | m_eventsToSkip
| Number of events to skip before auditing.
bool | m_skipSequencers
| Boolean indicating if sequencers should be skipped or not.
int | m_freq
| The frequency to audit events. -1 means all events.
bool | m_audit
| Internal flag to say if auditing is enabled or not for the current event.
unsigned long long | m_nEvts
| Number of events processed.
bool | m_fullEventAudit
| Flag to indicate if full event auditing is enabled or not.
unsigned long long | m_nSampleEvents
| Number of events to include in a full event audit.
unsigned long long | m_sampleEventCount
| Internal count of the number of events currently processed during an audit.
bool | m_inFullAudit
| Internal flag to indicate if we are current in a full event audit.
std::string | m_startedBy
| Name of the component we are currently auditing.

## Additional Inherited Members
Public Types inherited from extends1< Auditor, IIncidentListener >
typedef extends1 | base_class
| Typedef to this class.
typedef extend_interfaces1 < IIncidentListener > | extend_interfaces_base
| Typedef to the base of this class.
typedef extend_interfaces_base::ext_iids | interfaces
| MPL set of all the implemented interfaces.
Static Public Member Functions inherited from IInterface
static const InterfaceID & | interfaceID ()
| Return an instance of InterfaceID identifying the interface.

## Detailed Description

Base for Google Auditors.

Author
  Chris Jones

Date
  18/04/2011

Definition at line 34 of file GoogleAuditor.cpp.

## Constructor & Destructor Documentation

Google::AuditorBase::AuditorBase | ( | const std::string & | name,
|  | ISvcLocator * | pSvcLocator
| ) |  |

Constructor.

Definition at line 284 of file GoogleAuditor.cpp.

: base_class ( name , pSvcLocator )
, m_log ( msgSvc() , name )
, m_audit ( false )
, m_nEvts ( 0 )
, m_sampleEventCount( 0 )
, m_inFullAudit ( false )
{
{
// Note: 'tmp' is needed to avoid an issue with list_of and C++11.
const std::vector<std::string> tmp =
boost::assign::list_of
("Initialize")
("ReInitialize")
("Execute")
("BeginRun")
("EndRun")
("Finalize");
m_when = tmp;
}
declareProperty("ActivateAt", m_when,
"List of phases to activate the Auditoring during" );
declareProperty("DisableFor", m_veto,
"List of component names to disable the auditing for" );
declareProperty("EnableFor", m_list );
declareProperty("ProfileFreq", m_freq = -1,
"The frequence to audit events. -1 means all events" );
declareProperty("DoFullEventProfile", m_fullEventAudit = false,
"If true, instead of individually auditing components, the full event (or events) will be audited in one go" );
declareProperty("FullEventNSampleEvents", m_nSampleEvents = 1,
"The number of events to include in a full event audit, if enabled" );
declareProperty("SkipEvents", m_eventsToSkip = 0,
"Number of events to skip before activating the auditing" );
declareProperty("SkipSequencers", m_skipSequencers = true,
"If true, auditing will be skipped for Sequencer objects." );
}

virtual Google::AuditorBase::~AuditorBase | ( |  | ) |
| inline virtual

Destructor.

Definition at line 43 of file GoogleAuditor.cpp.

{ }

## Member Function Documentation

void Google::AuditorBase::after | ( | StandardEventType | type,
|  | INamedInterface * | i,
|  | const StatusCode & | sc
| ) |  |
| inline virtual

Reimplemented from Auditor.

Definition at line 186 of file GoogleAuditor.cpp.

{
if ( !m_skipSequencers || !isSequencer(i) )
{
std::ostringstream t;
t << type;
after(t.str(),i,sc);
}
}

void Google::AuditorBase::after | ( | CustomEventTypeRef | type,
|  | INamedInterface * | i,
|  | const StatusCode & | sc
| ) |  |
| inline virtual

Reimplemented from Auditor.

Definition at line 196 of file GoogleAuditor.cpp.

{
if ( !m_skipSequencers || !isSequencer(i) )
{
after(type,i->name(),sc);
}
}

void Google::AuditorBase::after | ( | StandardEventType | type,
|  | const std::string & | s,
|  | const StatusCode & | sc
| ) |  |
| inline virtual

Reimplemented from Auditor.

Definition at line 204 of file GoogleAuditor.cpp.

{
std::ostringstream t;
t << type;
after(t.str(),s,sc);
}

void Google::AuditorBase::after | ( | CustomEventTypeRef | ,
|  | const std::string & | s,
|  | const StatusCode & |
| ) |  |
| inline virtual

Reimplemented from Auditor.

Definition at line 211 of file GoogleAuditor.cpp.

{
if ( !m_fullEventAudit && m_audit &&
std::find(m_veto.begin(),m_veto.end(),s) == m_veto.end() &&
( m_list.empty() || std::find(m_list.begin(),m_list.end(),s) != m_list.end() ) )
{
if ( s == m_startedBy )
{
std::ostringstream t;
t << s << "-Event" << m_nEvts;
google_after(t.str());
}
}
}

void Google::AuditorBase::afterBeginRun | ( | INamedInterface * | i | ) |
| inline virtual

Reimplemented from Auditor.

Definition at line 237 of file GoogleAuditor.cpp.

{ return after(IAuditor::BeginRun,i,StatusCode::SUCCESS); }

void Google::AuditorBase::afterEndRun | ( | INamedInterface * | i | ) |
| inline virtual

Reimplemented from Auditor.

Definition at line 238 of file GoogleAuditor.cpp.

{ return after(IAuditor::EndRun,i,StatusCode::SUCCESS); }

void Google::AuditorBase::afterExecute | ( | INamedInterface * | i,
|  | const StatusCode & | s
| ) |  |
| inline virtual

Reimplemented from Auditor.

Definition at line 236 of file GoogleAuditor.cpp.

{ return after(IAuditor::Execute,i,s); }

void Google::AuditorBase::afterFinalize | ( | INamedInterface * | i | ) |
| inline virtual

Reimplemented from Auditor.

Definition at line 239 of file GoogleAuditor.cpp.

{ return after(IAuditor::Finalize,i,StatusCode::SUCCESS); }

void Google::AuditorBase::afterInitialize | ( | INamedInterface * | i | ) |
| inline virtual

Reimplemented from Auditor.

Definition at line 234 of file GoogleAuditor.cpp.

{ return after(IAuditor::Initialize,i,StatusCode::SUCCESS); }

void Google::AuditorBase::afterReinitialize | ( | INamedInterface * | i | ) |
| inline virtual

Reimplemented from Auditor.

Definition at line 235 of file GoogleAuditor.cpp.

{ return after(IAuditor::ReInitialize,i,StatusCode::SUCCESS); }

virtual bool Google::AuditorBase::alreadyRunning | ( |  | ) |
| protected pure virtual

check if we are already running the tool

Implemented in Google::CPUProfiler, Google::HeapChecker, and Google::HeapProfiler.

void Google::AuditorBase::before | ( | StandardEventType | evt,
|  | INamedInterface * | obj
| ) |  |
| inline virtual

The following methods are meant to be implemented by the child class...

Reimplemented from Auditor.

Definition at line 140 of file GoogleAuditor.cpp.

{
if ( !m_skipSequencers || !isSequencer(i) )
{
before(type,i->name());
}
}

void Google::AuditorBase::before | ( | CustomEventTypeRef | type,
|  | INamedInterface * | i
| ) |  |
| inline virtual

Reimplemented from Auditor.

Definition at line 148 of file GoogleAuditor.cpp.

{
if ( !m_skipSequencers || !isSequencer(i) )
{
before(type,i->name());
}
}

void Google::AuditorBase::before | ( | StandardEventType | type,
|  | const std::string & | s
| ) |  |
| inline virtual

Reimplemented from Auditor.

Definition at line 156 of file GoogleAuditor.cpp.

{
std::ostringstream t;
t << type;
before(t.str(),s);
}

void Google::AuditorBase::before | ( | CustomEventTypeRef | ,
|  | const std::string & | s
| ) |  |
| inline virtual

Reimplemented from Auditor.

Definition at line 163 of file GoogleAuditor.cpp.

{
if ( !m_fullEventAudit && m_audit &&
std::find(m_veto.begin(),m_veto.end(),s) == m_veto.end() &&
( m_list.empty() || std::find(m_list.begin(),m_list.end(),s) != m_list.end() ) )
{
if ( !alreadyRunning() )
{
m_log << MSG::INFO << "Starting Auditor for " << s << endmsg;
m_startedBy = s;
std::ostringstream t;
t << s << "-Event" << m_nEvts;
google_before(t.str());
}
else
{
m_log << MSG::WARNING
<< "Auditor already running. Cannot be started for " << s
<< endmsg;
}
}
}

void Google::AuditorBase::beforeBeginRun | ( | INamedInterface * | i | ) |
| inline virtual

Reimplemented from Auditor.

Definition at line 230 of file GoogleAuditor.cpp.

{ return before(IAuditor::BeginRun,i); }

void Google::AuditorBase::beforeEndRun | ( | INamedInterface * | i | ) |
| inline virtual

Reimplemented from Auditor.

Definition at line 231 of file GoogleAuditor.cpp.

{ return before(IAuditor::EndRun,i); }

void Google::AuditorBase::beforeExecute | ( | INamedInterface * | i | ) |
| inline virtual

Reimplemented from Auditor.

Definition at line 229 of file GoogleAuditor.cpp.

{ return before(IAuditor::Execute,i); }

void Google::AuditorBase::beforeFinalize | ( | INamedInterface * | i | ) |
| inline virtual

Reimplemented from Auditor.

Definition at line 232 of file GoogleAuditor.cpp.

{ return before(IAuditor::Finalize,i); }

void Google::AuditorBase::beforeInitialize | ( | INamedInterface * | i | ) |
| inline virtual

Reimplemented from Auditor.

Definition at line 227 of file GoogleAuditor.cpp.

{ return before(IAuditor::Initialize,i); }

void Google::AuditorBase::beforeReinitialize | ( | INamedInterface * | i | ) |
| inline virtual

Reimplemented from Auditor.

Definition at line 228 of file GoogleAuditor.cpp.

{ return before(IAuditor::ReInitialize,i); }

StatusCode Google::AuditorBase::finalize | ( |  | ) |
| inline virtual

Finalize the auditor base.

Reimplemented from Auditor.

Definition at line 59 of file GoogleAuditor.cpp.

{
if ( alreadyRunning() ) stopAudit();
return StatusCode::SUCCESS;
}

virtual void Google::AuditorBase::google_after | ( | const std::string & | s | ) |
| protected pure virtual

stop the google tool

Implemented in Google::CPUProfiler, Google::HeapChecker, and Google::HeapProfiler.

virtual void Google::AuditorBase::google_before | ( | const std::string & | s | ) |
| protected pure virtual

Start the google tool.

Implemented in Google::CPUProfiler, Google::HeapChecker, and Google::HeapProfiler.

void Google::AuditorBase::handle | ( | const Incident & | incident | ) |
| inline virtual

Implement the handle method for the Incident service.

This is used to inform the tool of software incidents.

Parameters

  incident | The incident identifier

Implements IIncidentListener.

Definition at line 105 of file GoogleAuditor.cpp.

{
if ( IncidentType::BeginEvent == incident.type() )
{
++m_nEvts;
m_audit = ( m_nEvts > m_eventsToSkip &&
( m_freq < 0 ||
m_nEvts == 1 ||
m_nEvts % m_freq == 0 ) );
m_log << MSG::DEBUG << "Event " << m_nEvts
<< " Audit=" << m_audit << endmsg;
if ( m_fullEventAudit )
{
if ( m_inFullAudit )
{
if ( m_sampleEventCount >= m_nSampleEvents &&
alreadyRunning() )
{
stopAudit();
}
else
{
++m_sampleEventCount;
}
}
if ( m_audit && !m_inFullAudit && !alreadyRunning() )
{
startAudit();
}
}
}
}

StatusCode Google::AuditorBase::initialize | ( |  | ) |
| inline virtual

Initialize the auditor base.

Reimplemented from Auditor.

Reimplemented in Google::HeapChecker.

Definition at line 46 of file GoogleAuditor.cpp.

{
m_log << MSG::INFO << "Initialised" << endmsg;
SmartIF<IIncidentSvc> inSvc(serviceLocator()->service("IncidentSvc"));
if ( ! inSvc.isValid() ) return StatusCode::FAILURE;
inSvc->addListener( this, IncidentType::BeginEvent );
return StatusCode::SUCCESS;
}

bool Google::AuditorBase::isSequencer | ( | INamedInterface * | i | ) | const
| inline private

Check if the component in question is a GaudiSequencer or a Sequencer.

Definition at line 92 of file GoogleAuditor.cpp.

{
return ( dynamic_cast<GaudiSequencer*>(i) != NULL ||
dynamic_cast<Sequencer*>(i) != NULL );
}

void Google::AuditorBase::startAudit | ( |  | ) |
| inline private

Start a full event audit.

Definition at line 68 of file GoogleAuditor.cpp.

{
m_log << MSG::INFO << " -> Starting full audit from event " << m_nEvts << " to "
<< m_nEvts+m_nSampleEvents << endmsg;
m_inFullAudit = true;
m_sampleEventCount = 1;
std::ostringstream t;
t << "FULL-Events" << m_nEvts << "To" << m_nEvts+m_nSampleEvents ;
google_before(t.str());
}

void Google::AuditorBase::stopAudit | ( |  | ) |
| inline private

stop a full event audit

Definition at line 80 of file GoogleAuditor.cpp.

{
m_log << MSG::INFO << " -> Stopping full audit" << endmsg;
std::ostringstream t;
t << "FULL-Events" << m_nEvts << "To" << m_nEvts+m_nSampleEvents ;
google_after(t.str());
m_inFullAudit = false;
m_sampleEventCount = 0;
}

## Member Data Documentation

bool Google::AuditorBase::m_audit
| private

Internal flag to say if auditing is enabled or not for the current event.

Definition at line 268 of file GoogleAuditor.cpp.

unsigned long long Google::AuditorBase::m_eventsToSkip
| private

Number of events to skip before auditing.

Definition at line 262 of file GoogleAuditor.cpp.

int Google::AuditorBase::m_freq
| private

The frequency to audit events. -1 means all events.

Definition at line 266 of file GoogleAuditor.cpp.

bool Google::AuditorBase::m_fullEventAudit
| private

Flag to indicate if full event auditing is enabled or not.

Definition at line 272 of file GoogleAuditor.cpp.

bool Google::AuditorBase::m_inFullAudit
| private

Internal flag to indicate if we are current in a full event audit.

Definition at line 278 of file GoogleAuditor.cpp.

std::vector<std::string> Google::AuditorBase::m_list
| private

Any component in this list will be audited. If empty, all will be done.

Definition at line 260 of file GoogleAuditor.cpp.

MsgStream Google::AuditorBase::m_log
| mutable protected

Messaging object.

Definition at line 254 of file GoogleAuditor.cpp.

unsigned long long Google::AuditorBase::m_nEvts
| private

Number of events processed.

Definition at line 270 of file GoogleAuditor.cpp.

unsigned long long Google::AuditorBase::m_nSampleEvents
| private

Number of events to include in a full event audit.

Definition at line 274 of file GoogleAuditor.cpp.

unsigned long long Google::AuditorBase::m_sampleEventCount
| private

Internal count of the number of events currently processed during an audit.

Definition at line 276 of file GoogleAuditor.cpp.

bool Google::AuditorBase::m_skipSequencers
| private

Boolean indicating if sequencers should be skipped or not.

Definition at line 264 of file GoogleAuditor.cpp.

std::string Google::AuditorBase::m_startedBy
| private

Name of the component we are currently auditing.

Definition at line 280 of file GoogleAuditor.cpp.

std::vector<std::string> Google::AuditorBase::m_veto
| private

Veto list. Any component in this list will not be audited.

Definition at line 259 of file GoogleAuditor.cpp.

std::vector<std::string> Google::AuditorBase::m_when
| private

When to audit the algorithms.

Definition at line 258 of file GoogleAuditor.cpp.

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

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiProfiling/src/component/google/GoogleAuditor.cpp