summaryrefslogtreecommitdiff
path: root/python/openvino/runtime/common/monitors/include
diff options
context:
space:
mode:
authorEric Dao <eric@erickhangdao.com>2025-03-10 17:54:31 -0400
committerEric Dao <eric@erickhangdao.com>2025-03-10 17:54:31 -0400
commitab224e2e6ba65f5a369ec392f99cd8845ad06c98 (patch)
treea1e757e9341863ed52b8ad4c5a1c45933aab9da4 /python/openvino/runtime/common/monitors/include
parent40da1752f2c8639186b72f6838aa415e854d0b1d (diff)
downloadthesis-master.tar.gz
thesis-master.tar.bz2
thesis-master.zip
completed thesisHEADmaster
Diffstat (limited to 'python/openvino/runtime/common/monitors/include')
-rw-r--r--python/openvino/runtime/common/monitors/include/monitors/cpu_monitor.h28
-rw-r--r--python/openvino/runtime/common/monitors/include/monitors/memory_monitor.h34
-rw-r--r--python/openvino/runtime/common/monitors/include/monitors/presenter.h44
-rw-r--r--python/openvino/runtime/common/monitors/include/monitors/query_wrapper.h17
4 files changed, 123 insertions, 0 deletions
diff --git a/python/openvino/runtime/common/monitors/include/monitors/cpu_monitor.h b/python/openvino/runtime/common/monitors/include/monitors/cpu_monitor.h
new file mode 100644
index 0000000..38d2845
--- /dev/null
+++ b/python/openvino/runtime/common/monitors/include/monitors/cpu_monitor.h
@@ -0,0 +1,28 @@
+// Copyright (C) 2019 Intel Corporation
+// SPDX-License-Identifier: Apache-2.0
+//
+
+#pragma once
+
+#include <deque>
+#include <memory>
+#include <vector>
+
+class CpuMonitor {
+public:
+ CpuMonitor();
+ ~CpuMonitor();
+ void setHistorySize(std::size_t size);
+ std::size_t getHistorySize() const;
+ void collectData();
+ std::deque<std::vector<double>> getLastHistory() const;
+ std::vector<double> getMeanCpuLoad() const;
+
+private:
+ unsigned samplesNumber;
+ unsigned historySize;
+ std::vector<double> cpuLoadSum;
+ std::deque<std::vector<double>> cpuLoadHistory;
+ class PerformanceCounter;
+ std::unique_ptr<PerformanceCounter> performanceCounter;
+};
diff --git a/python/openvino/runtime/common/monitors/include/monitors/memory_monitor.h b/python/openvino/runtime/common/monitors/include/monitors/memory_monitor.h
new file mode 100644
index 0000000..9eda10f
--- /dev/null
+++ b/python/openvino/runtime/common/monitors/include/monitors/memory_monitor.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2019 Intel Corporation
+// SPDX-License-Identifier: Apache-2.0
+//
+
+#pragma once
+
+#include <deque>
+#include <memory>
+
+class MemoryMonitor {
+public:
+ MemoryMonitor();
+ ~MemoryMonitor();
+ void setHistorySize(std::size_t size);
+ std::size_t getHistorySize() const;
+ void collectData();
+ std::deque<std::pair<double, double>> getLastHistory() const;
+ double getMeanMem() const; // in GiB
+ double getMeanSwap() const;
+ double getMaxMem() const;
+ double getMaxSwap() const;
+ double getMemTotal() const;
+ double getMaxMemTotal() const; // a system may have hotpluggable memory
+private:
+ unsigned samplesNumber;
+ std::size_t historySize;
+ double memSum, swapSum;
+ double maxMem, maxSwap;
+ double memTotal;
+ double maxMemTotal;
+ std::deque<std::pair<double, double>> memSwapUsageHistory;
+ class PerformanceCounter;
+ std::unique_ptr<PerformanceCounter> performanceCounter;
+};
diff --git a/python/openvino/runtime/common/monitors/include/monitors/presenter.h b/python/openvino/runtime/common/monitors/include/monitors/presenter.h
new file mode 100644
index 0000000..c6587a0
--- /dev/null
+++ b/python/openvino/runtime/common/monitors/include/monitors/presenter.h
@@ -0,0 +1,44 @@
+// Copyright (C) 2019 Intel Corporation
+// SPDX-License-Identifier: Apache-2.0
+//
+
+#pragma once
+
+#include <chrono>
+#include <map>
+#include <ostream>
+#include <set>
+
+#include <opencv2/imgproc.hpp>
+
+#include "cpu_monitor.h"
+#include "memory_monitor.h"
+
+enum class MonitorType{CpuAverage, DistributionCpu, Memory};
+
+class Presenter {
+public:
+ explicit Presenter(std::set<MonitorType> enabledMonitors = {},
+ int yPos = 20,
+ cv::Size graphSize = {150, 60},
+ std::size_t historySize = 20);
+ explicit Presenter(const std::string& keys,
+ int yPos = 20,
+ cv::Size graphSize = {150, 60},
+ std::size_t historySize = 20);
+ void addRemoveMonitor(MonitorType monitor);
+ void handleKey(int key); // handles C, D, M, H keys
+ void drawGraphs(cv::Mat& frame);
+ std::vector<std::string> reportMeans() const;
+
+ const int yPos;
+ const cv::Size graphSize;
+ const int graphPadding;
+private:
+ std::chrono::steady_clock::time_point prevTimeStamp;
+ std::size_t historySize;
+ CpuMonitor cpuMonitor;
+ bool distributionCpuEnabled;
+ MemoryMonitor memoryMonitor;
+ std::ostringstream strStream;
+};
diff --git a/python/openvino/runtime/common/monitors/include/monitors/query_wrapper.h b/python/openvino/runtime/common/monitors/include/monitors/query_wrapper.h
new file mode 100644
index 0000000..d69f548
--- /dev/null
+++ b/python/openvino/runtime/common/monitors/include/monitors/query_wrapper.h
@@ -0,0 +1,17 @@
+// Copyright (C) 2019 Intel Corporation
+// SPDX-License-Identifier: Apache-2.0
+//
+
+#pragma once
+
+#include <Pdh.h>
+class QueryWrapper {
+public:
+ QueryWrapper();
+ ~QueryWrapper();
+ QueryWrapper(const QueryWrapper&) = delete;
+ QueryWrapper& operator=(const QueryWrapper&) = delete;
+ operator PDH_HQUERY() const;
+private:
+ PDH_HQUERY query;
+};