IceLoggingStrategy.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*
4  * This file is part of ArmarX.
5  *
6  * Copyright (C) 2011-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
7  *
8  * ArmarX is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as
10  * published by the Free Software Foundation.
11  *
12  * ArmarX is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  * @package ArmarXCore::core::services::profiler
21  * @author Manfred Kroehnert ( manfred dot kroehnert at dot kit dot edu )
22  * @date 2015
23  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
24  * GNU General Public License
25  */
26 
27 
28 #include <stdint.h> // for uint64_t
29 
30 #include <mutex>
31 #include <string> // for string, operator<<
32 #include <vector> // for vector
33 
34 #include <sys/types.h> // for pid_t, u_int64_t
35 
36 #include "ArmarXCore/interface/statechart/StatechartIce.h"
37 #include <ArmarXCore/interface/core/Profiler.h>
38 
39 #include "../../services/tasks/PeriodicTask.h" // for PeriodicTask, etc
40 #include "LoggingStrategy.h" // for LoggingStrategy
41 
42 namespace armarx::Profiler
43 {
44  class IceLoggingStrategy;
45 
46  using IceLoggingStrategyPtr = std::shared_ptr<IceLoggingStrategy>;
47 
48  /**
49  * @class IceLoggingStrategy
50  * @ingroup Profiling
51  * @brief IceLoggingStrategy publishes incoming log method calls directly on IceLoggingStrategy::profilerListenerPrx.
52  *
53  * Instances of this strategy object is used by armarx::Profiler.
54  */
55  class IceLoggingStrategy : virtual public LoggingStrategy
56  {
57  public:
58  IceLoggingStrategy(ProfilerListenerPrx profilerTopic);
59 
60  ~IceLoggingStrategy() override;
61 
62  void logEvent(pid_t processId,
63  uint64_t timestamp,
64  const std::string& executableName,
65  const std::string& timestampUnit,
66  const std::string& eventName,
67  const std::string& parentName,
68  const std::string& functionName) override;
69 
70  void logStatechartTransition(const ProfilerStatechartTransition& transition) override;
71  void
72  logStatechartInputParameters(pid_t processId,
73  uint64_t timestamp,
74  const std::string& stateIdentifier,
75  const armarx::StateParameterMap& inputParameterMap) override;
76  void
77  logStatechartLocalParameters(pid_t processId,
78  uint64_t timestamp,
79  const std::string& stateIdentifier,
80  const armarx::StateParameterMap& localParameterMap) override;
81  void
82  logStatechartOutputParameters(pid_t processId,
83  uint64_t timestamp,
84  const std::string& stateIdentifier,
85  const armarx::StateParameterMap& outputParameterMap) override;
86 
87  void logStatechartTransitionWithParameters(pid_t processId,
88  uint64_t timestamp,
89  const TransitionIceBase& transition) override;
90 
91  void logProcessCpuUsage(pid_t processId, uint64_t timestamp, float cpuUsage) override;
92  void logProcessMemoryUsage(pid_t processId, u_int64_t timestamp, int memoryUsage) override;
93 
94  protected:
95  ProfilerListenerPrx profilerListenerPrx;
96  };
97 
98  /**
99  * @class IceBufferdLoggingStrategy
100  * @ingroup Profiling
101  * @brief IceBufferdLoggingStrategy buffers incoming log method calls and publishes them as collections on IceLoggingStrategy::profilerListenerPrx.
102  *
103  * Instances of this strategy object is used by armarx::Profiler.
104  */
106  {
107  public:
108  IceBufferedLoggingStrategy(ProfilerListenerPrx profilerTopic);
109 
110  ~IceBufferedLoggingStrategy() override;
111 
112  void logEvent(pid_t processId,
113  uint64_t timestamp,
114  const std::string& executableName,
115  const std::string& timestampUnit,
116  const std::string& eventName,
117  const std::string& parentName,
118  const std::string& functionName) override;
119 
120  void logStatechartTransition(const ProfilerStatechartTransition& transition) override;
121  void
122  logStatechartInputParameters(pid_t processId,
123  uint64_t timestamp,
124  const std::string& stateIdentifier,
125  const armarx::StateParameterMap& inputParameterMap) override;
126  void
127  logStatechartLocalParameters(pid_t processId,
128  uint64_t timestamp,
129  const std::string& stateIdentifier,
130  const armarx::StateParameterMap& localParameterMap) override;
131  void
132  logStatechartOutputParameters(pid_t processId,
133  uint64_t timestamp,
134  const std::string& stateIdentifier,
135  const armarx::StateParameterMap& outputParameterMap) override;
136 
137  void logStatechartTransitionWithParameters(pid_t processId,
138  uint64_t timestamp,
139  const TransitionIceBase& transition) override;
140 
141  void logProcessCpuUsage(pid_t processId, uint64_t timestamp, float cpuUsage) override;
142  void logProcessMemoryUsage(pid_t processId, u_int64_t timestamp, int memoryUsage) override;
143 
144  static ProfilerStatechartTransitionWithParameters
145  toProfilerTransition(pid_t processId,
146  uint64_t timestamp,
147  const TransitionIceBase& transition);
148 
149  protected:
150  void publishData();
152 
153 
155  ProfilerEventList profilerEvents;
156 
158  ProfilerStatechartTransitionList profilerStatechartTransitions;
159 
161  ProfilerStatechartParametersList profilerStatechartInputParameters;
162 
164  ProfilerStatechartParametersList profilerStatechartLocalParameters;
165 
167  ProfilerStatechartParametersList profilerStatechartOutputParameters;
168 
170  ProfilerStatechartTransitionWithParametersList profilerStatechartTransitionsWithParameters;
171 
173  ProfilerProcessCpuUsageList profilerProcessCpuUsages;
174 
176  ProfilerProcessMemoryUsageList profilerProcessMemoryUsages;
177 
178  ProfilerListenerPrx profilerListenerPrx;
179 
181  };
182 } // namespace armarx::Profiler
armarx::Profiler::IceLoggingStrategy::logEvent
void logEvent(pid_t processId, uint64_t timestamp, const std::string &executableName, const std::string &timestampUnit, const std::string &eventName, const std::string &parentName, const std::string &functionName) override
Definition: IceLoggingStrategy.cpp:51
armarx::Profiler::IceLoggingStrategy::logProcessCpuUsage
void logProcessCpuUsage(pid_t processId, uint64_t timestamp, float cpuUsage) override
Definition: IceLoggingStrategy.cpp:127
armarx::Profiler::IceBufferedLoggingStrategy::profilerProcessMemoryUsages
ProfilerProcessMemoryUsageList profilerProcessMemoryUsages
Definition: IceLoggingStrategy.h:176
armarx::Profiler::IceLoggingStrategy::~IceLoggingStrategy
~IceLoggingStrategy() override
Definition: IceLoggingStrategy.cpp:46
armarx::Profiler::IceLoggingStrategy::logStatechartInputParameters
void logStatechartInputParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &inputParameterMap) override
Definition: IceLoggingStrategy.cpp:77
armarx::Profiler
Definition: ManagedIceObject.h:71
armarx::Profiler::IceBufferedLoggingStrategy::IceBufferedLoggingStrategy
IceBufferedLoggingStrategy(ProfilerListenerPrx profilerTopic)
Definition: IceLoggingStrategy.cpp:151
armarx::Profiler::IceBufferedLoggingStrategy::profilerEventsMutex
std::mutex profilerEventsMutex
Definition: IceLoggingStrategy.h:154
armarx::Profiler::IceBufferedLoggingStrategy::profilerStatechartInputParameters
ProfilerStatechartParametersList profilerStatechartInputParameters
Definition: IceLoggingStrategy.h:161
armarx::Profiler::LoggingStrategy
A brief description.
Definition: LoggingStrategy.h:51
armarx::Profiler::IceBufferedLoggingStrategy::publisherTask
PeriodicTask< IceBufferedLoggingStrategy >::pointer_type publisherTask
Definition: IceLoggingStrategy.h:180
armarx::Profiler::IceLoggingStrategy
IceLoggingStrategy publishes incoming log method calls directly on IceLoggingStrategy::profilerListen...
Definition: IceLoggingStrategy.h:55
armarx::Profiler::IceBufferedLoggingStrategy::profilerProcessCpuUsages
ProfilerProcessCpuUsageList profilerProcessCpuUsages
Definition: IceLoggingStrategy.h:173
armarx::Profiler::IceLoggingStrategy::IceLoggingStrategy
IceLoggingStrategy(ProfilerListenerPrx profilerTopic)
Definition: IceLoggingStrategy.cpp:40
armarx::Profiler::IceBufferedLoggingStrategy::logStatechartLocalParameters
void logStatechartLocalParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &localParameterMap) override
Definition: IceLoggingStrategy.cpp:273
armarx::Profiler::IceBufferedLoggingStrategy::copyDictionary
static armarx::StateParameterMap copyDictionary(const armarx::StateParameterMap &source)
Definition: IceLoggingStrategy.cpp:175
armarx::Profiler::IceBufferedLoggingStrategy::profilerStatechartLocalParameters
ProfilerStatechartParametersList profilerStatechartLocalParameters
Definition: IceLoggingStrategy.h:164
armarx::Profiler::IceBufferedLoggingStrategy::profilerStatechartLocalParametersMutex
std::mutex profilerStatechartLocalParametersMutex
Definition: IceLoggingStrategy.h:163
armarx::Profiler::IceBufferedLoggingStrategy::profilerProcessMemoryUsagesMutex
std::mutex profilerProcessMemoryUsagesMutex
Definition: IceLoggingStrategy.h:175
armarx::Profiler::IceBufferedLoggingStrategy::profilerStatechartOutputParameters
ProfilerStatechartParametersList profilerStatechartOutputParameters
Definition: IceLoggingStrategy.h:167
armarx::Profiler::IceBufferedLoggingStrategy::logStatechartTransition
void logStatechartTransition(const ProfilerStatechartTransition &transition) override
Definition: IceLoggingStrategy.cpp:248
armarx::statechartmodel::StateParameterMap
QMap< QString, StateParameterPtr > StateParameterMap
Definition: StateParameter.h:46
armarx::Profiler::IceBufferedLoggingStrategy::toProfilerTransition
static ProfilerStatechartTransitionWithParameters toProfilerTransition(pid_t processId, uint64_t timestamp, const TransitionIceBase &transition)
Definition: IceLoggingStrategy.cpp:189
armarx::Profiler::IceBufferedLoggingStrategy::logStatechartTransitionWithParameters
void logStatechartTransitionWithParameters(pid_t processId, uint64_t timestamp, const TransitionIceBase &transition) override
Definition: IceLoggingStrategy.cpp:305
armarx::Profiler::IceLoggingStrategy::logStatechartTransitionWithParameters
void logStatechartTransitionWithParameters(pid_t processId, uint64_t timestamp, const TransitionIceBase &transition) override
Definition: IceLoggingStrategy.cpp:113
armarx::Profiler::IceLoggingStrategy::logStatechartOutputParameters
void logStatechartOutputParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &outputParameterMap) override
Definition: IceLoggingStrategy.cpp:101
armarx::Profiler::IceBufferedLoggingStrategy::profilerStatechartTransitions
ProfilerStatechartTransitionList profilerStatechartTransitions
Definition: IceLoggingStrategy.h:158
armarx::Profiler::IceBufferedLoggingStrategy::logStatechartInputParameters
void logStatechartInputParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &inputParameterMap) override
Definition: IceLoggingStrategy.cpp:256
boost::source
Vertex source(const detail::edge_base< Directed, Vertex > &e, const PCG &)
Definition: point_cloud_graph.h:661
armarx::Profiler::IceBufferedLoggingStrategy::logStatechartOutputParameters
void logStatechartOutputParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &outputParameterMap) override
Definition: IceLoggingStrategy.cpp:289
LoggingStrategy.h
armarx::Profiler::IceBufferedLoggingStrategy::profilerStatechartTransitionsWithParametersMutex
std::mutex profilerStatechartTransitionsWithParametersMutex
Definition: IceLoggingStrategy.h:169
armarx::Profiler::IceLoggingStrategyPtr
std::shared_ptr< IceLoggingStrategy > IceLoggingStrategyPtr
Definition: IceLoggingStrategy.h:46
armarx::Profiler::IceBufferedLoggingStrategy::profilerCpuUsagesMutex
std::mutex profilerCpuUsagesMutex
Definition: IceLoggingStrategy.h:172
IceUtil::Handle
Definition: forward_declarations.h:30
armarx::Profiler::IceBufferedLoggingStrategy::logProcessMemoryUsage
void logProcessMemoryUsage(pid_t processId, u_int64_t timestamp, int memoryUsage) override
Definition: IceLoggingStrategy.cpp:334
armarx::Profiler::IceBufferedLoggingStrategy::profilerStatechartTransitionsWithParameters
ProfilerStatechartTransitionWithParametersList profilerStatechartTransitionsWithParameters
Definition: IceLoggingStrategy.h:170
armarx::Profiler::IceBufferedLoggingStrategy::logEvent
void logEvent(pid_t processId, uint64_t timestamp, const std::string &executableName, const std::string &timestampUnit, const std::string &eventName, const std::string &parentName, const std::string &functionName) override
Definition: IceLoggingStrategy.cpp:226
armarx::Profiler::IceBufferedLoggingStrategy::profilerStatechartInputParametersMutex
std::mutex profilerStatechartInputParametersMutex
Definition: IceLoggingStrategy.h:160
armarx::Profiler::IceBufferedLoggingStrategy::profilerStatechartOutputParametersMutex
std::mutex profilerStatechartOutputParametersMutex
Definition: IceLoggingStrategy.h:166
armarx::Profiler::IceBufferedLoggingStrategy::publishData
void publishData()
Definition: IceLoggingStrategy.cpp:350
armarx::Profiler::IceBufferedLoggingStrategy::profilerEvents
ProfilerEventList profilerEvents
Definition: IceLoggingStrategy.h:155
armarx::Profiler::IceBufferedLoggingStrategy::profilerStatechartTransitionsMutex
std::mutex profilerStatechartTransitionsMutex
Definition: IceLoggingStrategy.h:157
armarx::Profiler::IceBufferedLoggingStrategy
Definition: IceLoggingStrategy.h:105
armarx::Profiler::IceLoggingStrategy::profilerListenerPrx
ProfilerListenerPrx profilerListenerPrx
Definition: IceLoggingStrategy.h:95
armarx::Profiler::IceBufferedLoggingStrategy::~IceBufferedLoggingStrategy
~IceBufferedLoggingStrategy() override
Definition: IceLoggingStrategy.cpp:169
armarx::Profiler::IceLoggingStrategy::logProcessMemoryUsage
void logProcessMemoryUsage(pid_t processId, u_int64_t timestamp, int memoryUsage) override
Definition: IceLoggingStrategy.cpp:137
armarx::Profiler::IceLoggingStrategy::logStatechartLocalParameters
void logStatechartLocalParameters(pid_t processId, uint64_t timestamp, const std::string &stateIdentifier, const armarx::StateParameterMap &localParameterMap) override
Definition: IceLoggingStrategy.cpp:89
armarx::Profiler::IceBufferedLoggingStrategy::profilerListenerPrx
ProfilerListenerPrx profilerListenerPrx
Definition: IceLoggingStrategy.h:178
armarx::Profiler::IceBufferedLoggingStrategy::logProcessCpuUsage
void logProcessCpuUsage(pid_t processId, uint64_t timestamp, float cpuUsage) override
Definition: IceLoggingStrategy.cpp:321
armarx::Profiler::IceLoggingStrategy::logStatechartTransition
void logStatechartTransition(const ProfilerStatechartTransition &transition) override
Definition: IceLoggingStrategy.cpp:70