Skip to content

Commit b45b001

Browse files
gavinlichngopherbot
authored andcommitted
runtime: resolve false sharing for frequent memory allocate workloads
False sharing observed inside mheap struct, between arenas and preceding variables.Pad mheap.arenas and preceding variables to avoid false sharing This false-sharing getting worse and impact performance on multi core system and frequent memory allocate workloads. While running MinIO On a 2 socket system(56 Core per socket) and GOGC=1000, we observed HITM>8% (perf c2c) on this cacheline. After resolve this false-sharing issue, we got performance 17% improved. Improvement verified on MinIO: Server: https://github.com/minio/minio Client: https://github.com/minio/warp Config: Single node MinIO Server with 6 ramdisk, without TLS enabled, Run warp GET request, 128KB object and 512 concurrent Fixes #62472 Signed-off-by: Li Gang<[email protected]> Change-Id: I9a4a3c97f5bc8cd014c627f92d59d9187ebaaab5 Reviewed-on: https://go-review.googlesource.com/c/go/+/525955 Reviewed-by: Heschi Kreinick <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Michael Knyszek <[email protected]> Auto-Submit: Michael Knyszek <[email protected]>
1 parent 794e7ea commit b45b001

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

src/runtime/mheap.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ type mheap struct {
122122
// credit pool.
123123
reclaimCredit atomic.Uintptr
124124

125+
_ cpu.CacheLinePad // prevents false-sharing between arenas and preceding variables
126+
125127
// arenas is the heap arena map. It points to the metadata for
126128
// the heap for every arena frame of the entire usable virtual
127129
// address space.

0 commit comments

Comments
 (0)