Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
Loading...
Searching...
No Matches
kcenon::thread::metrics::ThreadPoolMetrics Class Reference

Lightweight metrics container shared between thread_pool and workers. More...

#include <thread_pool_metrics.h>

Inheritance diagram for kcenon::thread::metrics::ThreadPoolMetrics:
Inheritance graph
Collaboration diagram for kcenon::thread::metrics::ThreadPoolMetrics:
Collaboration graph

Classes

struct  Snapshot
 Snapshot structure containing all metric values. More...
 

Public Member Functions

 ThreadPoolMetrics ()=default
 Default constructor.
 
 ~ThreadPoolMetrics () override=default
 Virtual destructor.
 
void record_enqueue (std::size_t count=1)
 Record enqueue operation(s).
 
std::uint64_t tasks_enqueued () const
 Get the total number of tasks enqueued.
 
void reset () override
 Reset all metrics to their initial state.
 
Snapshot snapshot () const
 Get a snapshot of all metrics.
 
- Public Member Functions inherited from kcenon::thread::metrics::MetricsBase
virtual ~MetricsBase ()=default
 Virtual destructor for proper cleanup in derived classes.
 
void record_submission (std::size_t count=1)
 Record task submission(s).
 
void record_execution (std::uint64_t duration_ns, bool success)
 Record task execution completion.
 
void record_idle_time (std::uint64_t duration_ns)
 Record idle time.
 
std::uint64_t tasks_submitted () const
 Get the total number of tasks submitted.
 
std::uint64_t tasks_executed () const
 Get the total number of tasks successfully executed.
 
std::uint64_t tasks_failed () const
 Get the total number of failed tasks.
 
std::uint64_t total_busy_time_ns () const
 Get the total busy time in nanoseconds.
 
std::uint64_t total_idle_time_ns () const
 Get the total idle time in nanoseconds.
 
BaseSnapshot base_snapshot () const
 Get a base snapshot of common metrics.
 
double utilization () const
 Calculate worker utilization ratio.
 
double success_rate () const
 Calculate task success rate.
 

Private Attributes

std::atomic< std::uint64_t > tasks_enqueued_ {0}
 Counter for enqueued tasks.
 

Additional Inherited Members

- Protected Member Functions inherited from kcenon::thread::metrics::MetricsBase
 MetricsBase ()=default
 Default constructor.
 
 MetricsBase (const MetricsBase &)=delete
 Copy constructor (deleted for thread safety).
 
MetricsBaseoperator= (const MetricsBase &)=delete
 Copy assignment operator (deleted for thread safety).
 
 MetricsBase (MetricsBase &&)=delete
 Move constructor (deleted for thread safety).
 
MetricsBaseoperator= (MetricsBase &&)=delete
 Move assignment operator (deleted for thread safety).
 
- Protected Attributes inherited from kcenon::thread::metrics::MetricsBase
std::atomic< std::uint64_t > tasks_submitted_ {0}
 Counter for submitted tasks.
 
std::atomic< std::uint64_t > tasks_executed_ {0}
 Counter for successfully executed tasks.
 
std::atomic< std::uint64_t > tasks_failed_ {0}
 Counter for failed tasks.
 
std::atomic< std::uint64_t > total_busy_time_ns_ {0}
 Accumulated busy time in nanoseconds.
 
std::atomic< std::uint64_t > total_idle_time_ns_ {0}
 Accumulated idle time in nanoseconds.
 

Detailed Description

Lightweight metrics container shared between thread_pool and workers.

This class extends MetricsBase with an additional enqueue counter, providing minimal overhead for basic metrics tracking.

Performance Characteristics

  • record_* overhead: < 50ns
  • Memory footprint: 48 bytes (6 atomic counters)
  • No histograms or percentiles (use EnhancedThreadPoolMetrics for those)

Thread Safety

All methods are thread-safe using lock-free atomic operations.

Usage Example

auto metrics = std::make_shared<ThreadPoolMetrics>();
// Record metrics
metrics->record_submission();
metrics->record_enqueue();
metrics->record_execution(50000, true); // 50μs, success
// Get snapshot
auto snap = metrics->snapshot();
LOG_INFO("Executed: {}", snap.tasks_executed);
See also
MetricsBase
EnhancedThreadPoolMetrics

