]> Cypherpunks repositories - gostls13.git/commit
runtime: resolve false sharing for frequent memory allocate workloads
authorLi Gang <gang.g.li@intel.com>
Tue, 5 Sep 2023 09:31:06 +0000 (17:31 +0800)
committerGopher Robot <gobot@golang.org>
Wed, 13 Sep 2023 18:36:09 +0000 (18:36 +0000)
commitb45b00162b688deff23a64d442f905261c49bdc4
tree03244ba8a64c2954f1d7b883aa3223639eec8af8
parent794e7ea15b3eaf1c88c7dd9b41551acf6017bcc3
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>
src/runtime/mheap.go