Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
runtime: fix formula for computing number of padding bytes
In order to prevent false sharing of cache lines, structs are padded with some number of bytes. These bytes are unused, serving only to make the size of the struct a multiple of the size of the cache line. The current calculation of how much to pad is an overestimation, when the struct size is already a multiple of the cache line size without padding. For these cases, no padding is necessary, and the size of the inner pad field should be 0. The bug is that the pad field is sized to a whole 'nother cache line, wasting space. Here is the current formula that can never return 0: cpu.CacheLinePadSize - unsafe.Sizeof(myStruct{})%cpu.CacheLinePadSize This change simply mods that calculation by cpu.CacheLinePadSize, so that 0 will be returned instead of cpu.CacheLinePadSize. Change-Id: I26a2b287171bf47a3b9121873b2722f728381b5e Reviewed-on: https://go-review.googlesource.com/c/go/+/414214 Reviewed-by: Keith Randall <[email protected]> Run-TryBot: Michael Pratt <[email protected]> Auto-Submit: Michael Pratt <[email protected]> Reviewed-by: Keith Randall <[email protected]> Reviewed-by: Joedian Reid <[email protected]> TryBot-Result: Gopher Robot <[email protected]>
- Loading branch information