move prefilter out of predicates to improve performance #2580
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PreFilter
together withFilter
intoPredicateFn
, thePredicateFn
process each pod-node pair like the following pseudo code:PreFilter
only needs the pod object(no node required), we don't need to put it in the innermost loop. So a promotion ofPreFilter
to the outer loop is made in this pr for performance's sake, as a plugin likeinter-pod-afftinity
is very time-consuming to prepare the pod interconnections inPreFilter
. After this pr:stat
inOnSessionOpen
as previously put into thePredicateFn
?yes, it's correct, just as the type of
stat
suggestedCycleState
its lifecycle should be in the whole scheduling cycle, and the kube-scheduler creates it in theScheduleOnce
functionPreFilter
) and read (inFilter
)?yes, the underlining data structure is a thread-safe map for
CycleState
to access dataresolves #2583