mirror of https://github.com/golang/go.git
runtime: Add memprofrate value to GODEBUG
Add memprofrate as a value recognized in GODEBUG. The value provided is used as the new setting for runtime.MemProfileRate, allowing the user to adjust memory profiling. Change-Id: If129a247683263b11e2dd42473cf9b31280543d5 Reviewed-on: https://go-review.googlesource.com/3450 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
3c0fee10db
commit
3c4be235be
|
|
@ -45,6 +45,10 @@ a comma-separated list of name=val pairs. Supported names are:
|
|||
This should only be used as a temporary workaround to diagnose buggy code.
|
||||
The real fix is to not store integers in pointer-typed locations.
|
||||
|
||||
memprofrate: setting memprofrate=X will update the value of runtime.MemProfileRate.
|
||||
When set to 0 memory profiling is disabled. Refer to the description of
|
||||
MemProfileRate for the default value.
|
||||
|
||||
scheddetail: setting schedtrace=X and scheddetail=1 causes the scheduler to emit
|
||||
detailed multiline info every X milliseconds, describing state of the scheduler,
|
||||
processors, threads and goroutines.
|
||||
|
|
|
|||
|
|
@ -308,7 +308,10 @@ type dbgVar struct {
|
|||
|
||||
// TODO(rsc): Make GC respect debug.invalidptr.
|
||||
|
||||
// Holds variables parsed from GODEBUG env var.
|
||||
// Holds variables parsed from GODEBUG env var,
|
||||
// except for "memprofrate" since there is an
|
||||
// existing int var for that value, which may
|
||||
// already have an initial value.
|
||||
var debug struct {
|
||||
allocfreetrace int32
|
||||
efence int32
|
||||
|
|
@ -352,9 +355,17 @@ func parsedebugvars() {
|
|||
continue
|
||||
}
|
||||
key, value := field[:i], field[i+1:]
|
||||
for _, v := range dbgvars {
|
||||
if v.name == key {
|
||||
*v.value = int32(atoi(value))
|
||||
|
||||
// Update MemProfileRate directly here since it
|
||||
// int, not int32, and should only be updated
|
||||
// if specified in GODEBUG.
|
||||
if key == "memprofrate" {
|
||||
MemProfileRate = atoi(value)
|
||||
} else {
|
||||
for _, v := range dbgvars {
|
||||
if v.name == key {
|
||||
*v.value = int32(atoi(value))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue