summaryrefslogtreecommitdiffstats
path: root/include/framework/scheduling/statistics.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/framework/scheduling/statistics.h')
-rw-r--r--include/framework/scheduling/statistics.h140
1 files changed, 64 insertions, 76 deletions
diff --git a/include/framework/scheduling/statistics.h b/include/framework/scheduling/statistics.h
index 6c479cd..48c186f 100644
--- a/include/framework/scheduling/statistics.h
+++ b/include/framework/scheduling/statistics.h
@@ -1,7 +1,7 @@
/*
* include/framework/scheduling/statistics.h
*
- * Copyright (C) 2023 Douglas B. Rumbaugh <drumbaugh@psu.edu>
+ * Copyright (C) 2023-2024 Douglas B. Rumbaugh <drumbaugh@psu.edu>
*
* Distributed under the Modified BSD License.
*
@@ -13,106 +13,94 @@
*/
#pragma once
-#include <cstdlib>
+#include <atomic>
#include <cassert>
+#include <chrono>
+#include <cstdlib>
+#include <mutex>
#include <unordered_map>
#include <vector>
-#include <mutex>
-#include <chrono>
-#include <atomic>
namespace de {
class SchedulerStatistics {
private:
- enum class EventType {
- QUEUED,
- SCHEDULED,
- STARTED,
- FINISHED
- };
+ enum class EventType { QUEUED, SCHEDULED, STARTED, FINISHED };
- struct Event {
- size_t id;
- EventType type;
- };
-
- struct JobInfo {
- size_t id;
- size_t size;
- size_t type;
- };
+ struct Event {
+ size_t id;
+ EventType type;
+ };
+ struct JobInfo {
+ size_t id;
+ size_t size;
+ size_t type;
+ };
public:
- SchedulerStatistics() = default;
- ~SchedulerStatistics() = default;
+ SchedulerStatistics() = default;
+ ~SchedulerStatistics() = default;
- void job_queued(size_t id, size_t type, size_t size) {
- auto time = std::chrono::high_resolution_clock::now();
- }
+ void job_queued(size_t id, size_t type, size_t size) { }
- void job_scheduled(size_t id) {
- std::unique_lock<std::mutex> lk(m_mutex);
+ void job_scheduled(size_t id) { std::unique_lock<std::mutex> lk(m_mutex); }
- }
+ void job_begin(size_t id) {}
- void job_begin(size_t id) {
+ void job_complete(size_t id) {}
- }
+ /* FIXME: This is just a temporary approach */
+ void log_time_data(size_t length, size_t type) {
+ assert(type == 1 || type == 2);
- void job_complete(size_t id) {
+ if (type == 1) {
+ m_type_1_cnt.fetch_add(1);
+ m_type_1_total_time.fetch_add(length);
- }
+ if (length > m_type_1_largest_time) {
+ m_type_1_largest_time.store(length);
+ }
+ } else {
+ m_type_2_cnt.fetch_add(1);
+ m_type_2_total_time.fetch_add(length);
- /* FIXME: This is just a temporary approach */
- void log_time_data(size_t length, size_t type) {
- assert(type == 1 || type == 2);
-
- if (type == 1) {
- m_type_1_cnt.fetch_add(1);
- m_type_1_total_time.fetch_add(length);
-
- if (length > m_type_1_largest_time) {
- m_type_1_largest_time.store(length);
- }
- } else {
- m_type_2_cnt.fetch_add(1);
- m_type_2_total_time.fetch_add(length);
-
- if (length > m_type_2_largest_time) {
- m_type_2_largest_time.store(length);
- }
- }
+ if (length > m_type_2_largest_time) {
+ m_type_2_largest_time.store(length);
+ }
}
-
- void print_statistics() {
- if (m_type_1_cnt > 0) {
- fprintf(stdout, "Query Count: %ld\tQuery Avg. Latency: %ld\tMax Query Latency: %ld\n",
- m_type_1_cnt.load(),
- m_type_1_total_time.load() / m_type_1_cnt.load(),
- m_type_1_largest_time.load());
- }
- if (m_type_2_cnt > 0) {
- fprintf(stdout, "Reconstruction Count: %ld\tReconstruction Avg. Latency: %ld\tMax Recon. Latency:%ld\n",
- m_type_2_cnt.load(),
- m_type_2_total_time.load() / m_type_2_cnt.load(),
- m_type_2_largest_time.load());
- }
+ }
+
+ void print_statistics() {
+ if (m_type_1_cnt > 0) {
+ fprintf(
+ stdout,
+ "Query Count: %ld\tQuery Avg. Latency: %ld\tMax Query Latency: %ld\n",
+ m_type_1_cnt.load(), m_type_1_total_time.load() / m_type_1_cnt.load(),
+ m_type_1_largest_time.load());
+ }
+ if (m_type_2_cnt > 0) {
+ fprintf(stdout,
+ "Reconstruction Count: %ld\tReconstruction Avg. Latency: "
+ "%ld\tMax Recon. Latency:%ld\n",
+ m_type_2_cnt.load(),
+ m_type_2_total_time.load() / m_type_2_cnt.load(),
+ m_type_2_largest_time.load());
}
+ }
private:
- std::mutex m_mutex;
- std::unordered_map<size_t, JobInfo> m_jobs;
- std::vector<Event> m_event_log;
+ std::mutex m_mutex;
+ std::unordered_map<size_t, JobInfo> m_jobs;
+ std::vector<Event> m_event_log;
- std::atomic<size_t> m_type_1_cnt;
- std::atomic<size_t> m_type_1_total_time;
+ std::atomic<size_t> m_type_1_cnt;
+ std::atomic<size_t> m_type_1_total_time;
- std::atomic<size_t> m_type_2_cnt;
- std::atomic<size_t> m_type_2_total_time;
+ std::atomic<size_t> m_type_2_cnt;
+ std::atomic<size_t> m_type_2_total_time;
- std::atomic<size_t> m_type_1_largest_time;
- std::atomic<size_t> m_type_2_largest_time;
+ std::atomic<size_t> m_type_1_largest_time;
+ std::atomic<size_t> m_type_2_largest_time;
};
-}
+} // namespace de