runtime: spinbitmutex performance differs between 1.24.0 and 1.24.1, what changed? #72117
Labels
BugReport
Issues describing a possible bug in the Go implementation.
compiler/runtime
Issues related to the Go compiler and/or runtime.
WaitingForInfo
Issue is not actionable because of missing required information, which needs to be provided.
Go version
1.23.6, 1.24.0, 1.24.1
Output of
go env
in your module/workspace:What did you do?
I am running a performance test on z1d.metal AWS instances. These are 48 core Xeons. https://instances.vantage.sh/aws/ec2/z1d.metal
With 12 goroutines performing CPU intensive tasks on these 48 core processors, I see a very large performance decrease moving from 1.23.6 to 1.24.0, but 1.24.1 restores performance. Building the test with go 1.24.0 with
GOEXPERIMENT=nospinbitmutex
almost completely returns perf to 1.23.6 levelsI do not see a performance difference using 4 or fewer goroutines, which is what lead me to test using
nospinbitmutex
Here is the naive implementation of the test, each goroutine acts on a batch of roughly 100,000 messages, in order to reduce channel overhead.
What did you see happen?
What did you expect to see?
I expected 1.24.1 to have the same performance regression as 1.24.0.
The text was updated successfully, but these errors were encountered: