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

Configuration for enhanced work-stealing with NUMA awareness. More...

#include <enhanced_work_stealing_config.h>

Collaboration diagram for kcenon::thread::enhanced_work_stealing_config:
Collaboration graph

Static Public Member Functions

static auto default_config () -> enhanced_work_stealing_config
 Create a default configuration (disabled)
 
static auto numa_optimized () -> enhanced_work_stealing_config
 Create a configuration optimized for NUMA systems.
 
static auto locality_optimized () -> enhanced_work_stealing_config
 Create a configuration optimized for cache locality.
 
static auto batch_optimized () -> enhanced_work_stealing_config
 Create a configuration for aggressive batch stealing.
 
static auto hierarchical_numa () -> enhanced_work_stealing_config
 Create a configuration for hierarchical NUMA systems.
 

Public Attributes

bool enabled = false
 Master switch for work-stealing (default: disabled)
 
enhanced_steal_policy policy = enhanced_steal_policy::adaptive
 Policy for selecting steal victims (default: adaptive)
 
bool numa_aware = false
 Enable NUMA-aware stealing (default: disabled)
 
double numa_penalty_factor = 2.0
 Cost multiplier for cross-NUMA node steals (default: 2.0) Higher values make cross-node steals less likely.
 
bool prefer_same_node = true
 Prefer workers on the same NUMA node (default: true)
 
std::size_t min_steal_batch = 1
 Minimum number of jobs to steal in a batch (default: 1)
 
std::size_t max_steal_batch = 4
 Maximum number of jobs to steal in a batch (default: 4)
 
bool adaptive_batch_size = true
 Dynamically adjust batch size based on victim's queue depth (default: true)
 
std::size_t max_steal_attempts = 3
 Maximum number of steal attempts per round (default: 3)
 
std::size_t max_consecutive_failures = 10
 Maximum consecutive failures before yielding (default: 10)
 
steal_backoff_strategy backoff_strategy = steal_backoff_strategy::exponential
 Backoff strategy between failed steal attempts (default: exponential)
 
std::chrono::microseconds initial_backoff {50}
 Initial backoff delay (default: 50 microseconds)
 
std::chrono::microseconds max_backoff {1000}
 Maximum backoff delay cap (default: 1000 microseconds)
 
double backoff_multiplier = 2.0
 Backoff multiplier for exponential strategy (default: 2.0)
 
bool track_locality = false
 Enable work affinity tracking between workers (default: disabled)
 
std::size_t locality_history_size = 16
 Size of cooperation history for locality tracking (default: 16)
 
bool collect_statistics = false
 Enable statistics collection (default: disabled)
 

Detailed Description

Configuration for enhanced work-stealing with NUMA awareness.

This structure provides comprehensive configuration for the numa_work_stealer class, including victim selection policies, NUMA optimization, batch stealing, backoff strategies, and statistics collection.

Usage Example

config.enabled = true;
config.numa_aware = true;
config.prefer_same_node = true;
config.collect_statistics = true;
numa_work_stealer stealer(workers, config);
NUMA-aware work stealer with enhanced victim selection policies.
@ numa_aware
Prefer workers on the same NUMA node (reduces cross-node traffic)
Configuration for enhanced work-stealing with NUMA awareness.
bool collect_statistics
Enable statistics collection (default: disabled)
bool numa_aware
Enable NUMA-aware stealing (default: disabled)
bool enabled
Master switch for work-stealing (default: disabled)
enhanced_steal_policy policy
Policy for selecting steal victims (default: adaptive)
bool prefer_same_node
Prefer workers on the same NUMA node (default: true)

Configuration Categories

  • Enable/Disable: Master switch for work stealing
  • Policy: Victim selection strategy
  • NUMA: Cross-node steal penalty and preferences
  • Batch: Multi-job stealing configuration
  • Attempts: Retry and failure limits
  • Backoff: Delay strategy between attempts
  • Locality: Work affinity tracking
  • Statistics: Performance metrics collection

Definition at line 53 of file enhanced_work_stealing_config.h.

Member Function Documentation

◆ batch_optimized()

static auto kcenon::thread::enhanced_work_stealing_config::batch_optimized ( ) -> enhanced_work_stealing_config
inlinestatic

Create a configuration for aggressive batch stealing.

Returns
Configuration with large batch sizes

Definition at line 187 of file enhanced_work_stealing_config.h.

188 {
189 enhanced_work_stealing_config config;
190 config.enabled = true;
191 config.policy = enhanced_steal_policy::adaptive;
192 config.min_steal_batch = 2;
193 config.max_steal_batch = 8;
194 config.adaptive_batch_size = true;
195 return config;
196 }
@ adaptive
Select based on queue sizes (best for uneven loads)

References kcenon::thread::adaptive, adaptive_batch_size, enabled, max_steal_batch, min_steal_batch, and policy.

◆ default_config()

static auto kcenon::thread::enhanced_work_stealing_config::default_config ( ) -> enhanced_work_stealing_config
inlinestatic

Create a default configuration (disabled)

Returns
Default configuration with work stealing disabled

Definition at line 147 of file enhanced_work_stealing_config.h.

148 {
149 return enhanced_work_stealing_config{};
150 }

◆ hierarchical_numa()

static auto kcenon::thread::enhanced_work_stealing_config::hierarchical_numa ( ) -> enhanced_work_stealing_config
inlinestatic

Create a configuration for hierarchical NUMA systems.

Returns
Configuration with hierarchical victim selection

Definition at line 202 of file enhanced_work_stealing_config.h.

203 {
204 enhanced_work_stealing_config config;
205 config.enabled = true;
207 config.numa_aware = true;
208 config.prefer_same_node = true;
209 config.numa_penalty_factor = 3.0;
210 config.track_locality = true;
211 config.collect_statistics = true;
212 return config;
213 }
@ hierarchical
NUMA node first, then random within node (large NUMA systems)

References collect_statistics, enabled, kcenon::thread::hierarchical, numa_aware, numa_penalty_factor, policy, prefer_same_node, and track_locality.

◆ locality_optimized()

static auto kcenon::thread::enhanced_work_stealing_config::locality_optimized ( ) -> enhanced_work_stealing_config
inlinestatic

Create a configuration optimized for cache locality.

Returns
Configuration with locality tracking enabled

Definition at line 172 of file enhanced_work_stealing_config.h.

173 {
174 enhanced_work_stealing_config config;
175 config.enabled = true;
177 config.track_locality = true;
178 config.locality_history_size = 32;
179 config.collect_statistics = true;
180 return config;
181 }
@ locality_aware
Prefer workers with recent cooperation history (cache affinity)

References collect_statistics, enabled, kcenon::thread::locality_aware, locality_history_size, policy, and track_locality.

◆ numa_optimized()

static auto kcenon::thread::enhanced_work_stealing_config::numa_optimized ( ) -> enhanced_work_stealing_config
inlinestatic

Create a configuration optimized for NUMA systems.

Returns
Configuration with NUMA awareness enabled

Definition at line 156 of file enhanced_work_stealing_config.h.

157 {
158 enhanced_work_stealing_config config;
159 config.enabled = true;
160 config.policy = enhanced_steal_policy::numa_aware;
161 config.numa_aware = true;
162 config.prefer_same_node = true;
163 config.numa_penalty_factor = 2.0;
164 config.collect_statistics = true;
165 return config;
166 }

References collect_statistics, enabled, kcenon::thread::numa_aware, numa_aware, numa_penalty_factor, policy, and prefer_same_node.

Referenced by kcenon::thread::numa_thread_pool::enable_numa_work_stealing().

Here is the caller graph for this function:

Member Data Documentation

◆ adaptive_batch_size

bool kcenon::thread::enhanced_work_stealing_config::adaptive_batch_size = true

Dynamically adjust batch size based on victim's queue depth (default: true)

Definition at line 94 of file enhanced_work_stealing_config.h.

Referenced by batch_optimized().

◆ backoff_multiplier

double kcenon::thread::enhanced_work_stealing_config::backoff_multiplier = 2.0

Backoff multiplier for exponential strategy (default: 2.0)

Definition at line 120 of file enhanced_work_stealing_config.h.

Referenced by kcenon::thread::numa_work_stealer::numa_work_stealer(), and kcenon::thread::numa_work_stealer::set_config().

◆ backoff_strategy

steal_backoff_strategy kcenon::thread::enhanced_work_stealing_config::backoff_strategy = steal_backoff_strategy::exponential

