|
Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
|
Centralized metrics service for thread pool metrics management. More...
#include <metrics_service.h>

Public Member Functions | |
| metrics_service () | |
| Default constructor. | |
| ~metrics_service ()=default | |
| Destructor. | |
| metrics_service (const metrics_service &)=delete | |
| metrics_service & | operator= (const metrics_service &)=delete |
| metrics_service (metrics_service &&)=delete | |
| metrics_service & | operator= (metrics_service &&)=delete |
| void | record_submission (std::size_t count=1) |
| Record task submission(s). | |
| void | record_enqueue (std::size_t count=1) |
| Record enqueue operation(s). | |
| void | record_enqueue_with_latency (std::chrono::nanoseconds latency, std::size_t count=1) |
| Record enqueue operation with latency measurement. | |
| void | record_execution (std::uint64_t duration_ns, bool success) |
| Record task execution completion. | |
| void | record_execution_with_wait_time (std::chrono::nanoseconds duration, std::chrono::nanoseconds wait_time, bool success) |
| Record task execution with wait time tracking. | |
| void | record_idle_time (std::uint64_t duration_ns) |
| Record idle time. | |
| void | record_queue_depth (std::size_t depth) |
| Record current queue depth. | |
| void | record_worker_state (std::size_t worker_id, bool busy, std::uint64_t duration_ns=0) |
| Update worker state for per-worker metrics. | |
| void | set_enhanced_metrics_enabled (bool enabled, std::size_t worker_count=0) |
| Enable or disable enhanced metrics collection. | |
| bool | is_enhanced_metrics_enabled () const |
| Check if enhanced metrics is enabled. | |
| void | update_worker_count (std::size_t count) |
| Update the worker count for enhanced metrics. | |
| void | set_active_workers (std::size_t count) |
| Set the number of active workers. | |
| const ThreadPoolMetrics & | basic_metrics () const noexcept |
| Access basic metrics (read-only reference). | |
| const EnhancedThreadPoolMetrics & | enhanced_metrics () const |
| Access enhanced metrics (read-only reference). | |
| EnhancedSnapshot | enhanced_snapshot () const |
| Get enhanced metrics snapshot. | |
| std::shared_ptr< ThreadPoolMetrics > | get_basic_metrics () const noexcept |
| Get the shared pointer to basic metrics. | |
| void | reset () |
| Reset all metrics to their initial state. | |
Private Attributes | |
| std::shared_ptr< ThreadPoolMetrics > | basic_metrics_ |
| Basic metrics collector. | |
| std::shared_ptr< EnhancedThreadPoolMetrics > | enhanced_metrics_ |
| Enhanced metrics collector. | |
| std::atomic< bool > | enhanced_enabled_ {false} |
| Flag indicating if enhanced metrics collection is enabled. | |
| std::mutex | init_mutex_ |
| Mutex for thread-safe enhanced metrics initialization. | |
Centralized metrics service for thread pool metrics management.
This class provides a unified interface for metrics handling, consolidating metrics management that was previously duplicated between thread_pool and thread_worker classes.
All methods are thread-safe using lock-free atomic operations and internal synchronization.
Definition at line 60 of file metrics_service.h.
| kcenon::thread::metrics::metrics_service::metrics_service | ( | ) |
Default constructor.
Creates the basic ThreadPoolMetrics immediately. EnhancedThreadPoolMetrics is lazily initialized when enabled.
Definition at line 11 of file metrics_service.cpp.
|
default |
Destructor.
|
delete |
|
delete |
|
nodiscardnoexcept |
Access basic metrics (read-only reference).
Definition at line 112 of file metrics_service.cpp.
References basic_metrics_.
|
nodiscard |
Access enhanced metrics (read-only reference).
| std::runtime_error | if enhanced metrics is not enabled. |
Definition at line 116 of file metrics_service.cpp.
References enhanced_metrics_.
|
nodiscard |
Get enhanced metrics snapshot.
Returns empty snapshot if enhanced metrics is not enabled.
Definition at line 125 of file metrics_service.cpp.
References enhanced_enabled_, and enhanced_metrics_.
|
nodiscardnoexcept |
Get the shared pointer to basic metrics.
Used by thread_worker for direct metrics recording.
Definition at line 132 of file metrics_service.cpp.
References basic_metrics_.
|
nodiscard |
Check if enhanced metrics is enabled.
Definition at line 96 of file metrics_service.cpp.
References enhanced_enabled_.
|
delete |
|
delete |
| void kcenon::thread::metrics::metrics_service::record_enqueue | ( | std::size_t | count = 1 | ) |
Record enqueue operation(s).
| count | Number of tasks enqueued (default: 1). |
Definition at line 25 of file metrics_service.cpp.
References basic_metrics_.
| void kcenon::thread::metrics::metrics_service::record_enqueue_with_latency | ( | std::chrono::nanoseconds | latency, |
| std::size_t | count = 1 ) |
Record enqueue operation with latency measurement.
| latency | Time taken to enqueue the task. |
| count | Number of tasks enqueued (default: 1). |
Used when enhanced metrics are enabled to track enqueue latency histogram.
Definition at line 29 of file metrics_service.cpp.
References basic_metrics_, enhanced_enabled_, enhanced_metrics_, and kcenon::thread::latency.
| void kcenon::thread::metrics::metrics_service::record_execution | ( | std::uint64_t | duration_ns, |
| bool | success ) |
Record task execution completion.
| duration_ns | Execution duration in nanoseconds. |
| success | Whether the task completed successfully. |
Definition at line 43 of file metrics_service.cpp.
References basic_metrics_, enhanced_enabled_, enhanced_metrics_, and kcenon::thread::success.
| void kcenon::thread::metrics::metrics_service::record_execution_with_wait_time | ( | std::chrono::nanoseconds | duration, |
| std::chrono::nanoseconds | wait_time, | ||
| bool | success ) |
Record task execution with wait time tracking.
| duration | Execution duration. |
| wait_time | Time the task waited in queue. |
| success | Whether the task completed successfully. |
Used when enhanced metrics are enabled.
Definition at line 52 of file metrics_service.cpp.
References basic_metrics_, enhanced_enabled_, enhanced_metrics_, and kcenon::thread::success.
| void kcenon::thread::metrics::metrics_service::record_idle_time | ( | std::uint64_t | duration_ns | ) |
Record idle time.
| duration_ns | Idle duration in nanoseconds. |
Definition at line 65 of file metrics_service.cpp.
References basic_metrics_.
| void kcenon::thread::metrics::metrics_service::record_queue_depth | ( | std::size_t | depth | ) |
Record current queue depth.
| depth | The current number of tasks in the queue. |
Definition at line 69 of file metrics_service.cpp.
References enhanced_enabled_, and enhanced_metrics_.
| void kcenon::thread::metrics::metrics_service::record_submission | ( | std::size_t | count = 1 | ) |
Record task submission(s).
| count | Number of tasks submitted (default: 1). |
Definition at line 15 of file metrics_service.cpp.
References basic_metrics_, enhanced_enabled_, and enhanced_metrics_.
| void kcenon::thread::metrics::metrics_service::record_worker_state | ( | std::size_t | worker_id, |
| bool | busy, | ||
| std::uint64_t | duration_ns = 0 ) |
Update worker state for per-worker metrics.
| worker_id | The worker's identifier. |
| busy | Whether the worker is currently busy. |
| duration_ns | Duration in the previous state. |
Definition at line 75 of file metrics_service.cpp.
References enhanced_enabled_, and enhanced_metrics_.
| void kcenon::thread::metrics::metrics_service::reset | ( | ) |
Reset all metrics to their initial state.
Resets both basic and enhanced metrics (if enabled).
Definition at line 136 of file metrics_service.cpp.
References basic_metrics_, and enhanced_metrics_.
| void kcenon::thread::metrics::metrics_service::set_active_workers | ( | std::size_t | count | ) |
Set the number of active workers.
| count | Number of currently active workers. |
Definition at line 106 of file metrics_service.cpp.
References enhanced_metrics_.
| void kcenon::thread::metrics::metrics_service::set_enhanced_metrics_enabled | ( | bool | enabled, |
| std::size_t | worker_count = 0 ) |
Enable or disable enhanced metrics collection.
| enabled | True to enable enhanced metrics. |
| worker_count | Number of workers to track (for initialization). |
When enabled for the first time, initializes EnhancedThreadPoolMetrics. Subsequent calls only toggle the enabled flag.
Definition at line 84 of file metrics_service.cpp.
References enhanced_enabled_, enhanced_metrics_, and init_mutex_.
| void kcenon::thread::metrics::metrics_service::update_worker_count | ( | std::size_t | count | ) |
Update the worker count for enhanced metrics.
| count | New number of workers. |
Call this when the thread pool scales up or down.
Definition at line 100 of file metrics_service.cpp.
References enhanced_metrics_.
|
private |
Basic metrics collector.
Always initialized; provides core metrics functionality.
Definition at line 233 of file metrics_service.h.
Referenced by basic_metrics(), get_basic_metrics(), record_enqueue(), record_enqueue_with_latency(), record_execution(), record_execution_with_wait_time(), record_idle_time(), record_submission(), and reset().
|
private |
Flag indicating if enhanced metrics collection is enabled.
Definition at line 245 of file metrics_service.h.
Referenced by enhanced_snapshot(), is_enhanced_metrics_enabled(), record_enqueue_with_latency(), record_execution(), record_execution_with_wait_time(), record_queue_depth(), record_submission(), record_worker_state(), and set_enhanced_metrics_enabled().
|
private |
Enhanced metrics collector.
Lazily initialized when enhanced metrics is first enabled.
Definition at line 240 of file metrics_service.h.
Referenced by enhanced_metrics(), enhanced_snapshot(), record_enqueue_with_latency(), record_execution(), record_execution_with_wait_time(), record_queue_depth(), record_submission(), record_worker_state(), reset(), set_active_workers(), set_enhanced_metrics_enabled(), and update_worker_count().
|
mutableprivate |
Mutex for thread-safe enhanced metrics initialization.
Definition at line 250 of file metrics_service.h.
Referenced by set_enhanced_metrics_enabled().