Skip to content

perf: optimize allocs in object count provider#398

Merged
pmalek merged 3 commits intomainfrom
optimize-allocs
Feb 27, 2026
Merged

perf: optimize allocs in object count provider#398
pmalek merged 3 commits intomainfrom
optimize-allocs

Conversation

@pmalek
Copy link
Copy Markdown
Member

@pmalek pmalek commented Feb 27, 2026

Use metadata.Interface instead of dynamic client to only obtain metadata for object that we do not care about but which we only want to count.

This allows to achieve the following perf gain:

benchstat -alpha 0.5 /tmp/old /tmp/new
goos: darwin
goarch: arm64
pkg: github.com/kong/kubernetes-telemetry/pkg/telemetry
cpu: Apple M4 Max
                                             │  /tmp/old   │              /tmp/new              │
                                             │   sec/op    │   sec/op     vs base               │
ClusterStateWorkflow_2000Pods_100Services-14   4.046m ± 1%   1.261m ± 1%  -68.85% (p=0.002 n=6)

                                             │   /tmp/old   │              /tmp/new              │
                                             │     B/op     │     B/op      vs base              │
ClusterStateWorkflow_2000Pods_100Services-14   3.242Mi ± 0%   2.951Mi ± 0%  -8.97% (p=0.002 n=6)

                                             │   /tmp/old   │              /tmp/new              │
                                             │  allocs/op   │  allocs/op   vs base               │
ClusterStateWorkflow_2000Pods_100Services-14   29.284k ± 0%   2.291k ± 0%  -92.18% (p=0.002 n=6)

old:

goos: darwin
goarch: arm64
pkg: github.com/kong/kubernetes-telemetry/pkg/telemetry
cpu: Apple M4 Max
BenchmarkClusterStateWorkflow_2000Pods_100Services
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     296	   4091750 ns/op	 3399383 B/op	   29285 allocs/op
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     294	   4077568 ns/op	 3399206 B/op	   29284 allocs/op
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     297	   4013282 ns/op	 3399209 B/op	   29284 allocs/op
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     295	   4030743 ns/op	 3399205 B/op	   29284 allocs/op
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     298	   4051867 ns/op	 3399096 B/op	   29284 allocs/op
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     289	   4040589 ns/op	 3399126 B/op	   29284 allocs/op
PASS
ok  	github.com/kong/kubernetes-telemetry/pkg/telemetry	10.418s

new:

goos: darwin
goarch: arm64
pkg: github.com/kong/kubernetes-telemetry/pkg/telemetry
cpu: Apple M4 Max
BenchmarkClusterStateWorkflow_2000Pods_100Services
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     902	   1252487 ns/op	 3094672 B/op	    2292 allocs/op
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     932	   1269533 ns/op	 3094340 B/op	    2291 allocs/op
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     933	   1250733 ns/op	 3094376 B/op	    2291 allocs/op
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     926	   1262293 ns/op	 3094348 B/op	    2291 allocs/op
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     918	   1258804 ns/op	 3094336 B/op	    2291 allocs/op
BenchmarkClusterStateWorkflow_2000Pods_100Services-14    	     926	   1265984 ns/op	 3094364 B/op	    2291 allocs/op
PASS
ok  	github.com/kong/kubernetes-telemetry/pkg/telemetry	7.526s

@pmalek pmalek added this to the Daily maintenance milestone Feb 27, 2026
@pmalek pmalek self-assigned this Feb 27, 2026
@pmalek pmalek marked this pull request as ready for review February 27, 2026 11:01
@pmalek pmalek requested a review from a team as a code owner February 27, 2026 11:01
@pmalek pmalek merged commit 1f29a49 into main Feb 27, 2026
6 checks passed
@pmalek pmalek deleted the optimize-allocs branch February 27, 2026 12:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants