]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: optimize the memory padding in p struct
authorAndy Pan <panjf2000@gmail.com>
Tue, 10 Nov 2020 13:02:18 +0000 (21:02 +0800)
committerKeith Randall <khr@golang.org>
Tue, 23 Feb 2021 16:02:56 +0000 (16:02 +0000)
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>

src/runtime/runtime2.go

index 5bd283d12f349a8842a8dd70bf719da799ed3418..f5318e6f11e830538cd3e0d37f93172cdb4ddff7 100644 (file)
@@ -5,7 +5,6 @@
 package runtime
 
 import (
-       "internal/cpu"
        "runtime/internal/atomic"
        "runtime/internal/sys"
        "unsafe"
@@ -713,7 +712,8 @@ type p struct {
        // scheduler ASAP (regardless of what G is running on it).
        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 {