runtime: Add memprofilerate to GODEBUG
Add memprofilerate as a value recognized in the GODEBUG env var. The value provided is used as the new setting for runtime.MemProfileRate, allowing the user to adjust memory profiling. From-SVN: r220470
This commit is contained in:
parent
c4feb478a6
commit
8c5c44aa7e
@ -39,6 +39,10 @@ a comma-separated list of name=val pairs. Supported names are:
|
||||
gcdead: setting gcdead=1 causes the garbage collector to clobber all stack slots
|
||||
that it thinks are dead.
|
||||
|
||||
memprofilerate: setting memprofilerate=X changes the setting for
|
||||
runtime.MemProfileRate. Refer to the description of this variable for how
|
||||
it is used and its 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.
|
||||
|
@ -22,6 +22,10 @@ enum {
|
||||
// gotraceback value.
|
||||
static uint32 traceback_cache = ~(uint32)0;
|
||||
|
||||
extern volatile intgo runtime_MemProfileRate
|
||||
__asm__ (GOSYM_PREFIX "runtime.MemProfileRate");
|
||||
|
||||
|
||||
// The GOTRACEBACK environment variable controls the
|
||||
// behavior of a Go program that is crashing and exiting.
|
||||
// GOTRACEBACK=0 suppress all tracebacks
|
||||
@ -315,6 +319,11 @@ runtime_signalstack(byte *p, int32 n)
|
||||
|
||||
DebugVars runtime_debug;
|
||||
|
||||
// Holds variables parsed from GODEBUG env var,
|
||||
// except for "memprofilerate" since there is an
|
||||
// existing var for that value which is int
|
||||
// instead of in32 and might have an
|
||||
// initial value.
|
||||
static struct {
|
||||
const char* name;
|
||||
int32* value;
|
||||
@ -349,7 +358,12 @@ runtime_parsedebugvars(void)
|
||||
for(;;) {
|
||||
for(i=0; i<(intgo)nelem(dbgvar); i++) {
|
||||
n = runtime_findnull((const byte*)dbgvar[i].name);
|
||||
if(runtime_mcmp(p, dbgvar[i].name, n) == 0 && p[n] == '=')
|
||||
if(runtime_mcmp(p, "memprofilerate", n) == 0 && p[n] == '=')
|
||||
// Set the MemProfileRate directly since it
|
||||
// is an int, not int32, and should only lbe
|
||||
// set here if specified by GODEBUG
|
||||
runtime_MemProfileRate = runtime_atoi(p+n+1);
|
||||
else if(runtime_mcmp(p, dbgvar[i].name, n) == 0 && p[n] == '=')
|
||||
*dbgvar[i].value = runtime_atoi(p+n+1);
|
||||
}
|
||||
p = (const byte *)runtime_strstr((const char *)p, ",");
|
||||
|
Loading…
Reference in New Issue
Block a user