aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Anthony Knyszek <mknyszek@google.com>2022-06-04 05:42:30 +0000
committerMichael Pratt <mpratt@google.com>2022-06-06 21:01:07 +0000
commitacfff428029130654d44b56e80a5e9c7e825e951 (patch)
treeda6c0c31e2bfe9eb71ecac7166ebbf1a0425e948
parenta71ca3dfbd32faf351ff68bcc26a4d5abd9b06d7 (diff)
downloadgo-acfff428029130654d44b56e80a5e9c7e825e951.tar.gz
go-acfff428029130654d44b56e80a5e9c7e825e951.zip
doc/go1.19: add release notes for the soft memory limit and idle GC
This change resolves some TODOs in the release notes, and while we're here, also clarifies how CPU profile samples are represented in runtime traces. Change-Id: Idaa36ccf65b03fd5463b2d5da682d3fa578d2f46 Reviewed-on: https://go-review.googlesource.com/c/go/+/410356 Reviewed-by: Michael Pratt <mpratt@google.com> Reviewed-by: Austin Clements <austin@google.com>
-rw-r--r--doc/go1.19.html33
1 files changed, 29 insertions, 4 deletions
diff --git a/doc/go1.19.html b/doc/go1.19.html
index 9a689d1980..a932a717ba 100644
--- a/doc/go1.19.html
+++ b/doc/go1.19.html
@@ -82,12 +82,37 @@ Do not send CLs removing the interior tags from such phrases.
<h2 id="runtime">Runtime</h2>
-<p><!-- https://go.dev/issue/48409 -->
- TODO: soft memory limit
+<p><!-- https://go.dev/issue/48409 --><!-- CL 397018 -->
+ The runtime now includes support for a soft memory limit. This memory limit
+ includes all memory mapped and managed by the runtime, and excludes external
+ memory sources such as binary size, memory managed in other languages, and
+ memory held by the operating system on behalf of the Go program. This limit
+ may be managed via the <code>GOMEMLIMIT</code> environment variable or the
+ <code>SetMemoryLimit</code> function in the runtime/debug package. The limit
+ works in conjunction with <code>GOGC</code> and <code>SetGCPercent</code>,
+ and will be respected even if <code>GOGC=off</code>, allowing Go programs to
+ always make maximal use of their memory limit, improving resource efficiency
+ in some cases. Please note that small memory limits, on the order of tens of
+ megabytes or less, are less likely to be adhered to due to external latency
+ factors, such as OS scheduling. See https://go.dev/issue/52433 for more
+ details. Larger memory limits, on the order of hundreds of megabytes or more,
+ are stable and production-ready.
+</p>
+
+<p><!-- CL 353989 -->
+ In order to limit the effects of GC thrashing when the program's live heap
+ size approaches the soft memory limit, the Go runtime also attempts to limit
+ total GC CPU utilization to 50%, excluding idle time, choosing to use more
+ memory over preventing application progress. In practice, we expect this limit
+ to only play a role in exceptional cases, and the new runtime/metrics metric
+ <code>/gc/limiter/last-enabled:gc-cycle</code> reports when this last
+ occurred.
</p>
<p><!-- https://go.dev/issue/44163 -->
- TODO: idle mark workers
+ The runtime now schedules many fewer GC worker goroutines on idle operating
+ system threads when the application is idle enough to force a periodic GC
+ cycle.
</p>
<p><!-- https://go.dev/issue/18138 --><!-- CL 345889 -->
@@ -494,7 +519,7 @@ Do not send CLs removing the interior tags from such phrases.
<p><!-- CL 400795 -->
When used together with the
<a href="/pkg/runtime/pprof#StartCPUProfile">CPU profiler</a>, the
- execution trace includes CPU profile samples.
+ execution trace includes CPU profile samples as instantaneous events.
</p>
</dd>
</dl><!-- runtime/trace -->