Merge pull request #24598 from wojtek-t/improve_scheduler_predicates
Automatic merge from submit-queue Store node information in NodeInfo This is significantly improving scheduler throughput. On 1000-node cluster: - empty cluster: ~70pods/s - full cluster: ~45pods/s Drop in throughput is mostly related to priority functions, which I will be looking into next (I already have some PR #24095, but we need for more things before). This is roughly ~40% increase. However, we still need better understanding of predicate function, because in my opinion it should be even faster as it is now. I'm going to look into it next week. @gmarek @hongchaodeng @xiang90
This commit is contained in:
@@ -84,16 +84,13 @@ func init() {
|
||||
// Fit is determined by resource availability.
|
||||
// This predicate is actually a default predicate, because it is invoked from
|
||||
// predicates.GeneralPredicates()
|
||||
factory.RegisterFitPredicateFactory(
|
||||
"PodFitsResources",
|
||||
func(args factory.PluginFactoryArgs) algorithm.FitPredicate {
|
||||
return predicates.NewResourceFitPredicate(args.NodeInfo)
|
||||
},
|
||||
)
|
||||
factory.RegisterFitPredicate("PodFitsResources", predicates.PodFitsResources)
|
||||
// Fit is determined by the presence of the Host parameter and a string match
|
||||
// This predicate is actually a default predicate, because it is invoked from
|
||||
// predicates.GeneralPredicates()
|
||||
factory.RegisterFitPredicate("HostName", predicates.PodFitsHost)
|
||||
// Fit is determined by node selector query.
|
||||
factory.RegisterFitPredicate("MatchNodeSelector", predicates.PodSelectorMatches)
|
||||
}
|
||||
|
||||
func defaultPredicates() sets.String {
|
||||
@@ -104,14 +101,7 @@ func defaultPredicates() sets.String {
|
||||
factory.RegisterFitPredicateFactory(
|
||||
"NoVolumeZoneConflict",
|
||||
func(args factory.PluginFactoryArgs) algorithm.FitPredicate {
|
||||
return predicates.NewVolumeZonePredicate(args.NodeInfo, args.PVInfo, args.PVCInfo)
|
||||
},
|
||||
),
|
||||
// Fit is determined by node selector query.
|
||||
factory.RegisterFitPredicateFactory(
|
||||
"MatchNodeSelector",
|
||||
func(args factory.PluginFactoryArgs) algorithm.FitPredicate {
|
||||
return predicates.NewSelectorMatchPredicate(args.NodeInfo)
|
||||
return predicates.NewVolumeZonePredicate(args.PVInfo, args.PVCInfo)
|
||||
},
|
||||
),
|
||||
// Fit is determined by whether or not there would be too many AWS EBS volumes attached to the node
|
||||
@@ -134,12 +124,7 @@ func defaultPredicates() sets.String {
|
||||
),
|
||||
// GeneralPredicates are the predicates that are enforced by all Kubernetes components
|
||||
// (e.g. kubelet and all schedulers)
|
||||
factory.RegisterFitPredicateFactory(
|
||||
"GeneralPredicates",
|
||||
func(args factory.PluginFactoryArgs) algorithm.FitPredicate {
|
||||
return predicates.GeneralPredicates(args.NodeInfo)
|
||||
},
|
||||
),
|
||||
factory.RegisterFitPredicate("GeneralPredicates", predicates.GeneralPredicates),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user