Commit b2c43438 authored by Dmitriy Vyukov's avatar Dmitriy Vyukov

runtime: restore scavenger constants

Once and for all.
Broken in cl/108640043.
I've messed it before. To test scavenger-related changes
one needs to alter the constants during final testing.
And then it's very easy to submit with the altered constants.

LGTM=rsc
R=golang-codereviews
CC=golang-codereviews, rsc
https://golang.org/cl/136720044
parent 21a4bdef
...@@ -46,6 +46,8 @@ a comma-separated list of name=val pairs. Supported names are: ...@@ -46,6 +46,8 @@ a comma-separated list of name=val pairs. Supported names are:
schedtrace: setting schedtrace=X causes the scheduler to emit a single line to standard schedtrace: setting schedtrace=X causes the scheduler to emit a single line to standard
error every X milliseconds, summarizing the scheduler state. error every X milliseconds, summarizing the scheduler state.
scavenge: scavenge=1 enables debugging mode of heap scavenger.
The GOMAXPROCS variable limits the number of operating system threads that The GOMAXPROCS variable limits the number of operating system threads that
can execute user-level Go code simultaneously. There is no limit to the number of threads can execute user-level Go code simultaneously. There is no limit to the number of threads
that can be blocked in system calls on behalf of Go code; those do not count against that can be blocked in system calls on behalf of Go code; those do not count against
......
...@@ -2632,10 +2632,15 @@ sysmon(void) ...@@ -2632,10 +2632,15 @@ sysmon(void)
G *gp; G *gp;
// If we go two minutes without a garbage collection, force one to run. // If we go two minutes without a garbage collection, force one to run.
forcegcperiod = 2*60*1e6; forcegcperiod = 2*60*1e9;
// If a heap span goes unused for 5 minutes after a garbage collection, // If a heap span goes unused for 5 minutes after a garbage collection,
// we hand it back to the operating system. // we hand it back to the operating system.
scavengelimit = 5*60*1e6; scavengelimit = 5*60*1e9;
if(runtime·debug.scavenge > 0) {
// Scavenge-a-lot for testing.
forcegcperiod = 10*1e6;
scavengelimit = 20*1e6;
}
lastscavenge = runtime·nanotime(); lastscavenge = runtime·nanotime();
nscavenge = 0; nscavenge = 0;
// Make wake-up period small enough for the sampling to be correct. // Make wake-up period small enough for the sampling to be correct.
......
...@@ -302,6 +302,7 @@ runtime·tickspersecond(void) ...@@ -302,6 +302,7 @@ runtime·tickspersecond(void)
return res; return res;
} }
#pragma dataflag NOPTR
DebugVars runtime·debug; DebugVars runtime·debug;
static struct { static struct {
...@@ -314,6 +315,7 @@ static struct { ...@@ -314,6 +315,7 @@ static struct {
{"gcdead", &runtime·debug.gcdead}, {"gcdead", &runtime·debug.gcdead},
{"scheddetail", &runtime·debug.scheddetail}, {"scheddetail", &runtime·debug.scheddetail},
{"schedtrace", &runtime·debug.schedtrace}, {"schedtrace", &runtime·debug.schedtrace},
{"scavenge", &runtime·debug.scavenge},
}; };
void void
......
...@@ -562,6 +562,7 @@ struct DebugVars ...@@ -562,6 +562,7 @@ struct DebugVars
int32 gcdead; int32 gcdead;
int32 scheddetail; int32 scheddetail;
int32 schedtrace; int32 schedtrace;
int32 scavenge;
}; };
extern bool runtime·precisestack; extern bool runtime·precisestack;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment