diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2014-12-22 18:14:00 +0300 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2014-12-25 10:52:55 +0000 |
| commit | ce9a4afa6f931c1ab832b4c92d3d6768fbd2ab7a (patch) | |
| tree | ec8280933c9ca82e4664730a3467bbf00f78c8ef /src/runtime/stack_test.go | |
| parent | c7eb9663aa2cf71811fde079b83159ea09cbd106 (diff) | |
| download | go-ce9a4afa6f931c1ab832b4c92d3d6768fbd2ab7a.tar.xz | |
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>
Diffstat (limited to 'src/runtime/stack_test.go')
0 files changed, 0 insertions, 0 deletions
