CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
edm::service::ResourceEnforcer Class Reference

Public Member Functions

void check ()
 
void postEventProcessing (Event const &e, EventSetup const &)
 
 ResourceEnforcer (edm::ParameterSet const &iConfig, ActivityRegistry &iAR)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Attributes

ProcInfoFetcher m_fetcher
 
double m_maxRSS
 
double m_maxTime
 
double m_maxVSize
 
CPUTimer m_timer
 

Detailed Description

Definition at line 30 of file ResourceEnforcer.cc.

Constructor & Destructor Documentation

ResourceEnforcer::ResourceEnforcer ( edm::ParameterSet const &  iConfig,
ActivityRegistry iAR 
)

Definition at line 63 of file ResourceEnforcer.cc.

References m_timer, postEventProcessing(), edm::CPUTimer::start(), and edm::ActivityRegistry::watchPostProcessEvent().

63  :
64 m_maxVSize(iConfig.getUntrackedParameter<double>("maxVSize",0)*1000.), //convert to MB
65 m_maxRSS(iConfig.getUntrackedParameter<double>("maxRSS",0)*1000.),
66 m_maxTime(iConfig.getUntrackedParameter<double>("maxTime",0)*60.*60.) //convert from hours to seconds
67 
68 {
69  iReg.watchPostProcessEvent(this, &ResourceEnforcer::postEventProcessing);
70  m_timer.start();
71 
72 }
void start()
Definition: CPUTimer.cc:74
void postEventProcessing(Event const &e, EventSetup const &)

Member Function Documentation

void ResourceEnforcer::check ( void  )

Definition at line 89 of file ResourceEnforcer.cc.

References edm::errors::ExceededResourceRSS, edm::errors::ExceededResourceTime, edm::errors::ExceededResourceVSize, edm::hlt::Exception, edm::service::ProcInfoFetcher::fetch(), m_fetcher, m_maxRSS, m_maxTime, m_maxVSize, m_timer, pi, edm::CPUTimer::realTime(), edm::service::ProcInfo::rss, and edm::service::ProcInfo::vsize.

Referenced by postEventProcessing().

90 {
92 
93  if(0!=m_maxVSize && m_maxVSize< pi.vsize) {
94  throw edm::Exception(errors::ExceededResourceVSize)<<"Exceeded maximum allowed VSize of "<<m_maxVSize/1000.<<" GB (VSize is "<<pi.vsize/1000.<<")";
95  }
96 
97  if(0!=m_maxRSS && m_maxRSS< pi.rss) {
98  throw edm::Exception(errors::ExceededResourceRSS)<<"Exceeded maximum allowed RSS of "<<m_maxRSS/1000.<<" GB (VSize is "<<pi.rss/1000.<<")";
99  }
100 
101  if(0!=m_maxTime && m_maxTime < m_timer.realTime()) {
102  throw edm::Exception(errors::ExceededResourceTime)<<"Exceeded maximum allowed time of "<<m_maxTime/60./60.<<" hours";
103  }
104 }
const Double_t pi
double realTime() const
Definition: CPUTimer.cc:149
void ResourceEnforcer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 111 of file ResourceEnforcer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addUntracked(), and edm::ParameterDescriptionNode::setComment().

111  {
113  desc.addUntracked<double>("maxVSize", 0.)->setComment("Maximum allowed VSize for the job in GB. Ignored if set to 0.");
114  desc.addUntracked<double>("maxRSS", 0.)->setComment("Maximum allowd RSS for the job in GB. Ignored if set to 0.");
115  desc.addUntracked<double>("maxTime", 0.)->setComment("Maximum allowd wallclock time for the job in hours. Ignored if set to 0.");
116  descriptions.add("ResourceEnforcer", desc);
117 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void ResourceEnforcer::postEventProcessing ( Event const &  e,
EventSetup const &   
)

Definition at line 83 of file ResourceEnforcer.cc.

References check().

Referenced by ResourceEnforcer().

83  {
84  this->check();
85 }

Member Data Documentation

ProcInfoFetcher edm::service::ResourceEnforcer::m_fetcher
private

Definition at line 41 of file ResourceEnforcer.cc.

Referenced by check().

double edm::service::ResourceEnforcer::m_maxRSS
private

Definition at line 45 of file ResourceEnforcer.cc.

Referenced by check().

double edm::service::ResourceEnforcer::m_maxTime
private

Definition at line 46 of file ResourceEnforcer.cc.

Referenced by check().

double edm::service::ResourceEnforcer::m_maxVSize
private

Definition at line 44 of file ResourceEnforcer.cc.

Referenced by check().

CPUTimer edm::service::ResourceEnforcer::m_timer
private

Definition at line 42 of file ResourceEnforcer.cc.

Referenced by check(), and ResourceEnforcer().