diff --git a/Framework/AnalysisSupport/src/DataInputDirector.cxx b/Framework/AnalysisSupport/src/DataInputDirector.cxx index cfb5ca34b062b..16fe2fde412c4 100644 --- a/Framework/AnalysisSupport/src/DataInputDirector.cxx +++ b/Framework/AnalysisSupport/src/DataInputDirector.cxx @@ -146,6 +146,7 @@ bool DataInputDescriptor::setFile(int counter) throw std::runtime_error(fmt::format("Couldn't open file \"{}\"!", filename)); } rootFS = std::dynamic_pointer_cast(mCurrentFilesystem); + printFileOpening(); // get the parent file map if exists mParentFileMap = (TMap*)rootFS->GetFile()->Get("parentFiles"); // folder name (DF_XXX) --> parent file (absolute path) @@ -297,6 +298,21 @@ int DataInputDescriptor::getReadTimeFramesInFile(int counter) return std::count(list.begin(), list.end(), true); } +void DataInputDescriptor::printFileOpening() +{ + auto rootFS = std::dynamic_pointer_cast(mCurrentFilesystem); + auto f = dynamic_cast(rootFS->GetFile()); + std::string monitoringInfo(fmt::format("lfn={},size={}", f->GetName(), f->GetSize())); +#if __has_include() + auto alienFile = dynamic_cast(f); + if (alienFile) { + monitoringInfo += fmt::format(",se={},open_time={:.1f}", alienFile->GetSE(), alienFile->GetElapsed()); + } +#endif + mMonitoring->send(o2::monitoring::Metric{monitoringInfo, "aod-file-open-info"}.addTag(o2::monitoring::tags::Key::Subsystem, o2::monitoring::tags::Value::DPL)); + LOGP(info, "Opening file: {}", monitoringInfo); +} + void DataInputDescriptor::printFileStatistics() { int64_t wait_time = (int64_t)uv_hrtime() - (int64_t)mCurrentFileStartedAt - (int64_t)mIOTime; diff --git a/Framework/AnalysisSupport/src/DataInputDirector.h b/Framework/AnalysisSupport/src/DataInputDirector.h index 9bab29db3ff24..94bdcf2c9368e 100644 --- a/Framework/AnalysisSupport/src/DataInputDirector.h +++ b/Framework/AnalysisSupport/src/DataInputDirector.h @@ -82,6 +82,7 @@ class DataInputDescriptor bool readTree(DataAllocator& outputs, header::DataHeader dh, int counter, int numTF, std::string treename, size_t& totalSizeCompressed, size_t& totalSizeUncompressed); + void printFileOpening(); void printFileStatistics(); void closeInputFile(); bool isAlienSupportOn() { return mAlienSupport; } diff --git a/Framework/AnalysisSupport/src/Plugin.cxx b/Framework/AnalysisSupport/src/Plugin.cxx index 033adc461c600..68c4c1cb00d09 100644 --- a/Framework/AnalysisSupport/src/Plugin.cxx +++ b/Framework/AnalysisSupport/src/Plugin.cxx @@ -76,6 +76,24 @@ struct RunSummary : o2::framework::ServicePlugin { LOGP(info, "{}", files[fi % files.size()].data); } } + for (size_t li = 0; li < metrics.metricLabels.size(); ++li) { + MetricLabel const&label = metrics.metricLabels[li]; + if (strcmp(label.label, "aod-file-open-info") != 0) { + continue; + } + MetricInfo const&metric = metrics.metrics[li]; + auto &files = metrics.stringMetrics[metric.storeIdx]; + if (metric.filledMetrics) { + LOGP(info, "### Files opened stats ###"); + } + std::string lastFileRead; + for (size_t fi = 0; fi < metric.filledMetrics; ++fi) { + lastFileRead = files[fi % files.size()].data; + } + if (lastFileRead.empty() == false) { + LOGP(info, "Last file opened: {}", lastFileRead); + } + } } }, .kind = ServiceKind::Serial}; }