runtime: increment updatemaxprocs metric only when disabled
The updatemaxprocs metric logic is currently backwards. We only increment the metric when we update GOMAXPROCS, but that only occurs if updatemaxprocs is enabled. Instead, the metric is supposed to increment when updatemaxprocs is disabled and there would be different behavior if it were enabled. Theoretically we should run the entire update system in a dry run mode, and only bail out right before committing updates. But that is an awful lot of effort for a feature that is disabled. Plus some users (like sandboxes) want to completely disable the update syscalls (sched_getaffinity and pread64). If we still do dry run updates then we need an additional GODEBUG for completely disabling functionality. This CL also avoids starting the update goroutine at all if disabled, since it isn't needed. For #73193. Change-Id: I6a6a636ceec8fced44e36cb27dcb1b4ba51fce33 Reviewed-on: https://go-review.googlesource.com/c/go/+/677036 Reviewed-by: Michael Knyszek <mknyszek@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Michael Pratt <mpratt@google.com>
This commit is contained in:
parent
f8c51b1a6c
commit
3b77085b40
@ -6567,6 +6567,22 @@ var (
|
||||
//
|
||||
// This is based on forcegchelper.
|
||||
func defaultGOMAXPROCSUpdateEnable() {
|
||||
if debug.updatemaxprocs == 0 {
|
||||
// Unconditionally increment the metric when updates are disabled.
|
||||
//
|
||||
// It would be more descriptive if we did a dry run of the
|
||||
// complete update, determining the appropriate value of
|
||||
// GOMAXPROCS and the bailing out and just incrementing the
|
||||
// metric if a change would occur.
|
||||
//
|
||||
// Not only is that a lot of ongoing work for a disabled
|
||||
// feature, but some users need to be able to completely
|
||||
// disable the update system calls (such as sandboxes).
|
||||
// Currently, updatemaxprocs=0 serves that purpose.
|
||||
updatemaxprocs.IncNonDefault()
|
||||
return
|
||||
}
|
||||
|
||||
go updateMaxProcsGoroutine()
|
||||
}
|
||||
|
||||
@ -6601,9 +6617,6 @@ func updateMaxProcsGoroutine() {
|
||||
newprocsCustom = false
|
||||
|
||||
startTheWorldGC(stw)
|
||||
|
||||
// We actually changed something.
|
||||
updatemaxprocs.IncNonDefault()
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user