The heart of the placement problem is a mapping problem. We are given a {@link Task}, (which in the general case consists of a set of {@link SubTask}s), and we are also given a number of idle {@link Executor}s, and our goal is to find a mapping from the former to the latter, which determines where each {@link SubTask} gets executed.
This mapping is done under two constraints:
We first fold the former constraint into the problem definition. That is, we now consider a set of {@link SubTask}s that need to be co-located as a single {@link WorkChunk}. Similarly, we consider a set of all {@link Executor}s from the same node as {@link ExecutorChunk}. Now, the problem becomes the weighted matching problem from {@link WorkChunk} to {@link ExecutorChunk}.
An instance of {@link MappingWorksheet} captures a problem definition, plus which{@link ExecutorChunk} and {@link WorkChunk} are compatible. The purpose of this class(and {@link ExecutorChunk} and {@link WorkChunk}) are to expose a lot of convenience methods to assist various algorithms that produce the solution of this mapping problem, which is represented as {@link Mapping}. @see LoadBalancer#map(Task,MappingWorksheet) @author Kohsuke Kawaguchi
|
|
|
|