CMS 3D CMS Logo

CondorStatusUpdater.cc
Go to the documentation of this file.
1 
17 
18 #include <fcntl.h>
19 #include <unistd.h>
20 #include <sys/wait.h>
21 #include <spawn.h>
22 #include <iostream>
23 #include <fstream>
24 #include <sstream>
25 #include <cmath>
26 #include <chrono>
27 #include <sstream>
28 #include <atomic>
29 #include <string>
30 #include <set>
31 
32 namespace edm {
33 
34  namespace service {
35 
37  public:
40  CondorStatusService(const CondorStatusService &) = delete;
42 
43  static void fillDescriptions(ConfigurationDescriptions &descriptions);
44 
45  private:
46  bool isChirpSupported();
47  template <typename T>
48  bool updateChirp(const std::string &key_suffix, const T &value);
49  bool updateChirpQuoted(const std::string &key_suffix, const std::string &value);
50  bool updateChirpImpl(std::string const &key, std::string const &value);
51  inline void update();
52  void firstUpdate();
53  void lastUpdate();
54  void updateImpl(time_t secsSinceLastUpdate);
55 
56  void preSourceConstruction(ModuleDescription const &md, int maxEvents, int maxLumis, int maxSecondsUntilRampdown);
57  void eventPost(StreamContext const &iContext);
58  void lumiPost(GlobalContext const &);
59  void runPost(GlobalContext const &);
60  void beginPre(PathsAndConsumesOfModulesBase const &, ProcessContext const &processContext);
61  void beginPost();
62  void endPost();
63  void filePost(std::string const &, bool);
64 
65  bool m_debug;
66  std::atomic_flag m_shouldUpdate;
67  time_t m_beginJob = 0;
70  float m_rate = 0;
71  static constexpr float m_defaultEmaInterval = 15 * 60; // Time in seconds to average EMA over for event rate.
72  static constexpr unsigned int m_defaultUpdateInterval = 3 * 60;
73  std::atomic<time_t> m_lastUpdate;
74  std::atomic<std::uint_least64_t> m_events;
75  std::atomic<std::uint_least64_t> m_lumis;
76  std::atomic<std::uint_least64_t> m_runs;
77  std::atomic<std::uint_least64_t> m_files;
80 
81  std::uint_least64_t m_lastEventCount = 0;
82  };
83 
84  } // namespace service
85 
86 } // namespace edm
87 
88 using namespace edm::service;
89 
92 
94  : m_debug(false), m_lastUpdate(0), m_events(0), m_lumis(0), m_runs(0), m_files(0) {
95  m_shouldUpdate.clear();
96  if (pset.exists("debug")) {
97  m_debug = true;
98  }
99  if (!isChirpSupported()) {
100  return;
101  }
102 
103  firstUpdate();
104 
112 
113  if (pset.exists("updateIntervalSeconds")) {
114  m_updateInterval = pset.getUntrackedParameter<unsigned int>("updateIntervalSeconds");
115  }
116  if (pset.exists("EMAInterval")) {
117  m_emaInterval = pset.getUntrackedParameter<double>("EMAInterval");
118  }
119  if (pset.exists("tag")) {
120  m_tag = pset.getUntrackedParameter<std::string>("tag");
121  }
122 }
123 
125  m_events++;
126  update();
127 }
128 
130  m_lumis++;
131  update();
132 }
133 
135  m_runs++;
136  update();
137 }
138 
139 void CondorStatusService::filePost(std::string const & /*lfn*/, bool /*usedFallback*/) {
140  m_files++;
141  update();
142 }
143 
146  m_processParameterSetID = processContext.parameterSetID();
147  }
148 }
149 
151  ParameterSet const &processParameterSet = edm::getParameterSet(m_processParameterSetID);
152  const edm::ParameterSet &pset = processParameterSet.getParameterSet("@main_input");
153  // PSet info from edm::ScheduleItems
154  int maxEvents =
155  processParameterSet.getUntrackedParameterSet("maxEvents", ParameterSet()).getUntrackedParameter<int>("input", -1);
156  int maxLumis = processParameterSet.getUntrackedParameterSet("maxLuminosityBlocks", ParameterSet())
157  .getUntrackedParameter<int>("input", -1);
158 
159  // lumisToProcess from EventSkipperByID (PoolSource and similar)
160  std::vector<edm::LuminosityBlockRange> toProcess = pset.getUntrackedParameter<std::vector<LuminosityBlockRange>>(
161  "lumisToProcess", std::vector<LuminosityBlockRange>());
162  edm::sortAndRemoveOverlaps(toProcess);
163  uint64_t lumiCount = 0;
164  for (auto const &range : toProcess) {
165  if (range.startRun() != range.endRun()) {
166  break;
167  }
169  break;
170  }
171  lumiCount += (range.endLumi() - range.startLumi());
172  }
173  // Handle sources deriving from ProducerSourceBase
174  unsigned int eventsPerLumi = pset.getUntrackedParameter<unsigned int>("numberEventsInLuminosityBlock", 0);
175  if ((lumiCount == 0) && (maxEvents > 0) && (eventsPerLumi > 0)) {
176  lumiCount = static_cast<unsigned int>(std::ceil(static_cast<float>(maxEvents) / static_cast<float>(eventsPerLumi)));
177  }
178 
179  std::vector<std::string> fileNames =
180  pset.getUntrackedParameter<std::vector<std::string>>("fileNames", std::vector<std::string>());
181  std::stringstream ss_max_files;
182  ss_max_files << fileNames.size();
183  updateChirp("MaxFiles", ss_max_files.str());
184 
185  if (lumiCount > 0) {
186  if (maxLumis < 0) {
187  maxLumis = lumiCount;
188  }
189  if (maxLumis > static_cast<int>(lumiCount)) {
190  maxLumis = lumiCount;
191  }
192  }
193  if (maxEvents > 0) {
194  std::stringstream ss_max_events;
195  ss_max_events << maxEvents;
196  updateChirp("MaxEvents", ss_max_events.str());
197  }
198  if (maxLumis > 0) {
199  std::stringstream ss_max_lumis;
200  ss_max_lumis << maxLumis;
201  updateChirp("MaxLumis", ss_max_lumis.str());
202  }
203 
204  m_beginJob = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
205  update();
206 }
207 
209 
211  if (m_debug) {
212  return true;
213  }
214 
215  return std::getenv("_CONDOR_CHIRP_CONFIG") && updateChirp("Elapsed", "0");
216 }
217 
219  // Note we always update all our statistics to 0 / false / -1
220  // This allows us to overwrite the activities of a previous cmsRun process
221  // within this HTCondor job.
222  updateImpl(0);
223  updateChirp("MaxFiles", "-1");
224  updateChirp("MaxEvents", "-1");
225  updateChirp("MaxLumis", "-1");
226  updateChirp("Done", "false");
227 
230  double avgSpeed;
231  if (cpusvc.isAvailable() && cpusvc->cpuInfo(models, avgSpeed)) {
232  updateChirpQuoted("CPUModels", models);
233  updateChirp("CPUSpeed", avgSpeed);
234  }
235 }
236 
238  time_t now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
240  updateChirp("Done", "true");
242  if (!cpusvc.isAvailable()) {
243  std::cout << "At post, CPU service is NOT available.\n";
244  }
245 }
246 
248  time_t now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
249  if ((now - m_lastUpdate.load(std::memory_order_relaxed)) > m_updateInterval) {
250  if (!m_shouldUpdate.test_and_set(std::memory_order_acquire)) {
251  // Caught exception is rethrown
252  CMS_SA_ALLOW try {
253  time_t sinceLastUpdate = now - m_lastUpdate;
254  m_lastUpdate = now;
255  updateImpl(sinceLastUpdate);
256  m_shouldUpdate.clear(std::memory_order_release);
257  } catch (...) {
258  m_shouldUpdate.clear(std::memory_order_release);
259  throw;
260  }
261  }
262  }
263 }
264 
265 void CondorStatusService::updateImpl(time_t sinceLastUpdate) {
266  time_t now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
267  time_t jobTime = now - m_beginJob;
268 
270  if (timingsvc.isAvailable()) {
271  updateChirp("TotalCPU", timingsvc->getTotalCPU());
272  }
273 
274  updateChirp("LastUpdate", now);
275 
276  if (!m_events || (m_events > m_lastEventCount)) {
277  updateChirp("Events", m_events);
278  }
279 
280  updateChirp("Lumis", m_lumis);
281 
282  updateChirp("Runs", m_runs);
283 
284  updateChirp("Files", m_files);
285 
286  float ema_coeff = 1 - std::exp(-static_cast<float>(sinceLastUpdate) /
287  std::max(std::min(m_emaInterval, static_cast<float>(jobTime)), 1.0f));
288  if (sinceLastUpdate > 0) {
289  updateChirp("Elapsed", jobTime);
290  m_rate = ema_coeff * static_cast<float>(m_events - m_lastEventCount) / static_cast<float>(sinceLastUpdate) +
291  (1.0 - ema_coeff) * m_rate;
293  updateChirp("EventRate", m_rate);
294  }
295 
296  // If Xrootd was used, pull the statistics from there.
298  if (xrdsvc.isAvailable()) {
299  for (auto const &iter : xrdsvc->condorUpdate()) {
300  std::string site = iter.first;
301  site.erase(std::remove_if(site.begin(), site.end(), [](char x) { return !isalnum(x) && (x != '_'); }),
302  site.end());
303  auto &iostats = iter.second;
304  updateChirp("IOSite_" + site + "_ReadBytes", iostats.bytesRead);
305  updateChirp("IOSite_" + site + "_ReadTimeMS",
306  std::chrono::duration_cast<std::chrono::milliseconds>(iostats.transferTime).count());
307  }
308  }
309 
310  // Update storage account information
311  auto const &stats = StorageAccount::summary();
312  uint64_t readOps = 0;
313  uint64_t readVOps = 0;
314  uint64_t readSegs = 0;
315  uint64_t readBytes = 0;
316  uint64_t readTimeTotal = 0;
317  uint64_t writeBytes = 0;
318  uint64_t writeTimeTotal = 0;
319  const auto token = StorageAccount::tokenForStorageClassName("tstoragefile");
320  for (const auto &storage : stats) {
321  // StorageAccount records statistics for both the TFile layer and the
322  // StorageFactory layer. However, the StorageFactory statistics tend to
323  // be more accurate as various backends may alter the incoming read requests
324  // (such as when lazy-download is used).
325  if (storage.first == token.value()) {
326  continue;
327  }
328  for (const auto &counter : storage.second) {
329  if (counter.first == static_cast<int>(StorageAccount::Operation::read)) {
330  readOps += counter.second.successes;
331  readSegs++;
332  readBytes += counter.second.amount;
333  readTimeTotal += counter.second.timeTotal;
334  } else if (counter.first == static_cast<int>(StorageAccount::Operation::readv)) {
335  readVOps += counter.second.successes;
336  readSegs += counter.second.vector_count;
337  readBytes += counter.second.amount;
338  readTimeTotal += counter.second.timeTotal;
339  } else if ((counter.first == static_cast<int>(StorageAccount::Operation::write)) ||
340  (counter.first == static_cast<int>(StorageAccount::Operation::writev))) {
341  writeBytes += counter.second.amount;
342  writeTimeTotal += counter.second.timeTotal;
343  }
344  }
345  }
346  updateChirp("ReadOps", readOps);
347  updateChirp("ReadVOps", readVOps);
348  updateChirp("ReadSegments", readSegs);
349  updateChirp("ReadBytes", readBytes);
350  updateChirp("ReadTimeMsecs", readTimeTotal / (1000 * 1000));
351  updateChirp("WriteBytes", writeBytes);
352  updateChirp("WriteTimeMsecs", writeTimeTotal / (1000 * 1000));
353 }
354 
355 template <typename T>
356 bool CondorStatusService::updateChirp(const std::string &key_suffix, const T &value) {
357  std::stringstream ss;
358  ss << value;
359  return updateChirpImpl(key_suffix, ss.str());
360 }
361 
363  std::string value_copy = value;
364  // Remove double-quotes or the \ character (as it has special escaping semantics in ClassAds).
365  // Make sure we have ASCII characters.
366  // Otherwise, remainder is allowed (including tabs, newlines, single-quotes).
367  value_copy.erase(
368  remove_if(
369  value_copy.begin(), value_copy.end(), [](const char &c) { return !isascii(c) || (c == '"') || (c == '\\'); }),
370  value_copy.end());
371  return updateChirpImpl(key_suffix, "\"" + value_copy + "\"");
372 }
373 
375  std::stringstream ss;
376  ss << "ChirpCMSSW" << m_tag << key_suffix;
377  std::string key = ss.str();
378  if (m_debug) {
379  std::cout << "condor_chirp set_job_attr_delayed " << key << " " << value << std::endl;
380  }
381  int pid = 0;
382  posix_spawn_file_actions_t file_actions;
383  int devnull_fd = open("/dev/null", O_RDWR);
384  if (devnull_fd == -1) {
385  return false;
386  }
387  posix_spawn_file_actions_init(&file_actions);
388  posix_spawn_file_actions_adddup2(&file_actions, devnull_fd, 1);
389  posix_spawn_file_actions_adddup2(&file_actions, devnull_fd, 2);
390  const std::string chirp_name = "condor_chirp";
391  const std::string set_job_attr = "set_job_attr_delayed";
392  std::vector<const char *> argv;
393  argv.push_back(chirp_name.c_str());
394  argv.push_back(set_job_attr.c_str());
395  argv.push_back(key.c_str());
396  argv.push_back(value.c_str());
397  argv.push_back(nullptr);
398  int status = posix_spawnp(&pid, "condor_chirp", &file_actions, nullptr, const_cast<char *const *>(&argv[0]), environ);
399  close(devnull_fd);
400  posix_spawn_file_actions_destroy(&file_actions);
401  if (status) {
402  return false;
403  }
404  while ((waitpid(pid, &status, 0) == -1) && errno == -EINTR) {
405  }
406  return status == 0;
407 }
408 
411  desc.setComment("Service to update HTCondor with the current CMSSW status.");
412  desc.addOptionalUntracked<unsigned int>("updateIntervalSeconds", m_defaultUpdateInterval)
413  ->setComment("Interval, in seconds, for HTCondor updates");
414  desc.addOptionalUntracked<bool>("debug", false)->setComment("Enable debugging of this service");
415  desc.addOptionalUntracked<double>("EMAInterval", m_defaultEmaInterval)
416  ->setComment("Interval, in seconds, to calculate event rate over (using EMA)");
417  desc.addOptionalUntracked<std::string>("tag")->setComment(
418  "Identifier tag for this process (a value of 'Foo' results in ClassAd attributes of the form 'ChirpCMSSWFoo*')");
419  descriptions.add("CondorStatusService", desc);
420 }
421 
ConfigurationDescriptions.h
edm::service::CondorStatusService::fillDescriptions
static void fillDescriptions(ConfigurationDescriptions &descriptions)
Definition: CondorStatusUpdater.cc:409
edm::service::CondorStatusService
Definition: CondorStatusUpdater.cc:36
counter
Definition: counter.py:1
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
service
Definition: service.py:1
cmsBatch.argv
argv
Definition: cmsBatch.py:279
models
Definition: models.py:1
edm::service::CondorStatusService::m_beginJob
time_t m_beginJob
Definition: CondorStatusUpdater.cc:67
XrdStatistics.h
funct::false
false
Definition: Factorize.h:34
edm::service::CondorStatusService::m_shouldUpdate
std::atomic_flag m_shouldUpdate
Definition: CondorStatusUpdater.cc:66
edm::ActivityRegistry::watchPostGlobalEndRun
void watchPostGlobalEndRun(PostGlobalEndRun::slot_type const &iSlot)
Definition: ActivityRegistry.h:290
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
edm::ParameterSet::getUntrackedParameterSet
ParameterSet getUntrackedParameterSet(std::string const &name, ParameterSet const &defaultValue) const
Definition: ParameterSet.cc:2129
mps_update.status
status
Definition: mps_update.py:69
min
T min(T a, T b)
Definition: MathUtil.h:58
edm::service::CondorStatusService::updateImpl
void updateImpl(time_t secsSinceLastUpdate)
Definition: CondorStatusUpdater.cc:265
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::ProcessContext
Definition: ProcessContext.h:27
gather_cfg.cout
cout
Definition: gather_cfg.py:144
edm::ActivityRegistry::watchPostGlobalEndLumi
void watchPostGlobalEndLumi(PostGlobalEndLumi::slot_type const &iSlot)
Definition: ActivityRegistry.h:352
edm::service::CondorStatusService::updateChirp
bool updateChirp(const std::string &key_suffix, const T &value)
Definition: CondorStatusUpdater.cc:356
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
edm::service::CondorStatusService::updateChirpImpl
bool updateChirpImpl(std::string const &key, std::string const &value)
Definition: CondorStatusUpdater.cc:374
edm::sortAndRemoveOverlaps
std::vector< EventRange > & sortAndRemoveOverlaps(std::vector< EventRange > &eventRange)
Definition: EventRange.cc:98
edm::service::CondorStatusService::endPost
void endPost()
Definition: CondorStatusUpdater.cc:208
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
edm::service::CondorStatusService::m_runs
std::atomic< std::uint_least64_t > m_runs
Definition: CondorStatusUpdater.cc:76
edm::service::CondorStatusService::m_lastEventCount
std::uint_least64_t m_lastEventCount
Definition: CondorStatusUpdater.cc:81
edm::service::CondorStatusService::eventPost
void eventPost(StreamContext const &iContext)
Definition: CondorStatusUpdater.cc:124
edm::CPUServiceBase::cpuInfo
virtual bool cpuInfo(std::string &models, double &avgSpeed)=0
CPU information - the models present and average speed.
edm::service::CondorStatusService::isChirpSupported
bool isChirpSupported()
Definition: CondorStatusUpdater.cc:210
edm::service::CondorStatusService::m_lumis
std::atomic< std::uint_least64_t > m_lumis
Definition: CondorStatusUpdater.cc:75
edm::service::CondorStatusService::m_rate
float m_rate
Definition: CondorStatusUpdater.cc:70
edm::Service::isAvailable
bool isAvailable() const
Definition: Service.h:40
CMS_SA_ALLOW
#define CMS_SA_ALLOW
Definition: thread_safety_macros.h:5
edm::service::CondorStatusService::m_debug
bool m_debug
Definition: CondorStatusUpdater.cc:65
edm::ParameterSetDescription::addOptionalUntracked
ParameterDescriptionBase * addOptionalUntracked(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:110
edm::ModuleDescription
Definition: ModuleDescription.h:21
StorageAccount::Operation::readv
ModuleDescription.h
ActivityRegistry.h
edm::service::CondorStatusService::m_defaultEmaInterval
static constexpr float m_defaultEmaInterval
Definition: CondorStatusUpdater.cc:71
edm::service::CondorStatusService::m_events
std::atomic< std::uint_least64_t > m_events
Definition: CondorStatusUpdater.cc:74
edm::ActivityRegistry::watchPostCloseFile
void watchPostCloseFile(PostCloseFile::slot_type const &iSlot)
Definition: ActivityRegistry.h:239
contentValuesCheck.ss
ss
Definition: contentValuesCheck.py:33
fileCollector.now
now
Definition: fileCollector.py:207
edm::TimingServiceBase::getTotalCPU
virtual double getTotalCPU() const =0
edm::service::CondorStatusService::m_updateInterval
time_t m_updateInterval
Definition: CondorStatusUpdater.cc:68
edm::Hash::isValid
bool isValid() const
Definition: Hash.h:141
edm::ActivityRegistry::watchPostEndJob
void watchPostEndJob(PostEndJob::slot_type const &iSlot)
Definition: ActivityRegistry.h:168
reco::ceil
constexpr int32_t ceil(float num)
Definition: constexpr_cmath.h:7
edm::service::CondorStatusService::beginPost
void beginPost()
Definition: CondorStatusUpdater.cc:150
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
edm::StreamContext
Definition: StreamContext.h:31
edm::ActivityRegistry::watchPreBeginJob
void watchPreBeginJob(PreBeginJob::slot_type const &iSlot)
convenience function for attaching to signal
Definition: ActivityRegistry.h:149
edm::serviceregistry::AllArgsMaker
Definition: ServiceMaker.h:47
Service.h
edm::ActivityRegistry
Definition: ActivityRegistry.h:132
DEFINE_FWK_SERVICE_MAKER
#define DEFINE_FWK_SERVICE_MAKER(concrete, maker)
Definition: ServiceMaker.h:109
StorageAccount.h
edm::service::CondorStatusService::m_lastUpdate
std::atomic< time_t > m_lastUpdate
Definition: CondorStatusUpdater.cc:73
edm::Hash< ParameterSetType >
edm::ActivityRegistry::watchPostBeginJob
void watchPostBeginJob(PostBeginJob::slot_type const &iSlot)
convenience function for attaching to signal
Definition: ActivityRegistry.h:156
edm::service::CondorStatusService::operator=
CondorStatusService & operator=(const CondorStatusService &)=delete
edm::ProcessContext::parameterSetID
ParameterSetID const & parameterSetID() const
Definition: ProcessContext.h:32
ParameterSetDescription.h
ServiceMaker.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::service::CondorStatusService::m_tag
std::string m_tag
Definition: CondorStatusUpdater.cc:78
edm::GlobalContext
Definition: GlobalContext.h:29
edm::ActivityRegistry::watchPostEvent
void watchPostEvent(PostEvent::slot_type const &iSlot)
Definition: ActivityRegistry.h:406
edm::ParameterSet
Definition: ParameterSet.h:36
edm::ParameterSetDescription::setComment
void setComment(std::string const &value)
Definition: ParameterSetDescription.cc:33
edm::service::CondorStatusService::preSourceConstruction
void preSourceConstruction(ModuleDescription const &md, int maxEvents, int maxLumis, int maxSecondsUntilRampdown)
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
edm::service::CondorStatusService::filePost
void filePost(std::string const &, bool)
Definition: CondorStatusUpdater.cc:139
thread_safety_macros.h
edm::Service
Definition: Service.h:30
edm::service::CondorStatusService::runPost
void runPost(GlobalContext const &)
Definition: CondorStatusUpdater.cc:134
value
Definition: value.py:1
StorageAccount::tokenForStorageClassName
static StorageClassToken tokenForStorageClassName(std::string const &iName)
Definition: StorageAccount.cc:38
edm::service::CondorStatusService::m_processParameterSetID
edm::ParameterSetID m_processParameterSetID
Definition: CondorStatusUpdater.cc:79
StorageAccount::summary
static const StorageStats & summary(void)
Definition: StorageAccount.cc:95
dqmMemoryStats.stats
stats
Definition: dqmMemoryStats.py:134
edm::service
Definition: TFileService.h:95
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
edm::service::CondorStatusService::firstUpdate
void firstUpdate()
Definition: CondorStatusUpdater.cc:218
edm::service::CondorStatusService::update
void update()
Definition: CondorStatusUpdater.cc:247
StorageAccount::Operation::write
Registry.h
edm::service::CondorStatusService::m_files
std::atomic< std::uint_least64_t > m_files
Definition: CondorStatusUpdater.cc:77
StorageAccount::Operation::read
edm::getParameterSet
ParameterSet const & getParameterSet(ParameterSetID const &id)
Definition: ParameterSet.cc:855
XrdAdaptor::XrdStatisticsService::condorUpdate
std::vector< std::pair< std::string, CondorIOStats > > condorUpdate()
Definition: XrdStatistics.cc:44
TimingServiceBase.h
edm::service::CondorStatusService::beginPre
void beginPre(PathsAndConsumesOfModulesBase const &, ProcessContext const &processContext)
Definition: CondorStatusUpdater.cc:144
edm::PathsAndConsumesOfModulesBase
Definition: PathsAndConsumesOfModulesBase.h:34
T
long double T
Definition: Basic3DVectorLD.h:48
relativeConstraints.value
value
Definition: relativeConstraints.py:53
edm::service::CondorStatusService::~CondorStatusService
~CondorStatusService()
Definition: CondorStatusUpdater.cc:39
Data_TkAlMinBias_Run2018C_PromptReco_v3_cff.maxEvents
maxEvents
Definition: Data_TkAlMinBias_Run2018C_PromptReco_v3_cff.py:3
edm::service::CondorStatusService::lastUpdate
void lastUpdate()
Definition: CondorStatusUpdater.cc:237
edm::service::CondorStatusService::m_emaInterval
float m_emaInterval
Definition: CondorStatusUpdater.cc:69
edm::service::CondorStatusService::updateChirpQuoted
bool updateChirpQuoted(const std::string &key_suffix, const std::string &value)
Definition: CondorStatusUpdater.cc:362
LaserTracksInput_cfi.fileNames
fileNames
Definition: LaserTracksInput_cfi.py:8
cond::uint64_t
unsigned long long uint64_t
Definition: Time.h:13
ParameterSetID.h
ParameterSet.h
CPUServiceBase.h
JetChargeProducer_cfi.exp
exp
Definition: JetChargeProducer_cfi.py:6
edm::service::CondorStatusService::m_defaultUpdateInterval
static constexpr unsigned int m_defaultUpdateInterval
Definition: CondorStatusUpdater.cc:72
edm::service::CondorStatusService::CondorStatusService
CondorStatusService(ParameterSet const &pset, edm::ActivityRegistry &ar)
Definition: CondorStatusUpdater.cc:93
ProcessContext.h
edm::service::CondorStatusService::lumiPost
void lumiPost(GlobalContext const &)
Definition: CondorStatusUpdater.cc:129
crabWrapper.key
key
Definition: crabWrapper.py:19
StorageAccount::Operation::writev
edm::ParameterSet::getParameterSet
ParameterSet const & getParameterSet(std::string const &) const
Definition: ParameterSet.cc:2121
CondorStatusServiceMaker
edm::serviceregistry::AllArgsMaker< edm::service::CondorStatusService > CondorStatusServiceMaker
Definition: CondorStatusUpdater.cc:422
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
edm::LuminosityBlockID::maxLuminosityBlockNumber
static LuminosityBlockNumber_t maxLuminosityBlockNumber()
Definition: LuminosityBlockID.h:84
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:316