19 for (std::size_t i = 0; i < count; ++i) {
30 std::chrono::nanoseconds
latency,
36 auto per_item_latency =
latency /
static_cast<long>(count);
37 for (std::size_t i = 0; i < count; ++i) {
48 std::chrono::nanoseconds{duration_ns},
success);
53 std::chrono::nanoseconds duration,
54 std::chrono::nanoseconds wait_time,
57 static_cast<std::uint64_t
>(duration.count()),
success);
76 std::size_t worker_id,
78 std::uint64_t duration_ns) {
118 throw std::runtime_error(
119 "Enhanced metrics is not enabled. "
120 "Call set_enhanced_metrics_enabled(true) first.");
Enhanced thread pool metrics with histograms and percentiles.
Lightweight metrics container shared between thread_pool and workers.
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 set_enhanced_metrics_enabled(bool enabled, std::size_t worker_count=0)
Enable or disable enhanced metrics collection.
std::shared_ptr< EnhancedThreadPoolMetrics > enhanced_metrics_
Enhanced metrics collector.
std::mutex init_mutex_
Mutex for thread-safe enhanced metrics initialization.
void reset()
Reset all metrics to their initial state.
void record_execution(std::uint64_t duration_ns, bool success)
Record task execution completion.
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.
std::shared_ptr< ThreadPoolMetrics > basic_metrics_
Basic metrics collector.
void record_worker_state(std::size_t worker_id, bool busy, std::uint64_t duration_ns=0)
Update worker state for per-worker metrics.
metrics_service()
Default constructor.
const ThreadPoolMetrics & basic_metrics() const noexcept
Access basic metrics (read-only reference).
void update_worker_count(std::size_t count)
Update the worker count for enhanced metrics.
void record_submission(std::size_t count=1)
Record task submission(s).
bool is_enhanced_metrics_enabled() const
Check if enhanced metrics is enabled.
void record_queue_depth(std::size_t depth)
Record current queue depth.
void record_idle_time(std::uint64_t duration_ns)
Record idle time.
std::atomic< bool > enhanced_enabled_
Flag indicating if enhanced metrics collection is enabled.
std::shared_ptr< ThreadPoolMetrics > get_basic_metrics() const noexcept
Get the shared pointer to basic metrics.
void set_active_workers(std::size_t count)
Set the number of active workers.
EnhancedSnapshot enhanced_snapshot() const
Get enhanced metrics snapshot.
const EnhancedThreadPoolMetrics & enhanced_metrics() const
Access enhanced metrics (read-only reference).
Centralized metrics service for thread pool metrics management.
@ latency
Latency threshold exceeded.
Enhanced snapshot with latency percentiles and throughput.