@@ -134,6 +134,7 @@ func (sched *Scheduler) addPodToSchedulingQueue(obj interface{}) {
134
134
func (sched * Scheduler ) updatePodInSchedulingQueue (oldObj , newObj interface {}) {
135
135
start := time .Now ()
136
136
defer metrics .EventHandlingLatency .WithLabelValues (framework .UnscheduledPodUpdate .Label ).Observe (metrics .SinceInSeconds (start ))
137
+
137
138
logger := sched .logger
138
139
oldPod , newPod := oldObj .(* v1.Pod ), newObj .(* v1.Pod )
139
140
// Bypass update event that carries identical objects; otherwise, a duplicated
@@ -142,6 +143,10 @@ func (sched *Scheduler) updatePodInSchedulingQueue(oldObj, newObj interface{}) {
142
143
return
143
144
}
144
145
146
+ for _ , evt := range framework .PodSchedulingPropertiesChange (newPod , oldPod ) {
147
+ defer metrics .EventHandlingLatency .WithLabelValues (evt .Label ).Observe (metrics .SinceInSeconds (start ))
148
+ }
149
+
145
150
isAssumed , err := sched .Cache .IsAssumedPod (newPod )
146
151
if err != nil {
147
152
utilruntime .HandleError (fmt .Errorf ("failed to check whether pod %s/%s is assumed: %v" , newPod .Namespace , newPod .Name , err ))
@@ -246,7 +251,12 @@ func (sched *Scheduler) updatePodInCache(oldObj, newObj interface{}) {
246
251
}
247
252
248
253
events := framework .PodSchedulingPropertiesChange (newPod , oldPod )
254
+
255
+ // Save the time it takes to update the pod in the cache.
256
+ updatingDuration := metrics .SinceInSeconds (start )
257
+
249
258
for _ , evt := range events {
259
+ startMoving := time .Now ()
250
260
// SchedulingQueue.AssignedPodUpdated has a problem:
251
261
// It internally pre-filters Pods to move to activeQ,
252
262
// while taking only in-tree plugins into consideration.
@@ -257,10 +267,12 @@ func (sched *Scheduler) updatePodInCache(oldObj, newObj interface{}) {
257
267
// Here we use MoveAllToActiveOrBackoffQueue only when QueueingHint is enabled.
258
268
// (We cannot switch to MoveAllToActiveOrBackoffQueue right away because of throughput concern.)
259
269
if utilfeature .DefaultFeatureGate .Enabled (features .SchedulerQueueingHints ) {
260
- sched .SchedulingQueue .MoveAllToActiveOrBackoffQueue (logger , framework . AssignedPodUpdate , oldPod , newPod , nil )
270
+ sched .SchedulingQueue .MoveAllToActiveOrBackoffQueue (logger , evt , oldPod , newPod , nil )
261
271
} else {
262
272
sched .SchedulingQueue .AssignedPodUpdated (logger , oldPod , newPod , evt )
263
273
}
274
+ movingDuration := metrics .SinceInSeconds (startMoving )
275
+ metrics .EventHandlingLatency .WithLabelValues (evt .Label ).Observe (updatingDuration + movingDuration )
264
276
}
265
277
}
266
278
0 commit comments