Skip to content

GODRIVER-3108 Optimize writeServerSelector #1509

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jan 26, 2024

Conversation

isopov
Copy link
Contributor

@isopov isopov commented Jan 1, 2024

Summary

Optimize allocations of Server slices during writes.

Background & Motivation

On one of my services this function allocates 295 GBs over several days.
image
This is very similar to #1107 #1108 #1111. NB: one of these optimizations was reverted for correctness - 26e6c8a I used similar here, but cannot judge wether it may be used here.

@isopov isopov requested a review from a team as a code owner January 1, 2024 15:20
@isopov isopov requested review from prestonvasquez and removed request for a team January 1, 2024 15:20
Copy link
Contributor

API Change Report

No changes found!

Copy link
Member

@prestonvasquez prestonvasquez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @isopov , thanks for the contribution. In addition to the suggested changes, could you add the following benchmark to mongo/description/selector_test.go:

func Benchmark_SelectServer_SelectServer(b *testing.B) {
	topology := Topology{Kind: ReplicaSet} // You can change the topology as needed
	candidates := []Server{
		{Kind: Mongos},
		{Kind: RSPrimary},
		{Kind: Standalone},
	}

	selector := writeServerSelector{} // Assuming this is the receiver type

	b.ReportAllocs()
	b.ResetTimer()

	for i := 0; i < b.N; i++ {
		_, err := selector.SelectServer(topology, candidates)
		if err != nil {
			b.Fatalf("Error selecting server: %v", err)
		}
	}
}

@isopov isopov requested a review from prestonvasquez January 22, 2024 07:59
@blink1073 blink1073 changed the title optimize writeServerSelector GODRIVER-3108 Optimize writeServerSelector Jan 26, 2024
@blink1073 blink1073 merged commit 1fd1bc2 into mongodb:v1 Jan 26, 2024
blink1073 pushed a commit to blink1073/mongo-go-driver that referenced this pull request Jan 26, 2024
Co-authored-by: Preston Vasquez <[email protected]>
(cherry picked from commit 1fd1bc2)
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.

3 participants