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

Configuration for autoscaling behavior. More...

#include <autoscaling_policy.h>

Collaboration diagram for kcenon::thread::autoscaling_policy:
Collaboration graph

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.
 

Detailed Description

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.

Design Principles

  • Scale-up is triggered by ANY threshold being exceeded (OR logic)
  • Scale-down requires ALL thresholds to be met (AND logic)
  • Cooldown periods prevent scaling oscillation
  • Multiple samples are aggregated before making decisions

Example Configuration

.min_workers = 2,
.max_workers = 16,
.scale_up = {
.utilization_threshold = 0.8,
.queue_depth_threshold = 100.0
},
};
Configuration for autoscaling behavior.
@ automatic
Fully automatic scaling.
See also
autoscaler

Definition at line 51 of file autoscaling_policy.h.

Member Enumeration Documentation

◆ mode

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.

57 {
58 disabled,
59 manual,
61 };
@ manual
Only scale on explicit trigger.

Member Function Documentation

◆ is_valid()

auto kcenon::thread::autoscaling_policy::is_valid ( ) const -> bool
inlinenodiscard

Validates the policy configuration.

Returns
true if valid, false otherwise.

Definition at line 176 of file autoscaling_policy.h.

177 {
178 if (min_workers == 0)
179 {
180 return false;
181 }
183 {
184 return false;
185 }
187 {
188 return false;
189 }
191 {
192 return false;
193 }
195 {
196 return false;
197 }
199 {
200 return false;
201 }
202 if (samples_for_decision == 0)
203 {
204 return false;
205 }
206 return true;
207 }
double utilization_threshold
Worker utilization threshold (0.0 - 1.0, scale down when below)
double utilization_threshold
Worker utilization threshold (0.0 - 1.0, scale up when exceeded)
scale_down_config scale_down
Scale-down trigger configuration.
scale_up_config scale_up
Scale-up trigger configuration.
std::size_t scale_down_increment
Number of workers to remove per scale-down event.
std::size_t samples_for_decision
Number of samples to aggregate before making a decision.
std::size_t scale_up_increment
Number of workers to add per scale-up event.
std::size_t min_workers
Minimum number of workers (never scale below this)
std::size_t max_workers
Maximum number of workers (never scale above this)

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.

Member Data Documentation

◆ max_workers

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().

◆ min_workers

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().

◆ sample_interval

std::chrono::milliseconds kcenon::thread::autoscaling_policy::sample_interval {1000}

Interval between metric samples.

Definition at line 151 of file autoscaling_policy.h.

151{1000};

◆ samples_for_decision

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

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().

◆ scale_down_cooldown

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.

144{60};

Referenced by kcenon::thread::autoscaler::can_scale_down().

◆ scale_down_increment

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

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().

◆ scale_up_cooldown

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.

141{30};

Referenced by kcenon::thread::autoscaler::can_scale_up().

◆ scale_up_factor

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.

◆ scale_up_increment

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().

◆ scaling_callback

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.

◆ scaling_mode

mode kcenon::thread::autoscaling_policy::scaling_mode = mode::disabled

Autoscaling mode.

Definition at line 161 of file autoscaling_policy.h.

◆ use_multiplicative_scaling

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.


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