@@ -29,6 +29,7 @@ import (
29
29
"k8s.io/klog"
30
30
"k8s.io/kubernetes/pkg/features"
31
31
schedulerlisters "k8s.io/kubernetes/pkg/scheduler/listers"
32
+ "k8s.io/kubernetes/pkg/scheduler/metrics"
32
33
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
33
34
nodeinfosnapshot "k8s.io/kubernetes/pkg/scheduler/nodeinfo/snapshot"
34
35
)
@@ -635,9 +636,11 @@ func (cache *schedulerCache) cleanupExpiredAssumedPods() {
635
636
}
636
637
637
638
// cleanupAssumedPods exists for making test deterministic by taking time as input argument.
639
+ // It also reports metrics on the cache size for nodes, pods, and assumed pods.
638
640
func (cache * schedulerCache ) cleanupAssumedPods (now time.Time ) {
639
641
cache .mu .Lock ()
640
642
defer cache .mu .Unlock ()
643
+ defer cache .updateMetrics ()
641
644
642
645
// The size of assumedPods should be small
643
646
for key := range cache .assumedPods {
@@ -680,3 +683,10 @@ func (cache *schedulerCache) GetNodeInfo(nodeName string) (*v1.Node, error) {
680
683
681
684
return n .info .Node (), nil
682
685
}
686
+
687
+ // updateMetrics updates cache size metric values for pods, assumed pods, and nodes
688
+ func (cache * schedulerCache ) updateMetrics () {
689
+ metrics .CacheSize .WithLabelValues ("assumed_pods" ).Set (float64 (len (cache .assumedPods )))
690
+ metrics .CacheSize .WithLabelValues ("pods" ).Set (float64 (len (cache .podStates )))
691
+ metrics .CacheSize .WithLabelValues ("nodes" ).Set (float64 (len (cache .nodes )))
692
+ }
0 commit comments