Backoff strategy between failed steal attempts (default: exponential)

Definition at line 111 of file enhanced_work_stealing_config.h.

Referenced by kcenon::thread::numa_work_stealer::numa_work_stealer(), and kcenon::thread::numa_work_stealer::set_config().

◆ collect_statistics

bool kcenon::thread::enhanced_work_stealing_config::collect_statistics = false

Enable statistics collection (default: disabled)

Definition at line 137 of file enhanced_work_stealing_config.h.

Referenced by hierarchical_numa(), locality_optimized(), and numa_optimized().

◆ enabled

◆ initial_backoff

std::chrono::microseconds kcenon::thread::enhanced_work_stealing_config::initial_backoff {50}

Initial backoff delay (default: 50 microseconds)

Definition at line 114 of file enhanced_work_stealing_config.h.

114{50};

Referenced by kcenon::thread::numa_work_stealer::numa_work_stealer(), and kcenon::thread::numa_work_stealer::set_config().

◆ locality_history_size

std::size_t kcenon::thread::enhanced_work_stealing_config::locality_history_size = 16

Size of cooperation history for locality tracking (default: 16)

Definition at line 130 of file enhanced_work_stealing_config.h.

Referenced by locality_optimized(), and kcenon::thread::numa_work_stealer::set_config().

◆ max_backoff

std::chrono::microseconds kcenon::thread::enhanced_work_stealing_config::max_backoff {1000}

Maximum backoff delay cap (default: 1000 microseconds)

Definition at line 117 of file enhanced_work_stealing_config.h.

117{1000};

Referenced by kcenon::thread::numa_work_stealer::numa_work_stealer(), and kcenon::thread::numa_work_stealer::set_config().

◆ max_consecutive_failures

std::size_t kcenon::thread::enhanced_work_stealing_config::max_consecutive_failures = 10

Maximum consecutive failures before yielding (default: 10)

Definition at line 104 of file enhanced_work_stealing_config.h.

◆ max_steal_attempts

std::size_t kcenon::thread::enhanced_work_stealing_config::max_steal_attempts = 3

Maximum number of steal attempts per round (default: 3)

Definition at line 101 of file enhanced_work_stealing_config.h.

◆ max_steal_batch

std::size_t kcenon::thread::enhanced_work_stealing_config::max_steal_batch = 4

Maximum number of jobs to steal in a batch (default: 4)

Definition at line 91 of file enhanced_work_stealing_config.h.

Referenced by batch_optimized().

◆ min_steal_batch

std::size_t kcenon::thread::enhanced_work_stealing_config::min_steal_batch = 1

Minimum number of jobs to steal in a batch (default: 1)

Definition at line 88 of file enhanced_work_stealing_config.h.

Referenced by batch_optimized().

◆ numa_aware

bool kcenon::thread::enhanced_work_stealing_config::numa_aware = false

Enable NUMA-aware stealing (default: disabled)

Definition at line 74 of file enhanced_work_stealing_config.h.

Referenced by hierarchical_numa(), kcenon::thread::numa_thread_pool::is_numa_work_stealing_enabled(), and numa_optimized().

◆ numa_penalty_factor

double kcenon::thread::enhanced_work_stealing_config::numa_penalty_factor = 2.0

Cost multiplier for cross-NUMA node steals (default: 2.0) Higher values make cross-node steals less likely.

Definition at line 78 of file enhanced_work_stealing_config.h.

Referenced by hierarchical_numa(), and numa_optimized().

◆ policy

enhanced_steal_policy kcenon::thread::enhanced_work_stealing_config::policy = enhanced_steal_policy::adaptive

Policy for selecting steal victims (default: adaptive)

Definition at line 67 of file enhanced_work_stealing_config.h.

Referenced by batch_optimized(), hierarchical_numa(), locality_optimized(), and numa_optimized().

◆ prefer_same_node

bool kcenon::thread::enhanced_work_stealing_config::prefer_same_node = true

Prefer workers on the same NUMA node (default: true)

Definition at line 81 of file enhanced_work_stealing_config.h.

Referenced by hierarchical_numa(), and numa_optimized().

◆ track_locality

bool kcenon::thread::enhanced_work_stealing_config::track_locality = false

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