Documentation
¶
Index ¶
- Constants
- func CleanupPluginBuilders()
- func CloseSession(sess *Session)
- func LoadCustomPlugins(pluginsDir string) error
- func RegisterAction(act Action)
- func RegisterPluginBuilder(name string, pb PluginBuilder)
- func TimeJitterAfter(new, old time.Time, duration, maxJitter time.Duration) bool
- type Action
- type Arguments
- type Event
- type EventHandler
- type Operation
- type Plugin
- type PluginBuilder
- type Session
- func (sess *Session) AddAllocatableFn(name string, fn apis.AllocatableFn)
- func (sess *Session) AddBatchNodeOrderFn(name string, fn apis.BatchNodeOrderFn)
- func (sess *Session) AddBestNodeFn(name string, fn apis.BestNodeFn)
- func (sess *Session) AddClusterOrderFn(name string, fn apis.CompareFn)
- func (sess *Session) AddEventHandler(eh *EventHandler)
- func (sess *Session) AddJobEnqueuableFn(name string, fn apis.VoteFn)
- func (sess *Session) AddJobEnqueuedFn(name string, fn apis.JobEnqueuedFn)
- func (sess *Session) AddJobOrderFn(name string, fn apis.CompareFn)
- func (sess *Session) AddJobPipelinedFn(name string, fn apis.VoteFn)
- func (sess *Session) AddJobReadyFn(name string, fn apis.ValidateFn)
- func (sess *Session) AddJobStarvingFns(name string, fn apis.ValidateFn)
- func (sess *Session) AddJobValidFn(name string, fn apis.ValidateExFn)
- func (sess *Session) AddNamespaceOrderFn(name string, fn apis.CompareFn)
- func (sess *Session) AddNodeMapFn(name string, fn apis.NodeMapFn)
- func (sess *Session) AddNodeOrderFn(name string, fn apis.NodeOrderFn)
- func (sess *Session) AddNodeReduceFn(name string, fn apis.NodeReduceFn)
- func (sess *Session) AddOverusedFn(name string, fn apis.ValidateFn)
- func (sess *Session) AddPredicateFn(name string, fn apis.PredicateFn)
- func (sess *Session) AddPreemptableFn(name string, fn apis.EvictableFn)
- func (sess *Session) AddQueueOrderFn(name string, fn apis.CompareFn)
- func (sess *Session) AddReclaimableFn(name string, fn apis.EvictableFn)
- func (sess *Session) AddReservedNodesFn(name string, fn apis.ReservedNodesFn)
- func (sess *Session) AddTargetJobFn(name string, fn apis.TargetJobFn)
- func (sess *Session) AddTaskOrderFn(name string, fn apis.CompareFn)
- func (sess *Session) AddVictimTasksFns(name string, fn []apis.VictimTasksFn)
- func (sess *Session) Allocatable(queue *apis.QueueInfo, candidate *apis.TaskInfo) bool
- func (sess *Session) Allocate(task *apis.TaskInfo, nodeInfo *apis.NodeInfo) error
- func (sess *Session) BatchNodeOrderFn(task *apis.TaskInfo, nodes []*apis.NodeInfo) (map[string]float64, error)
- func (sess *Session) BestNodeFn(task *apis.TaskInfo, nodeScores map[float64][]*apis.NodeInfo) *apis.NodeInfo
- func (sess *Session) BindPodGroup(job *apis.JobInfo, cluster string) error
- func (sess *Session) ClusterOrderFn(l, r interface{}) bool
- func (sess *Session) Evict(reclaimee *apis.TaskInfo, reason string) error
- func (sess Session) InformerFactory() informers.SharedInformerFactory
- func (sess *Session) JobEnqueuable(obj interface{}) bool
- func (sess *Session) JobEnqueued(obj interface{})
- func (sess *Session) JobOrderFn(l, r interface{}) bool
- func (sess *Session) JobPipelined(obj interface{}) bool
- func (sess *Session) JobReady(obj interface{}) bool
- func (sess *Session) JobStarving(obj interface{}) bool
- func (sess *Session) JobValid(obj interface{}) *apis.ValidateResult
- func (sess Session) KubeClient() kubernetes.Interface
- func (sess *Session) NamespaceOrderFn(l, r interface{}) bool
- func (sess *Session) NodeOrderFn(task *apis.TaskInfo, node *apis.NodeInfo) (float64, error)
- func (sess *Session) NodeOrderMapFn(task *apis.TaskInfo, node *apis.NodeInfo) (map[string]float64, float64, error)
- func (sess *Session) NodeOrderReduceFn(task *apis.TaskInfo, pluginNodeScoreMap map[string]k8sframework.NodeScoreList) (map[string]float64, error)
- func (sess *Session) Overused(queue *apis.QueueInfo) bool
- func (sess *Session) Pipeline(task *apis.TaskInfo, hostname string) error
- func (sess *Session) PredicateFn(task *apis.TaskInfo, node *apis.NodeInfo) error
- func (sess *Session) Preemptable(preemptor *apis.TaskInfo, preemptees []*apis.TaskInfo) []*apis.TaskInfo
- func (sess *Session) QueueOrderFn(l, r interface{}) bool
- func (sess *Session) Reclaimable(reclaimer *apis.TaskInfo, reclaimees []*apis.TaskInfo) []*apis.TaskInfo
- func (sess Session) RecordPodGroupEvent(podGroup *apis.PodGroup, eventType, reason, msg string)
- func (sess *Session) ReservedNodes()
- func (sess *Session) Statement() *Statement
- func (sess Session) String() string
- func (sess *Session) TargetJob(jobs []*apis.JobInfo) *apis.JobInfo
- func (sess *Session) TaskCompareFns(l, r interface{}) int
- func (sess *Session) TaskOrderFn(l, r interface{}) bool
- func (sess *Session) UpdatePodGroupCondition(jobInfo *apis.JobInfo, cond *scheduling.PodGroupCondition) error
- func (sess *Session) UpdateSchedulerNumaInfo(AllocatedSets map[string]apis.ResNumaSets)
- func (sess *Session) VictimTasks(tasks []*apis.TaskInfo) map[*apis.TaskInfo]bool
- type Statement
Constants ¶
const ( Evict = iota Pipeline Allocate )
Variables ¶
This section is empty.
Functions ¶
func CleanupPluginBuilders ¶
func CleanupPluginBuilders()
func LoadCustomPlugins ¶
LoadCustomPlugins loads custom scheduling plugins from the given pluginsDir.
func RegisterAction ¶
func RegisterAction(act Action)
func RegisterPluginBuilder ¶
func RegisterPluginBuilder(name string, pb PluginBuilder)
Types ¶
type Action ¶
type Action interface {
Name() string
Initialize() // install plugins
Execute(sess *Session) // execution of the action in the input session
UnInitialize() // uninstall plugins
}
Action is the action interface. Typical actions including enqueue, allocate, backfill, etc.
type Arguments ¶
type Arguments map[string]interface{}
func GetArgOfActionFromConf ¶
func GetArgOfActionFromConf(configs []conf.Configuration, actionName string) Arguments
GetArgOfActionFromConf returns argument of action reading from configuration of schedule.
func (Arguments) GetFloat64 ¶
type EventHandler ¶
type Plugin ¶
Plugin is the plugin interface. Custom scheduling algorithms are implemented as plugins.
type PluginBuilder ¶
func GetPluginBuilder ¶
func GetPluginBuilder(name string) (PluginBuilder, bool)
type Session ¶
type Session struct {
// session ID
UID types.UID
TotalResource *apis.Resource
Jobs map[apis.JobID]*apis.JobInfo
Nodes map[string]*apis.NodeInfo
RevocableNodes map[string]*apis.NodeInfo
Queues map[apis.QueueID]*apis.QueueInfo
NamespaceInfo map[apis.NamespaceName]*apis.NamespaceInfo
// scheduling configs
Tiers []conf.Tier
Configurations []conf.Configuration
NodeList []*apis.NodeInfo
// contains filtered or unexported fields
}
Session defines a scheduling session.
func OpenSession ¶
OpenSession opens a scheduling session and registers plugins and actions according to the input configs.
func (*Session) AddAllocatableFn ¶
func (sess *Session) AddAllocatableFn(name string, fn apis.AllocatableFn)
AddAllocatableFn add allocatable function
func (*Session) AddBatchNodeOrderFn ¶
func (sess *Session) AddBatchNodeOrderFn(name string, fn apis.BatchNodeOrderFn)
AddBatchNodeOrderFn adds Batch Node order function.
func (*Session) AddBestNodeFn ¶
func (sess *Session) AddBestNodeFn(name string, fn apis.BestNodeFn)
AddBestNodeFn add BestNode function.
func (*Session) AddClusterOrderFn ¶
AddClusterOrderFn adds queue order function.
func (*Session) AddEventHandler ¶
func (sess *Session) AddEventHandler(eh *EventHandler)
AddEventHandler adds event handlers to current session.
func (*Session) AddJobEnqueuableFn ¶
AddJobEnqueuableFn adds job enqueuable function.
func (*Session) AddJobEnqueuedFn ¶
func (sess *Session) AddJobEnqueuedFn(name string, fn apis.JobEnqueuedFn)
AddJobEnqueuedFn adds jobEnqueued function.
func (*Session) AddJobOrderFn ¶
AddJobOrderFn adds job order function.
func (*Session) AddJobPipelinedFn ¶
AddJobPipelinedFn adds pipelined function.
func (*Session) AddJobReadyFn ¶
func (sess *Session) AddJobReadyFn(name string, fn apis.ValidateFn)
AddJobReadyFn adds JobReady function.
func (*Session) AddJobStarvingFns ¶
func (sess *Session) AddJobStarvingFns(name string, fn apis.ValidateFn)
AddJobStarvingFns adds jobStarvingFns function.
func (*Session) AddJobValidFn ¶
func (sess *Session) AddJobValidFn(name string, fn apis.ValidateExFn)
AddJobValidFn adds job valid function.
func (*Session) AddNamespaceOrderFn ¶
AddNamespaceOrderFn adds namespace order function.
func (*Session) AddNodeMapFn ¶
AddNodeMapFn adds Node map function.
func (*Session) AddNodeOrderFn ¶
func (sess *Session) AddNodeOrderFn(name string, fn apis.NodeOrderFn)
AddNodeOrderFn adds Node order function.
func (*Session) AddNodeReduceFn ¶
func (sess *Session) AddNodeReduceFn(name string, fn apis.NodeReduceFn)
AddNodeReduceFn adds Node reduce function.
func (*Session) AddOverusedFn ¶
func (sess *Session) AddOverusedFn(name string, fn apis.ValidateFn)
AddOverusedFn adds overused function.
func (*Session) AddPredicateFn ¶
func (sess *Session) AddPredicateFn(name string, fn apis.PredicateFn)
AddPredicateFn adds Predicate function.
func (*Session) AddPreemptableFn ¶
func (sess *Session) AddPreemptableFn(name string, fn apis.EvictableFn)
AddPreemptableFn adds preemptable function.
func (*Session) AddQueueOrderFn ¶
AddQueueOrderFn adds queue order function.
func (*Session) AddReclaimableFn ¶
func (sess *Session) AddReclaimableFn(name string, fn apis.EvictableFn)
AddReclaimableFn adds Reclaimable function.
func (*Session) AddReservedNodesFn ¶
func (sess *Session) AddReservedNodesFn(name string, fn apis.ReservedNodesFn)
AddReservedNodesFn adds reservedNodesFn function.
func (*Session) AddTargetJobFn ¶
func (sess *Session) AddTargetJobFn(name string, fn apis.TargetJobFn)
AddTargetJobFn adds target job function.
func (*Session) AddTaskOrderFn ¶
AddTaskOrderFn adds task order function.
func (*Session) AddVictimTasksFns ¶
func (sess *Session) AddVictimTasksFns(name string, fn []apis.VictimTasksFn)
AddVictimTasksFns adds victimTasksFns function.
func (*Session) Allocatable ¶
Allocatable invoke allocatable function of the plugins
func (*Session) BatchNodeOrderFn ¶
func (sess *Session) BatchNodeOrderFn(task *apis.TaskInfo, nodes []*apis.NodeInfo) (map[string]float64, error)
BatchNodeOrderFn invokes batch nodes order function of the plugins.
func (*Session) BestNodeFn ¶
func (sess *Session) BestNodeFn(task *apis.TaskInfo, nodeScores map[float64][]*apis.NodeInfo) *apis.NodeInfo
BestNodeFn invokes bestNode function of the plugins.
func (*Session) BindPodGroup ¶
BindPodGroup binds PodGroup to the specified cluster.
func (*Session) ClusterOrderFn ¶
ClusterOrderFn invokes ClusterOrderFn function of the plugins.
func (Session) InformerFactory ¶
func (sess Session) InformerFactory() informers.SharedInformerFactory
InformerFactory returns the session's ShareInformerFactory.
func (*Session) JobEnqueuable ¶
JobEnqueuable invokes jobEnqueuableFns function of the plugins.
func (*Session) JobEnqueued ¶
func (sess *Session) JobEnqueued(obj interface{})
JobEnqueued invokes jobEnqueuedFns function of the plugins.
func (*Session) JobOrderFn ¶
JobOrderFn invokes job order function of the plugins.
func (*Session) JobPipelined ¶
JobPipelined invoke pipelined function of the plugins. Check if job has get enough resource to run, it returns true if at least one plugin votes permit.
func (*Session) JobReady ¶
JobReady invoke job ready function of the plugins, and it returns true is the input obj is judged as ready by all plugins in sess.
func (*Session) JobStarving ¶
JobStarving invoke jobStarving function of the plugins. Check if job still need more resource.
func (*Session) JobValid ¶
func (sess *Session) JobValid(obj interface{}) *apis.ValidateResult
JobValid invokes job valid function of the plugins.
func (Session) KubeClient ¶
func (sess Session) KubeClient() kubernetes.Interface
KubeClient returns the kubernetes client.
func (*Session) NamespaceOrderFn ¶
NamespaceOrderFn invokes namespace order function of the plugins.
func (*Session) NodeOrderFn ¶
NodeOrderFn invokes node order function of the plugins.
func (*Session) NodeOrderMapFn ¶
func (sess *Session) NodeOrderMapFn(task *apis.TaskInfo, node *apis.NodeInfo) (map[string]float64, float64, error)
NodeOrderMapFn invokes node order function of the plugins.
func (*Session) NodeOrderReduceFn ¶
func (sess *Session) NodeOrderReduceFn(task *apis.TaskInfo, pluginNodeScoreMap map[string]k8sframework.NodeScoreList) (map[string]float64, error)
NodeOrderReduceFn invokes node order reduce function of the plugins.
func (*Session) Overused ¶
Overused invokes the overused function of the plugins, and returns true if the input queue is judged as overused by any plugin in sess.
func (*Session) PredicateFn ¶
PredicateFn invokes predicate function of the plugins.
func (*Session) Preemptable ¶
func (sess *Session) Preemptable(preemptor *apis.TaskInfo, preemptees []*apis.TaskInfo) []*apis.TaskInfo
Preemptable invokes the preemptable func of the plugins and returns the preemptable tasks.
func (*Session) QueueOrderFn ¶
QueueOrderFn invokes queue order function of the plugins.
func (*Session) Reclaimable ¶
func (sess *Session) Reclaimable(reclaimer *apis.TaskInfo, reclaimees []*apis.TaskInfo) []*apis.TaskInfo
Reclaimable invokes the reclaimable func of the plugins and returns the reclaimed tasks.
func (Session) RecordPodGroupEvent ¶
RecordPodGroupEvent records podGroup events.
func (*Session) ReservedNodes ¶
func (sess *Session) ReservedNodes()
ReservedNodes invokes reserve node function of the plugins.
func (*Session) TargetJob ¶
TargetJob invokes targetJobFns function of the plugins. It returns the target job from the job list.
func (*Session) TaskCompareFns ¶
TaskCompareFns invokes task order function of the plugins.
func (*Session) TaskOrderFn ¶
TaskOrderFn invokes task order function of the plugins.
func (*Session) UpdatePodGroupCondition ¶
func (sess *Session) UpdatePodGroupCondition(jobInfo *apis.JobInfo, cond *scheduling.PodGroupCondition) error
UpdatePodGroupCondition updates job condition accordingly.
func (*Session) UpdateSchedulerNumaInfo ¶
func (sess *Session) UpdateSchedulerNumaInfo(AllocatedSets map[string]apis.ResNumaSets)
UpdateSchedulerNumaInfo updates SchedulerNumaInfo.
type Statement ¶
type Statement struct {
// contains filtered or unexported fields
}
Statement defines a series of operation in a scheduling session.
func NewStatement ¶
func (*Statement) Allocate ¶
Allocate will allocate task to node. Specifically, it will update s.sess.Jobs and s.sess.Nodes status info and add this operation to s.operations.
func (*Statement) Commit ¶
func (s *Statement) Commit()
Commit executes all operations in s in turn.
func (*Statement) Discard ¶
func (s *Statement) Discard()
Discard discards all operations in s in a reversed order.