diff options
| author | Dmitriy Vyukov <dvyukov@google.com> | 2011-07-12 10:56:21 -0700 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2011-07-12 10:56:21 -0700 |
| commit | 86e7323bdf8cb2c614ff6b63ca5909f484db8642 (patch) | |
| tree | 1e69d90c47e21a5c28cffd979a7bdcbd268ed951 /src/pkg/runtime | |
| parent | 88e0c0517aa0dfdb45441bb361009cd4866afb22 (diff) | |
| download | go-86e7323bdf8cb2c614ff6b63ca5909f484db8642.tar.xz | |
runtime: eliminate false sharing during stack growth
Remove static variable from runtime·oldstack().
Benchmark results on HP Z600 (2 x Xeon E5620, 8 HT cores, 2.40GHz)
are as follows (with CL 4657091 applied):
benchmark old ns/op new ns/op delta
BenchmarkStackGrowth 1183.00 1180.00 -0.25%
BenchmarkStackGrowth-2 1249.00 1211.00 -3.04%
BenchmarkStackGrowth-4 954.00 805.00 -15.62%
BenchmarkStackGrowth-8 701.00 683.00 -2.57%
BenchmarkStackGrowth-16 465.00 415.00 -10.75%
R=rsc
CC=golang-dev
https://golang.org/cl/4693042
Diffstat (limited to 'src/pkg/runtime')
| -rw-r--r-- | src/pkg/runtime/proc.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/pkg/runtime/proc.c b/src/pkg/runtime/proc.c index 133203a3ac..17397ca821 100644 --- a/src/pkg/runtime/proc.c +++ b/src/pkg/runtime/proc.c @@ -709,7 +709,7 @@ runtime·oldstack(void) uint32 argsize; byte *sp; G *g1; - static int32 goid; + int32 goid; //printf("oldstack m->cret=%p\n", m->cret); @@ -723,6 +723,7 @@ runtime·oldstack(void) runtime·mcpy(top->argp, sp, argsize); } goid = old.gobuf.g->goid; // fault if g is bad, before gogo + USED(goid); if(old.free != 0) runtime·stackfree(g1->stackguard - StackGuard, old.free); |
