Descriptionundo CL 9776044 / 1e280889f997
Failure on bot:
http://build.golang.org/log/f4c648906e1289ec2237c1d0880fb1a8b1852a08
««« original CL description
runtime: fix CPU underutilization
runtime.newproc/ready are deliberately sloppy about waking new M's,
they only ensure that there is at least 1 spinning M.
Currently to compensate for that, schedule() checks if the current P
has local work and there are no spinning M's, it wakes up another one.
It does not work if goroutines do not call schedule.
With this change a spinning M wakes up another M when it finds work to do.
It's also not ideal, but it fixes the underutilization.
A proper check would require to know the exact number of runnable G's,
but it's too expensive to maintain.
Fixes issue 5586.
R=rsc
TBR=rsc
CC=gobot, golang-dev
https://codereview.appspot.com/9776044
»»»
Patch Set 1 #Patch Set 2 : diff -r 1e280889f997 https://dvyukov%40google.com@code.google.com/p/go/ #Patch Set 3 : diff -r 1e280889f997 https://dvyukov%40google.com@code.google.com/p/go/ #
MessagesTotal messages: 3
|