PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
kcenon::pacs::monitoring::pool_counters Struct Reference

Metrics for tracking object pool usage. More...

#include <pacs_metrics.h>

Collaboration diagram for kcenon::pacs::monitoring::pool_counters:
Collaboration graph

Public Member Functions

double hit_ratio () const noexcept
 Calculate hit ratio (0.0 to 1.0)
 
void record_acquisition (bool was_pool_hit) noexcept
 Record a pool acquisition (hit or miss)
 
void record_release () noexcept
 Record a pool release.
 
void set_pool_size (std::uint32_t size) noexcept
 Update current pool size.
 
void reset () noexcept
 Reset all counters to zero.
 

Public Attributes

std::atomic< std::uint64_t > total_acquisitions {0}
 
std::atomic< std::uint64_t > pool_hits {0}
 
std::atomic< std::uint64_t > pool_misses {0}
 
std::atomic< std::uint64_t > total_releases {0}
 
std::atomic< std::uint32_t > current_pool_size {0}
 

Detailed Description

Metrics for tracking object pool usage.

Thread-safe counters for tracking pool hit/miss ratios and allocation statistics to monitor memory pool effectiveness.

See also
Issue #315, #319 - ObjectPool Memory Management

Definition at line 278 of file pacs_metrics.h.

Member Function Documentation

◆ hit_ratio()

double kcenon::pacs::monitoring::pool_counters::hit_ratio ( ) const
inlinenodiscardnoexcept

Calculate hit ratio (0.0 to 1.0)

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/monitoring/pacs_metrics.h.

Definition at line 286 of file pacs_metrics.h.

286 {
287 const auto total = total_acquisitions.load(std::memory_order_relaxed);
288 if (total == 0) {
289 return 0.0;
290 }
291 return static_cast<double>(pool_hits.load(std::memory_order_relaxed))
292 / static_cast<double>(total);
293 }
std::atomic< std::uint64_t > total_acquisitions
std::atomic< std::uint64_t > pool_hits

References pool_hits, and total_acquisitions.

◆ record_acquisition()

void kcenon::pacs::monitoring::pool_counters::record_acquisition ( bool was_pool_hit)
inlinenoexcept

Record a pool acquisition (hit or miss)

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/monitoring/pacs_metrics.h.

Definition at line 296 of file pacs_metrics.h.

296 {
297 total_acquisitions.fetch_add(1, std::memory_order_relaxed);
298 if (was_pool_hit) {
299 pool_hits.fetch_add(1, std::memory_order_relaxed);
300 } else {
301 pool_misses.fetch_add(1, std::memory_order_relaxed);
302 }
303 }
std::atomic< std::uint64_t > pool_misses

References pool_hits, pool_misses, and total_acquisitions.

◆ record_release()

void kcenon::pacs::monitoring::pool_counters::record_release ( )
inlinenoexcept

Record a pool release.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/monitoring/pacs_metrics.h.

Definition at line 306 of file pacs_metrics.h.

306 {
307 total_releases.fetch_add(1, std::memory_order_relaxed);
308 }
std::atomic< std::uint64_t > total_releases

References total_releases.

◆ reset()

void kcenon::pacs::monitoring::pool_counters::reset ( )
inlinenoexcept

Reset all counters to zero.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/monitoring/pacs_metrics.h.

Definition at line 316 of file pacs_metrics.h.

316 {
317 total_acquisitions.store(0, std::memory_order_relaxed);
318 pool_hits.store(0, std::memory_order_relaxed);
319 pool_misses.store(0, std::memory_order_relaxed);
320 total_releases.store(0, std::memory_order_relaxed);
321 current_pool_size.store(0, std::memory_order_relaxed);
322 }
std::atomic< std::uint32_t > current_pool_size

References current_pool_size, pool_hits, pool_misses, total_acquisitions, and total_releases.

Referenced by kcenon::pacs::monitoring::pacs_metrics::reset().

Here is the caller graph for this function:

◆ set_pool_size()

void kcenon::pacs::monitoring::pool_counters::set_pool_size ( std::uint32_t size)
inlinenoexcept

Update current pool size.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/monitoring/pacs_metrics.h.

Definition at line 311 of file pacs_metrics.h.

311 {
312 current_pool_size.store(size, std::memory_order_relaxed);
313 }

References current_pool_size.

Member Data Documentation

◆ current_pool_size

std::atomic<std::uint32_t> kcenon::pacs::monitoring::pool_counters::current_pool_size {0}

◆ pool_hits

std::atomic<std::uint64_t> kcenon::pacs::monitoring::pool_counters::pool_hits {0}

◆ pool_misses

std::atomic<std::uint64_t> kcenon::pacs::monitoring::pool_counters::pool_misses {0}

◆ total_acquisitions

std::atomic<std::uint64_t> kcenon::pacs::monitoring::pool_counters::total_acquisitions {0}

◆ total_releases

std::atomic<std::uint64_t> kcenon::pacs::monitoring::pool_counters::total_releases {0}

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