Documentation
¶
Index ¶
- func AggregateNodeTypeAllocations(nodes []api.NodeInfo) []*nodeTypeAllocation
- func CalculatePriorityUpdate(resourceScarcity map[string]float64, previousReport *api.ClusterUsageReport, ...) map[string]float64
- func CalculateQueuesPriorityInfo(clusterPriorities map[string]map[string]float64, ...) map[*api.Queue]QueuePriorityInfo
- func CombineLeasedReportResourceByQueue(reports map[string]*api.ClusterLeasedReport) map[string]common.ComputeResources
- func CreateClusterLeasedReport(clusterId string, currentReport *api.ClusterLeasedReport, ...) *api.ClusterLeasedReport
- func CreateClusterSchedulingInfoReport(leaseRequest *api.LeaseRequest, nodeAllocations []*nodeTypeAllocation) *api.ClusterSchedulingInfoReport
- func FilterActiveClusterSchedulingInfoReports(reports map[string]*api.ClusterSchedulingInfoReport) map[string]*api.ClusterSchedulingInfoReport
- func FilterActiveClusters(reports map[string]*api.ClusterUsageReport) map[string]*api.ClusterUsageReport
- func FilterClusterLeasedReports(ids []string, reports map[string]*api.ClusterLeasedReport) map[string]*api.ClusterLeasedReport
- func FilterPoolClusters(pool string, reports map[string]*api.ClusterUsageReport) map[string]*api.ClusterUsageReport
- func GetClusterReportIds(reports map[string]*api.ClusterUsageReport) []string
- func GroupByPool(reports map[string]*api.ClusterUsageReport) map[string]map[string]*api.ClusterUsageReport
- func GroupSchedulingInfoByPool(reports map[string]*api.ClusterSchedulingInfoReport) map[string]map[string]*api.ClusterSchedulingInfoReport
- func LeaseJobs(ctx context.Context, config *configuration.SchedulingConfig, jobQueue JobQueue, ...) ([]*api.Job, error)
- func MatchSchedulingRequirements(job *api.Job, schedulingInfo *api.ClusterSchedulingInfoReport) bool
- func MatchSchedulingRequirementsOnAnyCluster(job *api.Job, ...) bool
- func QueueSlicesToShares(resourceScarcity map[string]float64, ...) map[*api.Queue]float64
- func ResourceScarcityFromReports(reports map[string]*api.ClusterUsageReport) map[string]float64
- func ResourcesAsUsage(resourceScarcity map[string]float64, resources common.ComputeResources) float64
- func ResourcesFloatAsUsage(resourceScarcity map[string]float64, resources common.ComputeResourcesFloat) float64
- func SliceResourceWithLimits(resourceScarcity map[string]float64, ...) map[*api.Queue]*QueueSchedulingInfo
- func SumRemainingResource(schedulingInfo map[*api.Queue]*QueueSchedulingInfo) common.ComputeResourcesFloat
- type JobQueue
- type LeaseManager
- type LeasePayloadLimit
- type PodMatchingContext
- type QueuePriorityInfo
- type QueueSchedulingInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AggregateNodeTypeAllocations ¶ added in v0.1.14
func CalculatePriorityUpdate ¶ added in v0.1.25
func CombineLeasedReportResourceByQueue ¶ added in v0.1.6
func CombineLeasedReportResourceByQueue(reports map[string]*api.ClusterLeasedReport) map[string]common.ComputeResources
func CreateClusterLeasedReport ¶ added in v0.1.6
func CreateClusterLeasedReport(clusterId string, currentReport *api.ClusterLeasedReport, additionallyLeasedJobs []*api.Job) *api.ClusterLeasedReport
func CreateClusterSchedulingInfoReport ¶ added in v0.1.6
func CreateClusterSchedulingInfoReport(leaseRequest *api.LeaseRequest, nodeAllocations []*nodeTypeAllocation) *api.ClusterSchedulingInfoReport
func FilterActiveClusterSchedulingInfoReports ¶ added in v0.1.6
func FilterActiveClusterSchedulingInfoReports(reports map[string]*api.ClusterSchedulingInfoReport) map[string]*api.ClusterSchedulingInfoReport
FilterActiveClusterSchedulingInfoReports returns the subset of reports within the expiry time.
func FilterActiveClusters ¶
func FilterActiveClusters(reports map[string]*api.ClusterUsageReport) map[string]*api.ClusterUsageReport
FilterActiveClusters returns the subset of reports corresponding to active clusters. A cluster is considered active if the most recent ClusterUsageReport was received less than activeClusterExpiry ago.
func FilterClusterLeasedReports ¶ added in v0.1.25
func FilterClusterLeasedReports(ids []string, reports map[string]*api.ClusterLeasedReport) map[string]*api.ClusterLeasedReport
FilterClusterLeasedReports returns the subset of reports with id in the provided slice of ids. ids for which there is no corresponding report are ignored.
func FilterPoolClusters ¶ added in v0.1.24
func FilterPoolClusters(pool string, reports map[string]*api.ClusterUsageReport) map[string]*api.ClusterUsageReport
FilterPoolClusters returns the subset of reports for which the pool has a specific value.
func GetClusterReportIds ¶
func GetClusterReportIds(reports map[string]*api.ClusterUsageReport) []string
GetClusterReportIds returns a slice composed of all unique report ids in the provided map.
func GroupByPool ¶ added in v0.1.24
func GroupByPool(reports map[string]*api.ClusterUsageReport) map[string]map[string]*api.ClusterUsageReport
GroupByPool returns a map from pool name to another map, which in turn maps report ids to reports.
func GroupSchedulingInfoByPool ¶ added in v0.1.24
func GroupSchedulingInfoByPool(reports map[string]*api.ClusterSchedulingInfoReport) map[string]map[string]*api.ClusterSchedulingInfoReport
GroupSchedulingInfoByPool returns a map from pool name to another map, which in turn maps report ids to reports.
func LeaseJobs ¶ added in v0.1.2
func LeaseJobs(ctx context.Context, config *configuration.SchedulingConfig, jobQueue JobQueue, onJobLease func([]*api.Job), request *api.LeaseRequest, nodeResources []*nodeTypeAllocation, activeClusterReports map[string]*api.ClusterUsageReport, activeClusterLeaseJobReports map[string]*api.ClusterLeasedReport, clusterPriorities map[string]map[string]float64, activeQueues []*api.Queue) ([]*api.Job, error)
func MatchSchedulingRequirements ¶ added in v0.1.6
func MatchSchedulingRequirements(job *api.Job, schedulingInfo *api.ClusterSchedulingInfoReport) bool
func MatchSchedulingRequirementsOnAnyCluster ¶ added in v0.1.24
func QueueSlicesToShares ¶ added in v0.1.2
func ResourceScarcityFromReports ¶
func ResourceScarcityFromReports(reports map[string]*api.ClusterUsageReport) map[string]float64
func ResourcesAsUsage ¶
func ResourcesAsUsage(resourceScarcity map[string]float64, resources common.ComputeResources) float64
func ResourcesFloatAsUsage ¶
func ResourcesFloatAsUsage(resourceScarcity map[string]float64, resources common.ComputeResourcesFloat) float64
func SliceResourceWithLimits ¶ added in v0.1.6
func SliceResourceWithLimits(resourceScarcity map[string]float64, queueSchedulingInfo map[*api.Queue]*QueueSchedulingInfo, queuePriorities map[*api.Queue]QueuePriorityInfo, quantityToSlice common.ComputeResourcesFloat) map[*api.Queue]*QueueSchedulingInfo
func SumRemainingResource ¶ added in v0.1.6
func SumRemainingResource(schedulingInfo map[*api.Queue]*QueueSchedulingInfo) common.ComputeResourcesFloat
Types ¶
type LeaseManager ¶ added in v0.1.0
type LeaseManager struct {
// contains filtered or unexported fields
}
func NewLeaseManager ¶ added in v0.1.0
func NewLeaseManager( jobRepository repository.JobRepository, queueRepository repository.QueueRepository, eventStore repository.EventStore, leaseExpiryDuration time.Duration) *LeaseManager
func (*LeaseManager) ExpireLeases ¶ added in v0.1.0
func (l *LeaseManager) ExpireLeases()
type LeasePayloadLimit ¶ added in v0.2.15
type LeasePayloadLimit struct {
// contains filtered or unexported fields
}
func NewLeasePayloadLimit ¶ added in v0.2.15
func NewLeasePayloadLimit(numberOfJobsLimit int, payloadSizeLimitBytes int, maxExpectedJobSizeBytes int) LeasePayloadLimit
NewLeasePayloadLimit numberOfJobsLimit - This is the maximum number of jobs per lease payload payloadSizeLimitBytes - This is the maximum size of all the Jobs in the lease payload in bytes maxExpectedJobSizeBytes - This is the maximum expected job size in bytes
It is used as a threshold to determine when adding more jobs would exceed payloadSizeLimitBytes
func (*LeasePayloadLimit) AtLimit ¶ added in v0.2.15
func (s *LeasePayloadLimit) AtLimit() bool
AtLimit
This returns true when: - remainingJobCount <= 0 - remainingPayloadSizeLimitBytes <= maxExpectedJobSizeBytes If we have less bytes left than the maximum job size, we should consider ourselves at the limit
func (*LeasePayloadLimit) IsWithinLimit ¶ added in v0.2.15
func (s *LeasePayloadLimit) IsWithinLimit(job *api.Job) bool
func (*LeasePayloadLimit) RemoveFromRemainingLimit ¶ added in v0.2.15
func (s *LeasePayloadLimit) RemoveFromRemainingLimit(jobs ...*api.Job)
type PodMatchingContext ¶ added in v0.2.6
type PodMatchingContext struct {
// contains filtered or unexported fields
}
func NewPodMatchingContext ¶ added in v0.2.6
func NewPodMatchingContext(podSpec *v1.PodSpec) *PodMatchingContext
func (*PodMatchingContext) Matches ¶ added in v0.2.6
func (podCtx *PodMatchingContext) Matches(nodeType *api.NodeType, availableResources common.ComputeResourcesFloat) bool
type QueuePriorityInfo ¶
type QueuePriorityInfo struct { Priority float64 CurrentUsage common.ComputeResources }
type QueueSchedulingInfo ¶ added in v0.1.6
type QueueSchedulingInfo struct {
// contains filtered or unexported fields
}
func NewQueueSchedulingInfo ¶ added in v0.1.6
func NewQueueSchedulingInfo( remainingSchedulingLimit common.ComputeResourcesFloat, schedulingShare common.ComputeResourcesFloat, adjustedShare common.ComputeResourcesFloat) *QueueSchedulingInfo
func (*QueueSchedulingInfo) UpdateLimits ¶ added in v0.1.6
func (info *QueueSchedulingInfo) UpdateLimits(resourceUsed common.ComputeResourcesFloat)