From 2ee3b6095dafa64670ed6a7da055874d74080492 Mon Sep 17 00:00:00 2001 From: Aleksandra Poreba <aleksandra.poreba@cern.ch> Date: Thu, 26 Nov 2020 09:34:56 +0000 Subject: [PATCH] Monitor ROS requests per algorithm in TrigCostAnalysis --- .../TrigCostAnalysis/src/CostData.cxx | 4 ++ .../TrigCost/TrigCostAnalysis/src/CostData.h | 5 +++ .../src/counters/CounterAlgorithm.cxx | 37 +++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/Trigger/TrigCost/TrigCostAnalysis/src/CostData.cxx b/Trigger/TrigCost/TrigCostAnalysis/src/CostData.cxx index d3cd438bb136..cc43b20711d7 100644 --- a/Trigger/TrigCost/TrigCostAnalysis/src/CostData.cxx +++ b/Trigger/TrigCost/TrigCostAnalysis/src/CostData.cxx @@ -88,6 +88,10 @@ const std::map<std::string, std::vector<uint32_t>>& CostData::rosToRobMap() cons return *m_rosToRob; } +const std::map<size_t, std::vector<size_t>>& CostData::algToRequestMap() const { + return m_algToRos; +} + float CostData::algTotalTimeMilliSec() const { return m_algTotalTime * 1e-3; // microseconds to milliseconds } diff --git a/Trigger/TrigCost/TrigCostAnalysis/src/CostData.h b/Trigger/TrigCost/TrigCostAnalysis/src/CostData.h index ef33493962ee..dd54a8fbc8f4 100644 --- a/Trigger/TrigCost/TrigCostAnalysis/src/CostData.h +++ b/Trigger/TrigCost/TrigCostAnalysis/src/CostData.h @@ -66,6 +66,11 @@ class CostData { */ void setRosToRobMap(const std::map<std::string, std::vector<uint32_t>>& rosToRobMap); + /** + * @brief Getter of map between algorithm (index in costCollection) and ROS requests (indicies in rosCollection) + */ + const std::map<size_t, std::vector<size_t>>& algToRequestMap() const; + /** * @brief Setter of effective P1 walltime represented by the current event. */ diff --git a/Trigger/TrigCost/TrigCostAnalysis/src/counters/CounterAlgorithm.cxx b/Trigger/TrigCost/TrigCostAnalysis/src/counters/CounterAlgorithm.cxx index 9d942f27d495..23daafff343c 100644 --- a/Trigger/TrigCost/TrigCostAnalysis/src/counters/CounterAlgorithm.cxx +++ b/Trigger/TrigCost/TrigCostAnalysis/src/counters/CounterAlgorithm.cxx @@ -3,6 +3,7 @@ */ #include "xAODTrigger/TrigCompositeContainer.h" +#include "TrigDataAccessMonitoring/ROBDataMonitor.h" #include "CounterAlgorithm.h" @@ -16,6 +17,11 @@ CounterAlgorithm::CounterAlgorithm(const std::string& name, const MonitorBase* p regHistogram("AlgCalls_perEvent", "Calls/Event;Calls;Events", VariableType::kPerEvent, kLinear, -0.5, 49.5); regHistogram("InEventView_perCall", "In Event View;Yes or No;Calls", VariableType::kPerCall, kLinear, -0.5, 1.5, 2); regHistogram("RoIID_perCall", "RoI ID;RoI ID;Calls", VariableType::kPerCall, kLinear, -1.5, 20.5, 22); + regHistogram("Request_perEvent", "Number of requests/Event;Number of requests;Events", VariableType::kPerEvent, LogType::kLinear, -0.5, 10.5, 11); + regHistogram("NetworkRequest_perEvent", "Number of network requests/Event;Number of requests;Events", VariableType::kPerEvent, LogType::kLinear, -0.5, 10.5, 11); + regHistogram("CachedROBSize_perEvent", "Total ROB Size/Event;ROB size;Events", VariableType::kPerEvent, LogType::kLinear, 0, 1024, 50); + regHistogram("NetworkROBSize_perEvent", "Total ROB Size/Event;ROB size;Events", VariableType::kPerEvent, LogType::kLinear, 0, 1024, 50); + regHistogram("RequestTime_perEvent", "ROB Elapsed Time/Event;Elapsed Time [ms];Events", VariableType::kPerEvent); } @@ -45,5 +51,36 @@ StatusCode CounterAlgorithm::newEvent(const CostData& data, size_t index, const ATH_CHECK( fill("RoIID_perCall", alg->getDetail<int32_t>("roi"), weight) ); + // Monitor data requests per algorithm + if (data.algToRequestMap().count(index)) { + for (size_t requestIdx : data.algToRequestMap().at(index)) { + const xAOD::TrigComposite* request = data.rosCollection().at(requestIdx); + const std::vector<unsigned> robs_history = request->getDetail<std::vector<unsigned>>("robs_history"); + const std::vector<uint32_t> robs_size = request->getDetail<std::vector<uint32_t>>("robs_size"); + + bool networkRequestIncremented = false; + for (size_t i = 0; i < robs_size.size(); ++i) { + // ROB request was fetched over the network + if (robs_history[i] == robmonitor::RETRIEVED) { + ATH_CHECK( fill("NetworkROBSize_perEvent", robs_size[i], weight) ); + networkRequestIncremented = true; + } + // ROB request was cached + else if (robs_history[i] == robmonitor::HLT_CACHED || robs_history[i] == robmonitor::DCM_CACHED) { + ATH_CHECK( fill("CachedROBSize_perEvent", robs_size[i], weight) ); + } + } + + ATH_CHECK( increment("Request_perEvent", weight) ); + + if (networkRequestIncremented) { + ATH_CHECK( increment("NetworkRequest_perEvent", weight) ); + } + + const float rosTime = timeToMilliSec(request->getDetail<uint64_t>("start"), request->getDetail<uint64_t>("stop")); + ATH_CHECK( fill("Time_perEvent", rosTime, weight) ); + } + } + return StatusCode::SUCCESS; } -- GitLab