From 437e133b34f20fb0e1a8bad6f83efdcaff40022a Mon Sep 17 00:00:00 2001 From: PingWang Date: Mon, 4 Jul 2016 18:21:19 +0800 Subject: [PATCH 1/2] Optimise the process of the CalculateSpreadPriority in selector_spreading.go Signed-off-by: PingWang --- .../algorithm/priorities/selector_spreading.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugin/pkg/scheduler/algorithm/priorities/selector_spreading.go b/plugin/pkg/scheduler/algorithm/priorities/selector_spreading.go index a8c1ce6b71d..66bca63536a 100644 --- a/plugin/pkg/scheduler/algorithm/priorities/selector_spreading.go +++ b/plugin/pkg/scheduler/algorithm/priorities/selector_spreading.go @@ -62,6 +62,11 @@ func NewSelectorSpreadPriority(podLister algorithm.PodLister, serviceLister algo // pods which match the same service selectors or RC selectors as the pod being scheduled. // Where zone information is included on the nodes, it favors nodes in zones with fewer existing matching pods. func (s *SelectorSpread) CalculateSpreadPriority(pod *api.Pod, nodeNameToInfo map[string]*schedulercache.NodeInfo, nodeLister algorithm.NodeLister) (schedulerapi.HostPriorityList, error) { + nodes, err := nodeLister.List() + if err != nil { + return nil, err + } + selectors := make([]labels.Selector, 0, 3) if services, err := s.serviceLister.GetPodServices(pod); err == nil { for _, service := range services { @@ -81,11 +86,6 @@ func (s *SelectorSpread) CalculateSpreadPriority(pod *api.Pod, nodeNameToInfo ma } } - nodes, err := nodeLister.List() - if err != nil { - return nil, err - } - // Count similar pods by node countsByNodeName := make(map[string]float32, len(nodes)) countsByZone := make(map[string]float32, 10) From e4ab32cde271342e10439b219e8841b5a49d3337 Mon Sep 17 00:00:00 2001 From: PingWang Date: Tue, 5 Jul 2016 08:50:00 +0800 Subject: [PATCH 2/2] Modify CalculateAntiAffinityPriority function Signed-off-by: PingWang --- .../scheduler/algorithm/priorities/selector_spreading.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/plugin/pkg/scheduler/algorithm/priorities/selector_spreading.go b/plugin/pkg/scheduler/algorithm/priorities/selector_spreading.go index 66bca63536a..9de1bd392c2 100644 --- a/plugin/pkg/scheduler/algorithm/priorities/selector_spreading.go +++ b/plugin/pkg/scheduler/algorithm/priorities/selector_spreading.go @@ -195,6 +195,10 @@ func NewServiceAntiAffinityPriority(podLister algorithm.PodLister, serviceLister // The label to be considered is provided to the struct (ServiceAntiAffinity). func (s *ServiceAntiAffinity) CalculateAntiAffinityPriority(pod *api.Pod, nodeNameToInfo map[string]*schedulercache.NodeInfo, nodeLister algorithm.NodeLister) (schedulerapi.HostPriorityList, error) { var nsServicePods []*api.Pod + nodes, err := nodeLister.List() + if err != nil { + return nil, err + } if services, err := s.serviceLister.GetPodServices(pod); err == nil { // just use the first service and get the other pods within the service @@ -212,11 +216,6 @@ func (s *ServiceAntiAffinity) CalculateAntiAffinityPriority(pod *api.Pod, nodeNa } } - nodes, err := nodeLister.List() - if err != nil { - return nil, err - } - // separate out the nodes that have the label from the ones that don't otherNodes := []string{} labeledNodes := map[string]string{}