mirror of
https://github.com/golang/go
synced 2024-11-18 13:54:59 -07:00
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<gang.g.li@intel.com> Change-Id: I9a4a3c97f5bc8cd014c627f92d59d9187ebaaab5 Reviewed-on: https://go-review.googlesource.com/c/go/+/525955 Reviewed-by: Heschi Kreinick <heschi@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> Auto-Submit: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
parent
794e7ea15b
commit
b45b00162b
@ -122,6 +122,8 @@ type mheap struct {
|
||||
// credit pool.
|
||||
reclaimCredit atomic.Uintptr
|
||||
|
||||
_ cpu.CacheLinePad // prevents false-sharing between arenas and preceding variables
|
||||
|
||||
// arenas is the heap arena map. It points to the metadata for
|
||||
// the heap for every arena frame of the entire usable virtual
|
||||
// address space.
|
||||
|
Loading…
Reference in New Issue
Block a user