public void AddTaskLoad( ParallelProcessingLoadBalancer.WorkerState worker, ParallelProcessingLoadBalancer.TaskState task) { if (task.Measured) { worker.MeasuredTasksScheduled++; worker.ScheduledSize += task.Size; } else { worker.UnmeasuredTasksScheduled++; } }
public void RemoveTaskLoad( ParallelProcessingLoadBalancer.WorkerState workerState, ParallelProcessingLoadBalancer.TaskState taskState) { if (taskState.Measured) { workerState.MeasuredTasksScheduled--; workerState.ScheduledSize -= taskState.Size; } else { workerState.UnmeasuredTasksScheduled--; } }
public long EstimateWorkerLoad(ParallelProcessingLoadBalancer.WorkerState workerState) { return(workerState.UnmeasuredTasksScheduled * 10 + workerState.ScheduledSize); }
public bool MayScheduleOn(ParallelProcessingLoadBalancer.WorkerState leastLoadedWorkerState) { return(leastLoadedWorkerState.UnmeasuredTasksScheduled < _maxUnmeasuredTasksPerWorker && leastLoadedWorkerState.ScheduledSize < _maxScheduledSizePerWorker); }