Nebula
Orchestrator

AssignmentPlan

What a policy would do with a hypothetical number of workers: which containers each of them would hold, and how loaded that would leave them.

generated from the sources
public sealed class AssignmentPlan

What a policy would do with a hypothetical number of workers: which containers each of them would hold, and how loaded that would leave them. The scaler compares the plan at N, N+1 and N-1 instead of guessing from an average (WorkerScaler).

Fields

WorkerCount

public int WorkerCount;

How many workers the plan was drawn for.

Containers

public readonly Dictionary<string, List<string>> Containers = new Dictionary<string, List<string>>(StringComparer.Ordinal);

Synthetic worker id -> the containers it would hold.

Load

public readonly Dictionary<string, float> Load = new Dictionary<string, float>(StringComparer.Ordinal);

Synthetic worker id -> predicted utilization (the sum of its containers' attributed load).

Peak

public float Peak;

The busiest worker's predicted utilization.

Mean

public float Mean;

Mean predicted utilization across the plan's workers.

PeakWorker

public string PeakWorker = "";

The busiest worker in the plan.

HeaviestContainer

public string HeaviestContainer = "";

The heaviest single container on the busiest worker: the one to blame when splitting does not help.

HeaviestUtilization

public float HeaviestUtilization;

That container's attributed utilization.

Unassigned

public int Unassigned;

Containers the policy left unassigned (a policy that ignores runtime containers, say).

Moves

public readonly List<AssignmentMove> Moves = new List<AssignmentMove>();

What the policy did in the dry run and why, when it explains itself (IExplainsAssignment); empty for a policy that does not. This is what makes a predicted layout readable on the dashboard rather than a bare list of container ids.

On this page