1
0
mirror of https://github.com/golang/go synced 2024-10-04 02:21:21 -06:00
go/src/pkg/runtime
Russ Cox d324f2143b runtime: parallelize garbage collector mark + sweep
Running test/garbage/parser.out.

On a 4-core Lenovo X201s (Linux):
31.12u 0.60s 31.74r 	 1 cpu, no atomics
32.27u 0.58s 32.86r 	 1 cpu, atomic instructions
33.04u 0.83s 27.47r 	 2 cpu

On a 16-core Xeon (Linux):
33.08u 0.65s 33.80r 	 1 cpu, no atomics
34.87u 1.12s 29.60r 	 2 cpu
36.00u 1.87s 28.43r 	 3 cpu
36.46u 2.34s 27.10r 	 4 cpu
38.28u 3.85s 26.92r 	 5 cpu
37.72u 5.25s 26.73r	 6 cpu
39.63u 7.11s 26.95r	 7 cpu
39.67u 8.10s 26.68r	 8 cpu

On a 2-core MacBook Pro Core 2 Duo 2.26 (circa 2009, MacBookPro5,5):
39.43u 1.45s 41.27r 	 1 cpu, no atomics
43.98u 2.95s 38.69r 	 2 cpu

On a 2-core Mac Mini Core 2 Duo 1.83 (circa 2008; Macmini2,1):
48.81u 2.12s 51.76r 	 1 cpu, no atomics
57.15u 4.72s 51.54r 	 2 cpu

The handoff algorithm is really only good for two cores.
Beyond that we will need to so something more sophisticated,
like have each core hand off to the next one, around a circle.
Even so, the code is a good checkpoint; for now we'll limit the
number of gc procs to at most 2.

