runtime: optimize the memory padding in p struct

Since allocation for p struct will be rounded up to the next size class,
the two relevant adjacent classes for this case are 9728 bytes and 10240 bytes.

A p is currently 10072 bytes, so it gets rounded up to 10240 bytes when we allocate one,
So the pad in p struct is unnecessary, eliminate it and add comments for
warning the false sharing.

Change-Id: Iae8b32931d1beddbfff1f58044d8401703da6407
Reviewed-on: https://go-review.googlesource.com/c/go/+/268759
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Andy Pan 2020-11-10 21:02:18 +08:00 committed by Keith Randall
parent ab331c0254
commit 55d7dcc3cd

View file

@ -5,7 +5,6 @@
package runtime package runtime
import ( import (
"internal/cpu"
"runtime/internal/atomic" "runtime/internal/atomic"
"runtime/internal/sys" "runtime/internal/sys"
"unsafe" "unsafe"
@ -713,7 +712,8 @@ type p struct {
// scheduler ASAP (regardless of what G is running on it). // scheduler ASAP (regardless of what G is running on it).
preempt bool preempt bool
pad cpu.CacheLinePad // Padding is no longer needed. False sharing is now not a worry because p is large enough
// that its size class is an integer multiple of the cache line size (for any of our architectures).
} }
type schedt struct { type schedt struct {