From 489917fc400ee25d34dfb06306da3b3cef126963 Mon Sep 17 00:00:00 2001
From: Carlos Amedee <carlos@golang.org>
Date: Tue, 22 Apr 2025 13:42:26 -0700
Subject: [PATCH] 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>
---
 src/runtime/proc.go     | 8 ++------
 src/runtime/runtime2.go | 7 +++----
 2 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/src/runtime/proc.go b/src/runtime/proc.go
index 44c6d0b4e43..db7a5b2bb1c 100644
--- a/src/runtime/proc.go
+++ b/src/runtime/proc.go
@@ -3387,12 +3387,8 @@ top:
 	// blocked thread (e.g. it has already returned from netpoll, but does
 	// not set lastpoll yet), this thread will do blocking netpoll below
 	// anyway.
-	// We only poll from one thread at a time to avoid kernel contention
-	// on machines with many cores.
-	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
+	if netpollinited() && netpollAnyWaiters() && sched.lastpoll.Load() != 0 {
+		if list, delta := netpoll(0); !list.empty() { // non-blocking
 			gp := list.pop()
 			injectglist(&list)
 			netpollAdjustWaiters(delta)
diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go
index f7371c450bd..05cf345baf6 100644
--- a/src/runtime/runtime2.go
+++ b/src/runtime/runtime2.go
@@ -756,10 +756,9 @@ type p struct {
 }
 
 type schedt struct {
-	goidgen    atomic.Uint64
-	lastpoll   atomic.Int64 // time of last network poll, 0 if currently polling
-	pollUntil  atomic.Int64 // time to which current poll is sleeping
-	pollingNet atomic.Int32 // 1 if some P doing non-blocking network poll
+	goidgen   atomic.Uint64
+	lastpoll  atomic.Int64 // time of last network poll, 0 if currently polling
+	pollUntil atomic.Int64 // time to which current poll is sleeping
 
 	lock mutex
 
-- 
GitLab