mirror of
https://github.com/golang/go.git
synced 2025-05-05 23:53:05 +00:00
Revert "runtime: only poll network from one P at a time in findRunnable"
This reverts commit 352dd2d932c1c1c6dbc3e112fcdfface07d4fffb. Reason for revert: cockroachdb benchmark failing. Likely due to CL 564197. For #73474 Change-Id: Id5d83cd8bb8fe9ee7fddb8dc01f1a01f2d40154e Reviewed-on: https://go-review.googlesource.com/c/go/+/667336 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> Reviewed-by: Mauri de Souza Meneguzzo <mauri870@gmail.com> Auto-Submit: Carlos Amedee <carlos@golang.org>
This commit is contained in:
parent
83b53527fa
commit
489917fc40
@ -3387,12 +3387,8 @@ top:
|
|||||||
// blocked thread (e.g. it has already returned from netpoll, but does
|
// blocked thread (e.g. it has already returned from netpoll, but does
|
||||||
// not set lastpoll yet), this thread will do blocking netpoll below
|
// not set lastpoll yet), this thread will do blocking netpoll below
|
||||||
// anyway.
|
// anyway.
|
||||||
// We only poll from one thread at a time to avoid kernel contention
|
if netpollinited() && netpollAnyWaiters() && sched.lastpoll.Load() != 0 {
|
||||||
// on machines with many cores.
|
if list, delta := netpoll(0); !list.empty() { // non-blocking
|
||||||
if netpollinited() && netpollAnyWaiters() && sched.lastpoll.Load() != 0 && sched.pollingNet.Swap(1) == 0 {
|
|
||||||
list, delta := netpoll(0)
|
|
||||||
sched.pollingNet.Store(0)
|
|
||||||
if !list.empty() { // non-blocking
|
|
||||||
gp := list.pop()
|
gp := list.pop()
|
||||||
injectglist(&list)
|
injectglist(&list)
|
||||||
netpollAdjustWaiters(delta)
|
netpollAdjustWaiters(delta)
|
||||||
|
@ -756,10 +756,9 @@ type p struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type schedt struct {
|
type schedt struct {
|
||||||
goidgen atomic.Uint64
|
goidgen atomic.Uint64
|
||||||
lastpoll atomic.Int64 // time of last network poll, 0 if currently polling
|
lastpoll atomic.Int64 // time of last network poll, 0 if currently polling
|
||||||
pollUntil atomic.Int64 // time to which current poll is sleeping
|
pollUntil atomic.Int64 // time to which current poll is sleeping
|
||||||
pollingNet atomic.Int32 // 1 if some P doing non-blocking network poll
|
|
||||||
|
|
||||||
lock mutex
|
lock mutex
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user