go/src
Dmitriy Vyukov cb133c6607 runtime: do not collect GC roots explicitly
Currently we collect (add) all roots into a global array in a single-threaded GC phase.
This hinders parallelism.
With this change we just kick off parallel for for number_of_goroutines+5 iterations.
Then parallel for callback decides whether it needs to scan stack of a goroutine
scan data segment, scan finalizers, etc. This eliminates the single-threaded phase entirely.
This requires to store all goroutines in an array instead of a linked list
(to allow direct indexing).
This CL also removes DebugScan functionality. It is broken because it uses
unbounded stack, so it can not run on g0. When it was working, I've found
it helpless for debugging issues because the two algorithms are too different now.
This change would require updating the DebugScan, so it's simpler to just delete it.

With 8 threads this change reduces GC pause by ~6%, while keeping cputime roughly the same.

garbage-8
allocated                 2987886      2989221      +0.04%
allocs                      62885        62887      +0.00%
cputime                  21286000     21272000      -0.07%
gc-pause-one             26633247     24885421      -6.56%
gc-pause-total             873570       811264      -7.13%
rss                     242089984    242515968      +0.18%
sys-gc                   13934336     13869056      -0.47%
sys-heap                205062144    205062144      +0.00%
sys-other                12628288     12628288      +0.00%
sys-stack                11534336     11927552      +3.41%
sys-total               243159104    243487040      +0.13%
time                      2809477      2740795      -2.44%

R=golang-codereviews, rsc
CC=cshapiro, golang-codereviews, khr
https://golang.org/cl/46860043
2014-01-21 13:06:57 +04:00
..
cmd runtime, cmd/gc: Get rid of vararg channel calls. 2014-01-17 14:48:45 -08:00
lib9 lib9, libmach, cmd/dist, go/build: add support for GOOS=solaris 2014-01-07 23:12:12 +11:00
libbio build: do not use the host's libbio on Plan 9 2013-12-09 18:39:58 -05:00
liblink liblink: fix comments. Someone was overzealous with search & replace. 2014-01-09 19:46:46 -08:00
libmach libmach: use different names for different Ureg types 2014-01-08 20:37:27 -05:00
pkg runtime: do not collect GC roots explicitly 2014-01-21 13:06:57 +04:00
Make.dist
all.bash
all.bat
all.rc
clean.bash
clean.bat
clean.rc
make.bash cmd/dist, build: support building statically linked toolchain 2013-10-01 23:44:20 -04:00
make.bat cmd/dist: fix windows build. 2013-08-02 14:29:04 -07:00
make.rc
race.bash race.bash, race.bat: build a race enabled cmd/cgo before trying to use it 2013-09-29 10:34:41 +10:00
race.bat race.bat: set exit status 2013-12-17 15:09:42 +04:00
run.bash cgo: enable cgo on dragonfly 2013-09-04 15:19:21 -07:00
run.bat runtime/race: add end-to-end test on windows 2013-08-15 12:13:00 +10:00
run.rc build: remove builder from test suite (fix build) 2013-08-01 13:49:00 +10:00
sudo.bash