311 std::size_t worker_id,
313 std::uint64_t duration_ns = 0);
378 void reset()
override;
396 [[nodiscard]] std::string
to_json()
const;
404 const std::string& prefix =
"thread_pool")
const;
433 [[nodiscard]]
static double ns_to_us(
double ns) {
return ns / 1000.0; }
Enhanced thread pool metrics with histograms and percentiles.
std::atomic< std::size_t > active_workers_
void record_submission()
Record a task submission.
std::atomic< std::size_t > current_queue_depth_
const SlidingWindowCounter & throughput_1s() const
Get the 1-second throughput counter (read-only).
const LatencyHistogram & execution_latency() const
Get the execution latency histogram (read-only).
void set_active_workers(std::size_t count)
Set the number of active workers.
void record_execution(std::chrono::nanoseconds latency, bool success)
Record task execution completion.
EnhancedSnapshot snapshot() const
Get a comprehensive snapshot of all metrics.
const SlidingWindowCounter & throughput_1m() const
Get the 1-minute throughput counter (read-only).
EnhancedThreadPoolMetrics & operator=(const EnhancedThreadPoolMetrics &)=delete
LatencyHistogram wait_time_
std::string to_prometheus(const std::string &prefix="thread_pool") const
Export metrics in Prometheus/OpenMetrics format.
~EnhancedThreadPoolMetrics() override=default
Destructor.
SlidingWindowCounter throughput_1s_
std::vector< WorkerMetrics > worker_metrics() const
Get per-worker metrics.
LatencyHistogram execution_latency_
void record_worker_state(std::size_t worker_id, bool busy, std::uint64_t duration_ns=0)
Update worker state.
std::atomic< std::uint64_t > queue_depth_sum_
void record_wait_time(std::chrono::nanoseconds wait)
Record wait time (time spent in queue).
std::string to_json() const
Export metrics as JSON string.
std::atomic< std::size_t > peak_queue_depth_
std::vector< WorkerMetrics > per_worker_metrics_
void reset() override
Reset all metrics to initial state.
std::atomic< std::uint64_t > queue_depth_samples_
const LatencyHistogram & wait_time() const
Get the wait time histogram (read-only).
const LatencyHistogram & enqueue_latency() const
Get the enqueue latency histogram (read-only).
EnhancedThreadPoolMetrics & operator=(EnhancedThreadPoolMetrics &&)=delete
static double ns_to_us(double ns)
EnhancedThreadPoolMetrics(EnhancedThreadPoolMetrics &&)=delete
void record_enqueue(std::chrono::nanoseconds latency)
Record enqueue operation latency.
LatencyHistogram enqueue_latency_
EnhancedThreadPoolMetrics(std::size_t worker_count=0)
Constructs enhanced metrics with the specified worker count.
void update_worker_count(std::size_t count)
Update worker count.
SlidingWindowCounter throughput_1m_
void record_queue_depth(std::size_t depth)
Record current queue depth.
EnhancedThreadPoolMetrics(const EnhancedThreadPoolMetrics &)=delete
std::mutex workers_mutex_
HDR-style histogram for latency distribution with logarithmic buckets.
Abstract base class for thread pool metrics.
Sliding window counter for throughput measurement.
HDR-style histogram for latency distribution with logarithmic buckets.
Thread pool metrics collection, histograms, and observability.
@ latency
Latency threshold exceeded.
Sliding window counter for throughput measurement.
Enhanced snapshot with latency percentiles and throughput.
double throughput_1s
Tasks completed per second (1-second window).
std::size_t peak_queue_depth
Peak queue depth since last reset.
double worker_utilization
Overall worker utilization (0.0 - 1.0).
std::size_t active_workers
Number of active workers.
double enqueue_latency_p50_us
Median (P50) enqueue latency in microseconds.
std::uint64_t tasks_failed
Total tasks that failed during execution.
std::uint64_t total_busy_time_ns
Total busy time across all workers in nanoseconds.
std::chrono::steady_clock::time_point snapshot_time
Timestamp when this snapshot was taken.
double enqueue_latency_p90_us
90th percentile enqueue latency in microseconds.
double wait_time_p90_us
90th percentile wait time in microseconds.
double execution_latency_p99_us
99th percentile execution latency in microseconds.
std::uint64_t tasks_executed
Total tasks successfully executed.
std::uint64_t tasks_submitted
Total tasks submitted to the pool.
std::uint64_t total_idle_time_ns
Total idle time across all workers in nanoseconds.
double avg_queue_depth
Average queue depth over the sampling period.
double execution_latency_p50_us
Median execution latency in microseconds.
double wait_time_p50_us
Median wait time (queue time) in microseconds.
double throughput_1m
Tasks completed per second (1-minute window average).
double execution_latency_p90_us
90th percentile execution latency in microseconds.
std::size_t current_queue_depth
Current queue depth.
double wait_time_p99_us
99th percentile wait time in microseconds.
std::vector< double > per_worker_utilization
Per-worker utilization (0.0 - 1.0 each).
double enqueue_latency_p99_us
99th percentile enqueue latency in microseconds.
Per-worker metrics for detailed analysis.
std::uint64_t idle_time_ns
Total idle time in nanoseconds.
std::size_t worker_id
Worker identifier.
bool is_busy
Current state (true = busy, false = idle).
std::uint64_t busy_time_ns
Total busy time in nanoseconds.
std::uint64_t tasks_executed
Total tasks executed by this worker.