R=dvyukov
CC=golang-dev
https://golang.org/cl/4641082
2011-09-30 09:40:01 -04:00
..
386 runtime: speed up cgo calls 2011-08-18 12:17:09 -04:00
amd64 runtime: add runtime· prefix to showframe 2011-08-29 10:55:21 -04:00
arm runtime: add runtime· prefix to showframe 2011-08-29 10:55:21 -04:00
cgo cgo: note that CString result must be freed 2011-08-31 06:44:55 -03:00
darwin runtime: parallelize garbage collector mark + sweep 2011-09-30 09:40:01 -04:00
debug gc: use more Go-like names for methods 2011-07-27 17:56:13 -04:00
freebsd runtime: faster chan creation on Linux/FreeBSD/Plan9 2011-08-04 08:31:03 -04:00
linux runtime: parallelize garbage collector mark + sweep 2011-09-30 09:40:01 -04:00
openbsd runtime: fix openbsd 386 raisesigpipe 2011-09-05 13:05:57 -04:00
plan9 runtime: faster chan creation on Linux/FreeBSD/Plan9 2011-08-04 08:31:03 -04:00
pprof runtime/pprof: enable test on windows 2011-09-17 18:00:32 +10:00
windows runtime: implement pprof support for windows 2011-09-17 17:57:59 +10:00
append_test.go runtime: make TestSideEffectOrder work twice 2011-07-14 23:43:03 -04:00
cgocall.c runtime: use cgo runtime functions to call windows syscalls 2011-08-27 23:17:00 +10:00
cgocall.h runtime: scheduler, cgo reorganization 2011-03-07 10:37:42 -05:00
chan_test.go runtime: add test for multiple concurrent channel consumers 2011-09-05 07:40:50 -04:00
chan.c runtime: check for nil value pointer in select syncsend case 2011-09-26 20:46:37 -07:00
closure_test.go gc: make merely referencing an outer variable in a closure not force heapallocation. 2011-06-01 17:02:43 +02:00
complex.c runtime: ,s/[a-zA-Z0-9_]+/runtime·&/g, almost 2010-11-04 14:00:19 -04:00
cpuprof.c gc: fix pprof deadlock 2011-07-28 21:03:40 -04:00
debug.go runtime: cpu profiling support 2011-03-23 11:43:37 -04:00
error.go gc: descriptive panic for nil pointer -> value method call 2011-06-17 15:23:27 -04:00
export_test.go runtime: faster entersyscall, exitsyscall 2011-07-19 11:01:17 -04:00
extern.go src/pkg: make package doc comments consistently start with "Package foo". 2011-04-20 09:57:05 +10:00
float.c runtime: ,s/[a-zA-Z0-9_]+/runtime·&/g, almost 2010-11-04 14:00:19 -04:00
goc2c.c runtime: handle string + char literals in goc2c 2011-08-31 07:11:31 -04:00
hashmap.c gc: implement nil map support 2011-08-17 14:56:27 -04:00
hashmap.h runtime: replace runtime.mcpy with runtime.memmove 2011-07-12 17:30:40 -07:00
iface.c runtime: remove rnd calls that pass a second argument of 1 2011-07-24 22:03:17 -07:00
Makefile runtime: windows/amd64 callbacks fixed and syscall fixed to allow using it in callbacks 2011-08-30 22:02:02 +10:00
malloc.goc runtime: make arm work on Ubuntu Natty qemu 2011-08-31 07:02:46 -04:00
malloc.h runtime: parallelize garbage collector mark + sweep 2011-09-30 09:40:01 -04:00
mcache.c runtime: add per-M caches for MemStats 2011-07-18 14:52:57 -04:00
mcentral.c runtime: faster allocator, garbage collector 2011-02-02 23:03:47 -05:00
mem.go runtime: add UpdateMemStats, use in tests 2011-07-22 00:55:01 -04:00
mfinal.c runtime: fix unused variable warning 2011-03-02 15:29:13 -05:00
mfixalloc.c runtime: ,s/[a-zA-Z0-9_]+/runtime·&/g, almost 2010-11-04 14:00:19 -04:00
mgc0.c runtime: parallelize garbage collector mark + sweep 2011-09-30 09:40:01 -04:00
mheap.c runtime: track HeapIdle 2011-09-14 11:29:01 -04:00
mkasmh.sh runtime: use cgo runtime functions to call windows syscalls 2011-08-27 23:17:00 +10:00
mkgodefs.sh runtime: generate Go defs for C types. 2011-01-31 12:27:28 +01:00
mkversion.c runtime: fix mkversion to output valid path separators 2011-04-27 15:47:12 -04:00
mprof.goc pkg: spelling tweaks, I-Z 2011-05-30 18:02:59 +10:00
msize.c runtime: faster allocator, garbage collector 2011-02-02 23:03:47 -05:00
print.c runtime: parallelize garbage collector mark + sweep 2011-09-30 09:40:01 -04:00
proc_test.go runtime: faster entersyscall, exitsyscall 2011-07-19 11:01:17 -04:00
proc.c runtime: parallelize garbage collector mark + sweep 2011-09-30 09:40:01 -04:00
proc.p runtime: faster entersyscall/exitsyscall 2011-07-23 12:22:55 -04:00
rune.c runtime: ,s/[a-zA-Z0-9_]+/runtime·&/g, almost 2010-11-04 14:00:19 -04:00
runtime1.goc runtime: ,s/[a-zA-Z0-9_]+/runtime·&/g, almost 2010-11-04 14:00:19 -04:00
runtime-gdb.py runtime: gdb support, fix pretty printing of channels. 2011-09-29 12:07:38 -07:00
runtime.c runtime: fix void warnings 2011-08-23 13:13:27 -04:00
runtime.h runtime: parallelize garbage collector mark + sweep 2011-09-30 09:40:01 -04:00
sema_test.go runtime: add Semacquire/Semrelease benchmarks 2011-06-28 11:15:24 -04:00
sema.goc runtime: simplify stack traces 2011-08-22 23:26:39 -04:00
sig.go runtime: split extern.go into debug.go, extern.go, sig.go. 2010-06-21 20:53:49 -07:00
sigqueue.goc runtime: ,s/[a-zA-Z0-9_]+/runtime·&/g, almost 2010-11-04 14:00:19 -04:00
slice.c gc: zero-width struct, zero-length array fixes 2011-07-27 16:47:45 -04:00
softfloat64_test.go arm: precise float64 software floating point 2010-10-25 17:55:50 -07:00
softfloat64.go go/printer, gofmt: fix alignment of "=" in const/var declarations 2011-05-09 15:16:34 -07:00
stack.h runtime: increase stack system space on windows/amd64 2011-09-17 20:39:29 +10:00
string.goc cgo: fix GoBytes 2011-08-30 14:33:16 -03:00
symtab_test.go runtime: fix data race in findfunc() 2011-07-29 13:47:24 -04:00
symtab.c runtime: add runtime· prefix to showframe 2011-08-29 10:55:21 -04:00
syscall_windows_test.go runtime: syscall to return both AX and DX for windows/386 2011-09-14 16:19:45 +10:00
type.go reflect: allow Slice of arrays 2011-04-18 20:00:42 -04:00
type.h gc: implement nil chan support 2011-08-17 15:54:17 -04:00