# Functions

ComputeAvgPackingEfficiency calculate average packing efficiency, given packing efficiencies for individual nodes.
ComputePackingEfficiencies calculates utilization for all provided nodes, given the new reservation.
EmptyPackingResult returns a representation of the worst possible packing result.
SparkBinPack places the driver first and calls distributeExecutors function to place executors.
WorstAvgPackingEfficiency returns a representation of a failed bin packing.

# Variables

AzAwareTightlyPack is a SparkBinPackFunction that tries to put the driver pod to as prior nodes as possible before trying to tightly pack executors while also trying to ensure that we can fit everything in a single AZ.
DistributeEvenly is a SparkBinPackFunction that tries to put the driver pod to as prior nodes as possible before trying to distribute executors evenly.
MinimalFragmentation is a SparkBinPackFunction that tries to minimize spark app fragmentation across the cluster.
SingleAZMinimalFragmentation attempts to use as few nodes as possible to schedule executors when multiple nodes can be used to fit n executors, it will pick the node with the least available resources that still fit n executors, if there are multiple, it will prefer the higher priority node.
SingleAZTightlyPack is a SparkBinPackFunction that tries to put the driver pod to as prior nodes as possible before trying to tightly pack executors while also ensuring that we can fit everything in a single AZ.
TightlyPack is a SparkBinPackFunction that tries to put the driver pod to as prior nodes as possible before trying to tightly pack executors.

# Structs

AvgPackingEfficiency represents result packing efficiency per resource type for a group of nodes.
PackingEfficiency represents result packing efficiency per resource type for one node.
PackingResult is a result of one binpacking operation.

# Type aliases

GenericBinPackFunction is a function type for assigning nodes to a batch of equivalent pods.
SparkBinPackFunction is a function type for assigning nodes to spark drivers and executors.