Definition at line 51 of file thread_pool_metrics.h.

Constructor & Destructor Documentation

◆ ThreadPoolMetrics()

kcenon::thread::metrics::ThreadPoolMetrics::ThreadPoolMetrics ( )
default

Default constructor.

◆ ~ThreadPoolMetrics()

kcenon::thread::metrics::ThreadPoolMetrics::~ThreadPoolMetrics ( )
overridedefault

Virtual destructor.

Member Function Documentation

◆ record_enqueue()

void kcenon::thread::metrics::ThreadPoolMetrics::record_enqueue ( std::size_t count = 1)
inline

Record enqueue operation(s).

Parameters
countNumber of tasks enqueued (default: 1).

Definition at line 81 of file thread_pool_metrics.h.

81 {
82 tasks_enqueued_.fetch_add(count, std::memory_order_relaxed);
83 }
std::atomic< std::uint64_t > tasks_enqueued_
Counter for enqueued tasks.

References tasks_enqueued_.

◆ reset()

void kcenon::thread::metrics::ThreadPoolMetrics::reset ( )
inlineoverridevirtual

Reset all metrics to their initial state.

Reimplemented from kcenon::thread::metrics::MetricsBase.

Definition at line 96 of file thread_pool_metrics.h.

96 {
98 tasks_enqueued_.store(0, std::memory_order_relaxed);
99 }
virtual void reset()
Reset all metrics to their initial state.

References kcenon::thread::metrics::MetricsBase::reset(), and tasks_enqueued_.

Referenced by kcenon::thread::thread_pool::reset_metrics().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ snapshot()

Snapshot kcenon::thread::metrics::ThreadPoolMetrics::snapshot ( ) const
inlinenodiscard

Get a snapshot of all metrics.

Returns
Snapshot with current metric values.

Definition at line 105 of file thread_pool_metrics.h.

105 {
106 return Snapshot{
108 tasks_enqueued_.load(std::memory_order_relaxed),
110 tasks_failed(),
113 };
114 }
std::uint64_t total_busy_time_ns() const
Get the total busy time in nanoseconds.
std::uint64_t tasks_executed() const
Get the total number of tasks successfully executed.
std::uint64_t tasks_submitted() const
Get the total number of tasks submitted.
std::uint64_t tasks_failed() const
Get the total number of failed tasks.
std::uint64_t total_idle_time_ns() const
Get the total idle time in nanoseconds.

References tasks_enqueued_, kcenon::thread::metrics::MetricsBase::tasks_executed(), kcenon::thread::metrics::MetricsBase::tasks_failed(), kcenon::thread::metrics::MetricsBase::tasks_submitted(), kcenon::thread::metrics::MetricsBase::total_busy_time_ns(), and kcenon::thread::metrics::MetricsBase::total_idle_time_ns().

Referenced by kcenon::thread::autoscaler::collect_metrics(), kcenon::thread::diagnostics::thread_pool_diagnostics::detect_bottlenecks(), and kcenon::thread::diagnostics::thread_pool_diagnostics::health_check().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tasks_enqueued()

std::uint64_t kcenon::thread::metrics::ThreadPoolMetrics::tasks_enqueued ( ) const
inlinenodiscard

Get the total number of tasks enqueued.

Returns
Number of enqueued tasks.

Definition at line 89 of file thread_pool_metrics.h.

89 {
90 return tasks_enqueued_.load(std::memory_order_relaxed);
91 }

References tasks_enqueued_.

Member Data Documentation

◆ tasks_enqueued_

std::atomic<std::uint64_t> kcenon::thread::metrics::ThreadPoolMetrics::tasks_enqueued_ {0}
private

Counter for enqueued tasks.

This counter tracks tasks that were successfully added to the queue, which may differ from submitted tasks if some are rejected.

Definition at line 123 of file thread_pool_metrics.h.

123{0};

Referenced by record_enqueue(), reset(), snapshot(), and tasks_enqueued().


The documentation for this class was generated from the following file: