|
Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
|
Configuration for autoscaling behavior. More...
#include <autoscaling_policy.h>

Classes | |
| struct | scale_down_config |
| Configuration for scale-down triggers. More... | |
| struct | scale_up_config |
| Configuration for scale-up triggers. More... | |
Public Types | |
| enum class | mode { disabled , manual , automatic } |
| Autoscaling mode. More... | |
Public Member Functions | |
| auto | is_valid () const -> bool |
| Validates the policy configuration. | |
Public Attributes | |
| std::size_t | min_workers = 1 |
| Minimum number of workers (never scale below this) | |
| std::size_t | max_workers = std::thread::hardware_concurrency() |
| Maximum number of workers (never scale above this) | |
| scale_up_config | scale_up |
| Scale-up trigger configuration. | |
| scale_down_config | scale_down |
| Scale-down trigger configuration. | |
| std::size_t | scale_up_increment = 1 |
| Number of workers to add per scale-up event. | |
| std::size_t | scale_down_increment = 1 |
| Number of workers to remove per scale-down event. | |
| double | scale_up_factor = 1.5 |
| Multiplicative factor for scaling (used if use_multiplicative_scaling is true) | |
| bool | use_multiplicative_scaling = false |
| Whether to use multiplicative scaling instead of additive. | |
| std::chrono::seconds | scale_up_cooldown {30} |
| Minimum time between scale-up events. | |
| std::chrono::seconds | scale_down_cooldown {60} |
| Minimum time between scale-down events. | |
| std::chrono::milliseconds | sample_interval {1000} |
| Interval between metric samples. | |
| std::size_t | samples_for_decision = 5 |
| Number of samples to aggregate before making a decision. | |
| mode | scaling_mode = mode::disabled |
| Autoscaling mode. | |
| std::function< void(scaling_direction, scaling_reason, std::size_t, std::size_t)> | scaling_callback |
| Callback invoked on scaling events Parameters: direction, reason, from_count, to_count. | |
Configuration for autoscaling behavior.
This structure defines the policy for automatic scaling of thread pool workers. It includes thresholds for scaling up and down, cooldown periods, and sampling configuration.
Definition at line 51 of file autoscaling_policy.h.
|
strong |
Autoscaling mode.
| Enumerator | |
|---|---|
| disabled | No automatic scaling. |
| manual | Only scale on explicit trigger. |
| automatic | Fully automatic scaling. |
Definition at line 56 of file autoscaling_policy.h.
|
inlinenodiscard |
Validates the policy configuration.
Definition at line 176 of file autoscaling_policy.h.
References max_workers, min_workers, samples_for_decision, scale_down, scale_down_increment, scale_up, scale_up_increment, kcenon::thread::autoscaling_policy::scale_down_config::utilization_threshold, and kcenon::thread::autoscaling_policy::scale_up_config::utilization_threshold.
| std::size_t kcenon::thread::autoscaling_policy::max_workers = std::thread::hardware_concurrency() |
Maximum number of workers (never scale above this)
Definition at line 108 of file autoscaling_policy.h.
Referenced by kcenon::thread::autoscaler::can_scale_up(), and is_valid().
| std::size_t kcenon::thread::autoscaling_policy::min_workers = 1 |
Minimum number of workers (never scale below this)
Definition at line 105 of file autoscaling_policy.h.
Referenced by kcenon::thread::autoscaler::can_scale_down(), and is_valid().
| std::chrono::milliseconds kcenon::thread::autoscaling_policy::sample_interval {1000} |
| std::size_t kcenon::thread::autoscaling_policy::samples_for_decision = 5 |
Number of samples to aggregate before making a decision.
Definition at line 154 of file autoscaling_policy.h.
Referenced by is_valid().
| scale_down_config kcenon::thread::autoscaling_policy::scale_down |
Scale-down trigger configuration.
Definition at line 118 of file autoscaling_policy.h.
Referenced by is_valid().
| std::chrono::seconds kcenon::thread::autoscaling_policy::scale_down_cooldown {60} |
Minimum time between scale-down events.
Definition at line 144 of file autoscaling_policy.h.
Referenced by kcenon::thread::autoscaler::can_scale_down().
| std::size_t kcenon::thread::autoscaling_policy::scale_down_increment = 1 |
Number of workers to remove per scale-down event.
Definition at line 128 of file autoscaling_policy.h.
Referenced by is_valid().
| scale_up_config kcenon::thread::autoscaling_policy::scale_up |
Scale-up trigger configuration.
Definition at line 115 of file autoscaling_policy.h.
Referenced by is_valid().
| std::chrono::seconds kcenon::thread::autoscaling_policy::scale_up_cooldown {30} |
Minimum time between scale-up events.
Definition at line 141 of file autoscaling_policy.h.
Referenced by kcenon::thread::autoscaler::can_scale_up().
| double kcenon::thread::autoscaling_policy::scale_up_factor = 1.5 |
Multiplicative factor for scaling (used if use_multiplicative_scaling is true)
Definition at line 131 of file autoscaling_policy.h.
| std::size_t kcenon::thread::autoscaling_policy::scale_up_increment = 1 |
Number of workers to add per scale-up event.
Definition at line 125 of file autoscaling_policy.h.
Referenced by is_valid().
| std::function<void(scaling_direction, scaling_reason, std::size_t, std::size_t)> kcenon::thread::autoscaling_policy::scaling_callback |
Callback invoked on scaling events Parameters: direction, reason, from_count, to_count.
Definition at line 170 of file autoscaling_policy.h.
| mode kcenon::thread::autoscaling_policy::scaling_mode = mode::disabled |
Autoscaling mode.
Definition at line 161 of file autoscaling_policy.h.
| bool kcenon::thread::autoscaling_policy::use_multiplicative_scaling = false |
Whether to use multiplicative scaling instead of additive.
Definition at line 134 of file autoscaling_policy.h.