Table of Contents

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

topology NumaTopology

NUMA topology information.

affinityManager NumaAffinityManager

Affinity 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

timeout TimeSpan

Maximum time to wait.

Returns

Task<bool>

True if all tasks completed within timeout.

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

action Action

Action to execute.

nodeId int

Target NUMA node ID.

priority TaskPriority

Task 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

asyncFunction Func<Task<T>>

Async function to execute.

nodeId int

Target NUMA node ID.

priority TaskPriority

Task priority.

Returns

Task<T>

Task representing the scheduled work.

Type Parameters

T

Return 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

function Func<T>

Function to execute.

nodeId int

Target NUMA node ID.

priority TaskPriority

Task priority.

Returns

Task<T>

Task representing the scheduled work.

Type Parameters

T

Return 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

action Action

Action to execute.

processorIds IEnumerable<int>

Preferred processor IDs.

priority TaskPriority

Task 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

function Func<T>

Function to execute.

processorIds IEnumerable<int>

Preferred processor IDs.

priority TaskPriority

Task priority.

Returns

Task<T>

Task representing the scheduled work.

Type Parameters

T

Return type.

ScheduleParallelAsync(IEnumerable<Action>, LoadBalancingStrategy)

Schedules tasks in parallel across multiple NUMA nodes.

public Task ScheduleParallelAsync(IEnumerable<Action> actions, LoadBalancingStrategy strategy = LoadBalancingStrategy.RoundRobin)

Parameters

actions IEnumerable<Action>

Actions to execute in parallel.

strategy LoadBalancingStrategy

Load balancing strategy.

Returns

Task

Task representing all parallel work.