|
Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
|
Configuration for enhanced work-stealing with NUMA awareness. More...
#include <enhanced_work_stealing_config.h>

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) | |
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.
Definition at line 53 of file enhanced_work_stealing_config.h.
|
inlinestatic |
Create a configuration for aggressive batch stealing.
Definition at line 187 of file enhanced_work_stealing_config.h.
References kcenon::thread::adaptive, adaptive_batch_size, enabled, max_steal_batch, min_steal_batch, and policy.
|
inlinestatic |
Create a default configuration (disabled)
Definition at line 147 of file enhanced_work_stealing_config.h.
|
inlinestatic |
Create a configuration for hierarchical NUMA systems.
Definition at line 202 of file enhanced_work_stealing_config.h.
References collect_statistics, enabled, kcenon::thread::hierarchical, numa_aware, numa_penalty_factor, policy, prefer_same_node, and track_locality.
|
inlinestatic |
Create a configuration optimized for cache locality.
Definition at line 172 of file enhanced_work_stealing_config.h.
References collect_statistics, enabled, kcenon::thread::locality_aware, locality_history_size, policy, and track_locality.
|
inlinestatic |
Create a configuration optimized for NUMA systems.
Definition at line 156 of file enhanced_work_stealing_config.h.
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().

| 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().
| 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().
| 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().
| 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().
| bool kcenon::thread::enhanced_work_stealing_config::enabled = false |
Master switch for work-stealing (default: disabled)
Definition at line 60 of file enhanced_work_stealing_config.h.
Referenced by batch_optimized(), kcenon::thread::numa_thread_pool::configure_numa_work_stealing(), kcenon::thread::numa_thread_pool::disable_numa_work_stealing(), hierarchical_numa(), kcenon::thread::numa_thread_pool::is_numa_work_stealing_enabled(), locality_optimized(), and numa_optimized().
| 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.
Referenced by kcenon::thread::numa_work_stealer::numa_work_stealer(), and kcenon::thread::numa_work_stealer::set_config().
| 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().
| 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.
Referenced by kcenon::thread::numa_work_stealer::numa_work_stealer(), and kcenon::thread::numa_work_stealer::set_config().
| 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.
| 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.
| 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().
| 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().
| 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().
| 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().
| 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().
| 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().
| bool kcenon::thread::enhanced_work_stealing_config::track_locality = false |
Enable work affinity tracking between workers (default: disabled)
Definition at line 127 of file enhanced_work_stealing_config.h.
Referenced by hierarchical_numa(), locality_optimized(), kcenon::thread::numa_work_stealer::numa_work_stealer(), kcenon::thread::numa_work_stealer::record_steal(), and kcenon::thread::numa_work_stealer::set_config().