]> Cypherpunks.ru repositories - gostls13.git/commit
runtime: add the disablethp GODEBUG setting
authorMichael Anthony Knyszek <mknyszek@google.com>
Tue, 5 Dec 2023 17:31:34 +0000 (17:31 +0000)
committerGopher Robot <gobot@golang.org>
Tue, 5 Dec 2023 20:14:52 +0000 (20:14 +0000)
commitc915215af65897cc9cffed75630cbfbc6b2462cc
treea0d6bbc7cd410d74fc12b2c06bfa58d0e4a24c16
parent3d2645f337091e8cd3f6f0979716fa6cd124ffaa
runtime: add the disablethp GODEBUG setting

Go 1.21.1 and Go 1.22 have ceased working around an issue with Linux
kernel defaults for transparent huge pages that can result in excessive
memory overheads. (https://bugzilla.kernel.org/show_bug.cgi?id=93111)

Many Linux distributions disable huge pages altogether these days, so
this problem isn't quite as far-reaching as it used to be. Also, the
problem only affects Go programs with very particular memory usage
patterns.

That being said, because the runtime used to actively deal with this
problem (but with some unpredictable behavior), it's preventing users
that don't have a lot of control over their execution environment from
upgrading to Go beyond Go 1.20.

This change adds a GODEBUG to smooth over the transition. The GODEBUG
setting disables transparent huge pages for all heap memory on Linux,
which is much more predictable than restoring the old behavior.

Fixes #64332.

Change-Id: I73b1894337f0f0b1a5a17b90da1221e118e0b145
Reviewed-on: https://go-review.googlesource.com/c/go/+/547475
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
doc/godebug.md
src/runtime/extern.go
src/runtime/mem_linux.go
src/runtime/runtime1.go