Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
kcenon::monitoring::performance_profiler Class Reference

Performance profiler for code sections. More...

#include <performance_monitor.h>

Collaboration diagram for kcenon::monitoring::performance_profiler:
Collaboration graph

Classes

struct  profile_data
 

Public Member Functions

common::Result< bool > record_sample (const std::string &operation_name, std::chrono::nanoseconds duration, bool success=true)
 Record a performance sample.
 
common::Result< performance_metricsget_metrics (const std::string &operation_name) const
 Get performance metrics for an operation.
 
std::vector< performance_metricsget_all_metrics () const
 Get all performance metrics.
 
common::Result< bool > clear_samples (const std::string &operation_name)
 Clear samples for an operation.
 
void clear_all_samples ()
 Clear all samples.
 
void set_enabled (bool enabled)
 Enable or disable profiling.
 
bool is_enabled () const
 Check if profiling is enabled.
 
void set_max_samples (std::size_t max_samples)
 Set maximum samples per operation.
 
void set_lock_free_mode (bool enable)
 Enable lock-free collection path (Sprint 3-4)
 
bool is_lock_free_mode () const
 Check if lock-free mode is enabled.
 

Private Attributes

std::unordered_map< std::string, std::unique_ptr< profile_data > > profiles_
 
std::shared_mutex profiles_mutex_
 
std::atomic< bool > enabled_ {true}
 
std::size_t max_samples_per_operation_ {10000}
 
std::size_t max_profiles_ {10000}
 
std::atomic< bool > use_lock_free_path_ {false}
 

Detailed Description

Performance profiler for code sections.

Thread Safety:
Thread-safe. All public methods can be called concurrently.
  • Uses std::shared_mutex for read/write synchronization on profiles
  • Uses per-profile std::mutex for sample data protection
  • Uses std::atomic for counters and flags

Definition at line 137 of file performance_monitor.h.

Member Function Documentation

◆ clear_all_samples()

void kcenon::monitoring::performance_profiler::clear_all_samples ( )

◆ clear_samples()

common::Result< bool > kcenon::monitoring::performance_profiler::clear_samples ( const std::string & operation_name)

◆ get_all_metrics()

std::vector< performance_metrics > kcenon::monitoring::performance_profiler::get_all_metrics ( ) const

◆ get_metrics()

common::Result< performance_metrics > kcenon::monitoring::performance_profiler::get_metrics ( const std::string & operation_name) const

Get performance metrics for an operation.

Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/core/performance_monitor.h.

Referenced by kcenon::monitoring::performance_benchmark::run().

Here is the caller graph for this function:

◆ is_enabled()

bool kcenon::monitoring::performance_profiler::is_enabled ( ) const
inline

Check if profiling is enabled.

Returns
True if profiling is currently enabled
Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/core/performance_monitor.h.

Definition at line 201 of file performance_monitor.h.

201{ return enabled_; }

References enabled_.

◆ is_lock_free_mode()

bool kcenon::monitoring::performance_profiler::is_lock_free_mode ( ) const
inline

Check if lock-free mode is enabled.

Returns
True if lock-free collection path is active
Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/core/performance_monitor.h.

Definition at line 228 of file performance_monitor.h.

228 {
229 return use_lock_free_path_;
230 }

References use_lock_free_path_.

◆ record_sample()

common::Result< bool > kcenon::monitoring::performance_profiler::record_sample ( const std::string & operation_name,
std::chrono::nanoseconds duration,
bool success = true )

◆ set_enabled()

void kcenon::monitoring::performance_profiler::set_enabled ( bool enabled)
inline

Enable or disable profiling.

Parameters
enabledTrue to enable profiling, false to disable
Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/core/performance_monitor.h.

Definition at line 195 of file performance_monitor.h.

195{ enabled_ = enabled; }

References enabled_.

Referenced by kcenon::monitoring::performance_monitor::set_enabled().

Here is the caller graph for this function:

◆ set_lock_free_mode()

void kcenon::monitoring::performance_profiler::set_lock_free_mode ( bool enable)
inline

Enable lock-free collection path (Sprint 3-4)

When enabled, uses thread-local buffers for lock-free metric collection. This provides significantly better performance under high concurrency.

Parameters
enabletrue to enable lock-free path, false for legacy path
Note
Lock-free path is experimental in Sprint 3-4
Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/core/performance_monitor.h.

Definition at line 220 of file performance_monitor.h.

220 {
221 use_lock_free_path_ = enable;
222 }

References use_lock_free_path_.

◆ set_max_samples()

void kcenon::monitoring::performance_profiler::set_max_samples ( std::size_t max_samples)
inline

Set maximum samples per operation.

Parameters
max_samplesMaximum number of samples to retain per operation
Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/core/performance_monitor.h.

Definition at line 207 of file performance_monitor.h.

207 {
208 max_samples_per_operation_ = max_samples;
209 }

References max_samples_per_operation_.

Member Data Documentation

◆ enabled_

std::atomic<bool> kcenon::monitoring::performance_profiler::enabled_ {true}
private

◆ max_profiles_

std::size_t kcenon::monitoring::performance_profiler::max_profiles_ {10000}
private

◆ max_samples_per_operation_

std::size_t kcenon::monitoring::performance_profiler::max_samples_per_operation_ {10000}
private

◆ profiles_

std::unordered_map<std::string, std::unique_ptr<profile_data> > kcenon::monitoring::performance_profiler::profiles_
private

◆ profiles_mutex_

std::shared_mutex kcenon::monitoring::performance_profiler::profiles_mutex_
mutableprivate

◆ use_lock_free_path_

std::atomic<bool> kcenon::monitoring::performance_profiler::use_lock_free_path_ {false}
private

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