Skip to content

Commit 58d15c8

Browse files
nirrozenbaumkfswain
authored andcommitted
updated metrics and logging for plugins (kubernetes-sigs#1235)
Signed-off-by: Nir Rozenbaum <[email protected]>
1 parent 1e3417a commit 58d15c8

File tree

9 files changed

+127
-135
lines changed

9 files changed

+127
-135
lines changed

pkg/epp/metrics/metrics.go

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -182,28 +182,17 @@ var (
182182
},
183183
[]string{},
184184
)
185-
SchedulerPluginProcessingLatencies = prometheus.NewHistogramVec(
186-
prometheus.HistogramOpts{
187-
Subsystem: InferenceExtension,
188-
Name: "scheduler_plugin_duration_seconds",
189-
Help: metricsutil.HelpMsgWithStability("Scheduler plugin processing latency distribution in seconds for each plugin type and plugin name.", compbasemetrics.ALPHA),
190-
Buckets: []float64{
191-
0.0001, 0.0002, 0.0005, 0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1,
192-
},
193-
},
194-
[]string{"plugin_type", "plugin_name"},
195-
)
196185

197-
RequestControlPluginProcessingLatencies = prometheus.NewHistogramVec(
186+
PluginProcessingLatencies = prometheus.NewHistogramVec(
198187
prometheus.HistogramOpts{
199188
Subsystem: InferenceExtension,
200-
Name: "request_control_plugin_duration_seconds",
201-
Help: metricsutil.HelpMsgWithStability("RequestControl plugin processing latency distribution in seconds for each plugin type and plugin name.", compbasemetrics.ALPHA),
189+
Name: "plugin_duration_seconds",
190+
Help: metricsutil.HelpMsgWithStability("Plugin processing latency distribution in seconds for each extension point, plugin type and plugin name.", compbasemetrics.ALPHA),
202191
Buckets: []float64{
203192
0.0001, 0.0002, 0.0005, 0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1,
204193
},
205194
},
206-
[]string{"plugin_type", "plugin_name"},
195+
[]string{"extension_point", "plugin_type", "plugin_name"},
207196
)
208197

209198
// Prefix indexer Metrics
@@ -265,9 +254,8 @@ func Register(customCollectors ...prometheus.Collector) {
265254
metrics.Registry.MustRegister(inferencePoolAvgKVCache)
266255
metrics.Registry.MustRegister(inferencePoolAvgQueueSize)
267256
metrics.Registry.MustRegister(inferencePoolReadyPods)
268-
metrics.Registry.MustRegister(SchedulerPluginProcessingLatencies)
269257
metrics.Registry.MustRegister(SchedulerE2ELatency)
270-
metrics.Registry.MustRegister(RequestControlPluginProcessingLatencies)
258+
metrics.Registry.MustRegister(PluginProcessingLatencies)
271259
metrics.Registry.MustRegister(InferenceExtensionInfo)
272260
metrics.Registry.MustRegister(PrefixCacheSize)
273261
metrics.Registry.MustRegister(PrefixCacheHitRatio)
@@ -292,9 +280,8 @@ func Reset() {
292280
inferencePoolAvgKVCache.Reset()
293281
inferencePoolAvgQueueSize.Reset()
294282
inferencePoolReadyPods.Reset()
295-
SchedulerPluginProcessingLatencies.Reset()
296283
SchedulerE2ELatency.Reset()
297-
RequestControlPluginProcessingLatencies.Reset()
284+
PluginProcessingLatencies.Reset()
298285
InferenceExtensionInfo.Reset()
299286
PrefixCacheSize.Reset()
300287
PrefixCacheHitRatio.Reset()
@@ -396,19 +383,14 @@ func RecordInferencePoolReadyPods(name string, runningPods float64) {
396383
inferencePoolReadyPods.WithLabelValues(name).Set(runningPods)
397384
}
398385

399-
// RecordSchedulerPluginProcessingLatency records the processing latency for a scheduler plugin.
400-
func RecordSchedulerPluginProcessingLatency(pluginType, pluginName string, duration time.Duration) {
401-
SchedulerPluginProcessingLatencies.WithLabelValues(pluginType, pluginName).Observe(duration.Seconds())
402-
}
403-
404386
// RecordSchedulerE2ELatency records the end-to-end scheduling latency.
405387
func RecordSchedulerE2ELatency(duration time.Duration) {
406388
SchedulerE2ELatency.WithLabelValues().Observe(duration.Seconds())
407389
}
408390

409-
// RecordRequestControlPluginProcessingLatency records the processing latency for a request-control plugin.
410-
func RecordRequestControlPluginProcessingLatency(pluginType, pluginName string, duration time.Duration) {
411-
RequestControlPluginProcessingLatencies.WithLabelValues(pluginType, pluginName).Observe(duration.Seconds())
391+
// RecordPluginProcessingLatency records the processing latency for a plugin.
392+
func RecordPluginProcessingLatency(extensionPoint, pluginType, pluginName string, duration time.Duration) {
393+
PluginProcessingLatencies.WithLabelValues(extensionPoint, pluginType, pluginName).Observe(duration.Seconds())
412394
}
413395

414396
// RecordPrefixCacheSize records the size of the prefix indexer in megabytes.

pkg/epp/metrics/metrics_test.go

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -559,11 +559,12 @@ func TestInferencePoolMetrics(t *testing.T) {
559559
}
560560
}
561561

562-
func TestSchedulerPluginProcessingLatencies(t *testing.T) {
562+
func TestPluginProcessingLatencies(t *testing.T) {
563563
type pluginLatency struct {
564-
pluginType string
565-
pluginName string
566-
duration time.Duration
564+
extensionPoint string
565+
pluginType string
566+
pluginName string
567+
duration time.Duration
567568
}
568569
scenarios := []struct {
569570
name string
@@ -573,24 +574,28 @@ func TestSchedulerPluginProcessingLatencies(t *testing.T) {
573574
name: "multiple plugins",
574575
latencies: []pluginLatency{
575576
{
576-
pluginType: "PostSchedule",
577-
pluginName: "PluginB",
578-
duration: 200 * time.Millisecond,
577+
extensionPoint: "ProfilePicker",
578+
pluginType: "ProfileHandler",
579+
pluginName: "PluginB",
580+
duration: 200 * time.Millisecond,
579581
},
580582
{
581-
pluginType: "Filter",
582-
pluginName: "PluginC",
583-
duration: 50 * time.Millisecond,
583+
extensionPoint: "Filter",
584+
pluginType: "TestFilter",
585+
pluginName: "PluginC",
586+
duration: 50 * time.Millisecond,
584587
},
585588
{
586-
pluginType: "Scorer",
587-
pluginName: "PluginD",
588-
duration: 10 * time.Millisecond,
589+
extensionPoint: "Scorer",
590+
pluginType: "TestScorer",
591+
pluginName: "PluginD",
592+
duration: 10 * time.Millisecond,
589593
},
590594
{
591-
pluginType: "Picker",
592-
pluginName: "PluginE",
593-
duration: 10 * time.Microsecond,
595+
extensionPoint: "Picker",
596+
pluginType: "TestPicker",
597+
pluginName: "PluginE",
598+
duration: 10 * time.Microsecond,
594599
},
595600
},
596601
},
@@ -599,10 +604,10 @@ func TestSchedulerPluginProcessingLatencies(t *testing.T) {
599604
for _, scenario := range scenarios {
600605
t.Run(scenario.name, func(t *testing.T) {
601606
for _, latency := range scenario.latencies {
602-
RecordSchedulerPluginProcessingLatency(latency.pluginType, latency.pluginName, latency.duration)
607+
RecordPluginProcessingLatency(latency.extensionPoint, latency.pluginType, latency.pluginName, latency.duration)
603608
}
604609

605-
wantPluginLatencies, err := os.Open("testdata/scheduler_plugin_processing_latencies_metric")
610+
wantPluginLatencies, err := os.Open("testdata/plugin_processing_latencies_metric")
606611
defer func() {
607612
if err := wantPluginLatencies.Close(); err != nil {
608613
t.Error(err)
@@ -611,7 +616,7 @@ func TestSchedulerPluginProcessingLatencies(t *testing.T) {
611616
if err != nil {
612617
t.Fatal(err)
613618
}
614-
if err := testutil.GatherAndCompare(metrics.Registry, wantPluginLatencies, "inference_extension_scheduler_plugin_duration_seconds"); err != nil {
619+
if err := testutil.GatherAndCompare(metrics.Registry, wantPluginLatencies, "inference_extension_plugin_duration_seconds"); err != nil {
615620
t.Error(err)
616621
}
617622
})
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# HELP inference_extension_plugin_duration_seconds [ALPHA] Plugin processing latency distribution in seconds for each extension point, plugin type and plugin name.
2+
# TYPE inference_extension_plugin_duration_seconds histogram
3+
inference_extension_plugin_duration_seconds_bucket{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler",le="0.0001"} 0
4+
inference_extension_plugin_duration_seconds_bucket{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler",le="0.0002"} 0
5+
inference_extension_plugin_duration_seconds_bucket{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler",le="0.0005"} 0
6+
inference_extension_plugin_duration_seconds_bucket{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler",le="0.001"} 0
7+
inference_extension_plugin_duration_seconds_bucket{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler",le="0.002"} 0
8+
inference_extension_plugin_duration_seconds_bucket{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler",le="0.005"} 0
9+
inference_extension_plugin_duration_seconds_bucket{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler",le="0.01"} 0
10+
inference_extension_plugin_duration_seconds_bucket{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler",le="0.02"} 0
11+
inference_extension_plugin_duration_seconds_bucket{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler",le="0.05"} 0
12+
inference_extension_plugin_duration_seconds_bucket{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler",le="0.1"} 0
13+
inference_extension_plugin_duration_seconds_bucket{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler",le="+Inf"} 1
14+
inference_extension_plugin_duration_seconds_sum{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler"} 0.2
15+
inference_extension_plugin_duration_seconds_count{extension_point="ProfilePicker",plugin_name="PluginB",plugin_type="ProfileHandler"} 1
16+
inference_extension_plugin_duration_seconds_bucket{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter",le="0.0001"} 0
17+
inference_extension_plugin_duration_seconds_bucket{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter",le="0.0002"} 0
18+
inference_extension_plugin_duration_seconds_bucket{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter",le="0.0005"} 0
19+
inference_extension_plugin_duration_seconds_bucket{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter",le="0.001"} 0
20+
inference_extension_plugin_duration_seconds_bucket{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter",le="0.002"} 0
21+
inference_extension_plugin_duration_seconds_bucket{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter",le="0.005"} 0
22+
inference_extension_plugin_duration_seconds_bucket{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter",le="0.01"} 0
23+
inference_extension_plugin_duration_seconds_bucket{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter",le="0.02"} 0
24+
inference_extension_plugin_duration_seconds_bucket{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter",le="0.05"} 1
25+
inference_extension_plugin_duration_seconds_bucket{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter",le="0.1"} 1
26+
inference_extension_plugin_duration_seconds_bucket{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter",le="+Inf"} 1
27+
inference_extension_plugin_duration_seconds_sum{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter"} 0.05
28+
inference_extension_plugin_duration_seconds_count{extension_point="Filter",plugin_name="PluginC",plugin_type="TestFilter"} 1
29+
inference_extension_plugin_duration_seconds_bucket{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer",le="0.0001"} 0
30+
inference_extension_plugin_duration_seconds_bucket{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer",le="0.0002"} 0
31+
inference_extension_plugin_duration_seconds_bucket{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer",le="0.0005"} 0
32+
inference_extension_plugin_duration_seconds_bucket{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer",le="0.001"} 0
33+
inference_extension_plugin_duration_seconds_bucket{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer",le="0.002"} 0
34+
inference_extension_plugin_duration_seconds_bucket{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer",le="0.005"} 0
35+
inference_extension_plugin_duration_seconds_bucket{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer",le="0.01"} 1
36+
inference_extension_plugin_duration_seconds_bucket{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer",le="0.02"} 1
37+
inference_extension_plugin_duration_seconds_bucket{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer",le="0.05"} 1
38+
inference_extension_plugin_duration_seconds_bucket{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer",le="0.1"} 1
39+
inference_extension_plugin_duration_seconds_bucket{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer",le="+Inf"} 1
40+
inference_extension_plugin_duration_seconds_sum{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer"} 0.01
41+
inference_extension_plugin_duration_seconds_count{extension_point="Scorer",plugin_name="PluginD",plugin_type="TestScorer"} 1
42+
inference_extension_plugin_duration_seconds_bucket{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker",le="0.0001"} 1
43+
inference_extension_plugin_duration_seconds_bucket{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker",le="0.0002"} 1
44+
inference_extension_plugin_duration_seconds_bucket{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker",le="0.0005"} 1
45+
inference_extension_plugin_duration_seconds_bucket{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker",le="0.001"} 1
46+
inference_extension_plugin_duration_seconds_bucket{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker",le="0.002"} 1
47+
inference_extension_plugin_duration_seconds_bucket{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker",le="0.005"} 1
48+
inference_extension_plugin_duration_seconds_bucket{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker",le="0.01"} 1
49+
inference_extension_plugin_duration_seconds_bucket{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker",le="0.02"} 1
50+
inference_extension_plugin_duration_seconds_bucket{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker",le="0.05"} 1
51+
inference_extension_plugin_duration_seconds_bucket{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker",le="0.1"} 1
52+
inference_extension_plugin_duration_seconds_bucket{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker",le="+Inf"} 1
53+
inference_extension_plugin_duration_seconds_sum{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker"} 1e-05
54+
inference_extension_plugin_duration_seconds_count{extension_point="Picker",plugin_name="PluginE",plugin_type="TestPicker"} 1

0 commit comments

Comments
 (0)