]> Cypherpunks repositories - gostls13.git/commit
runtime: simplify procresize
authorDmitry Vyukov <dvyukov@google.com>
Mon, 22 Dec 2014 15:14:00 +0000 (18:14 +0300)
committerDmitry Vyukov <dvyukov@google.com>
Thu, 25 Dec 2014 10:52:55 +0000 (10:52 +0000)
commitce9a4afa6f931c1ab832b4c92d3d6768fbd2ab7a
treeec8280933c9ca82e4664730a3467bbf00f78c8ef
parentc7eb9663aa2cf71811fde079b83159ea09cbd106
runtime: simplify procresize

Currently we do very a complex rebalancing of runnable goroutines
between queues, which tries to preserve scheduling fairness.
Besides being complex and error-prone, it also destroys all locality
of scheduling.

This change uses simpler scheme: leave runnable goroutines where
they are, during starttheworld start all Ps with local work,
plus start one additional P in case we have excessive runnable
goroutines in local queues or in the global queue.

The schedler must be able to operate efficiently w/o the rebalancing,
because garbage collections do not have to happen frequently.

The immediate need is execution tracing support: handling of
garabage collection which does stoptheworld/starttheworld several
times becomes exceedingly complex if the current execution can
jump between Ps during starttheworld.

Change-Id: I4fdb7a6d80ca4bd08900d0c6a0a252a95b1a2c90
Reviewed-on: https://go-review.googlesource.com/1951
Reviewed-by: Rick Hudson <rlh@golang.org>
src/runtime/proc1.go