Class NumaScheduler
- Namespace
- DotCompute.Backends.CPU.Threading.NUMA
- Assembly
- DotCompute.Backends.CPU.dll
NUMA-aware task scheduling and work distribution.
public sealed class NumaScheduler : IDisposable
- Inheritance
-
NumaScheduler
- Implements
- Inherited Members
- Extension Methods
Constructors
NumaScheduler(NumaTopology, NumaAffinityManager?)
Initializes a new instance of the NumaScheduler class.
public NumaScheduler(NumaTopology topology, NumaAffinityManager? affinityManager = null)
Parameters
topologyNumaTopologyNUMA topology information.
affinityManagerNumaAffinityManagerAffinity manager for thread binding.
Methods
Dispose()
Disposes of the scheduler and stops all worker tasks.
public void Dispose()
DrainAsync(TimeSpan)
Drains all pending tasks and waits for completion.
public Task<bool> DrainAsync(TimeSpan timeout)
Parameters
timeoutTimeSpanMaximum time to wait.
Returns
GetStatistics()
Gets scheduling statistics for monitoring.
public SchedulingStatistics GetStatistics()
Returns
- SchedulingStatistics
Scheduling statistics.
ScheduleOnNodeAsync(Action, int, TaskPriority)
Schedules a task to run on a specific NUMA node.
public Task ScheduleOnNodeAsync(Action action, int nodeId, TaskPriority priority = TaskPriority.Normal)
Parameters
actionActionAction to execute.
nodeIdintTarget NUMA node ID.
priorityTaskPriorityTask priority.
Returns
- Task
Task representing the scheduled work.
ScheduleOnNodeAsync<T>(Func<Task<T>>, int, TaskPriority)
Schedules an async task to run on a specific NUMA node.
public Task<T> ScheduleOnNodeAsync<T>(Func<Task<T>> asyncFunction, int nodeId, TaskPriority priority = TaskPriority.Normal)
Parameters
asyncFunctionFunc<Task<T>>Async function to execute.
nodeIdintTarget NUMA node ID.
priorityTaskPriorityTask priority.
Returns
- Task<T>
Task representing the scheduled work.
Type Parameters
TReturn type.
ScheduleOnNodeAsync<T>(Func<T>, int, TaskPriority)
Schedules a task to run on a specific NUMA node.
public Task<T> ScheduleOnNodeAsync<T>(Func<T> function, int nodeId, TaskPriority priority = TaskPriority.Normal)
Parameters
functionFunc<T>Function to execute.
nodeIdintTarget NUMA node ID.
priorityTaskPriorityTask priority.
Returns
- Task<T>
Task representing the scheduled work.
Type Parameters
TReturn type.
ScheduleOptimalAsync(Action, IEnumerable<int>?, TaskPriority)
Schedules a task on the optimal node based on processor affinity.
public Task ScheduleOptimalAsync(Action action, IEnumerable<int>? processorIds = null, TaskPriority priority = TaskPriority.Normal)
Parameters
actionActionAction to execute.
processorIdsIEnumerable<int>Preferred processor IDs.
priorityTaskPriorityTask priority.
Returns
- Task
Task representing the scheduled work.
ScheduleOptimalAsync<T>(Func<T>, IEnumerable<int>?, TaskPriority)
Schedules a task on the optimal node based on processor affinity.
public Task<T> ScheduleOptimalAsync<T>(Func<T> function, IEnumerable<int>? processorIds = null, TaskPriority priority = TaskPriority.Normal)
Parameters
functionFunc<T>Function to execute.
processorIdsIEnumerable<int>Preferred processor IDs.
priorityTaskPriorityTask priority.
Returns
- Task<T>
Task representing the scheduled work.
Type Parameters
TReturn type.
ScheduleParallelAsync(IEnumerable<Action>, LoadBalancingStrategy)
Schedules tasks in parallel across multiple NUMA nodes.
public Task ScheduleParallelAsync(IEnumerable<Action> actions, LoadBalancingStrategy strategy = LoadBalancingStrategy.RoundRobin)
Parameters
actionsIEnumerable<Action>Actions to execute in parallel.
strategyLoadBalancingStrategyLoad balancing strategy.
Returns
- Task
Task representing all parallel work.