From ceeda72babae48ab2dd25875497299d0dcbbd20d Mon Sep 17 00:00:00 2001 From: Andrew Gerrand Date: Tue, 23 Jul 2013 09:50:35 +1000 Subject: [release-branch.go1.1] runtime: prevent sysmon from polling network excessivly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ««« CL 11569043 / 6b3c351c7fe6 runtime: prevent sysmon from polling network excessivly If the network is not polled for 10ms, sysmon starts polling network on every iteration (every 20us) until another thread blocks in netpoll. Fixes issue 5922 . R=golang-dev, iant CC=golang-dev https://golang.org/cl/11569043 »»» Update #5928 R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/11438044 --- src/pkg/runtime/proc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pkg/runtime/proc.c b/src/pkg/runtime/proc.c index 5734509e0c..9ad2ea091b 100644 --- a/src/pkg/runtime/proc.c +++ b/src/pkg/runtime/proc.c @@ -2015,6 +2015,7 @@ sysmon(void) lastpoll = runtime·atomicload64(&runtime·sched.lastpoll); now = runtime·nanotime(); if(lastpoll != 0 && lastpoll + 10*1000*1000 > now) { + runtime·cas64(&runtime·sched.lastpoll, lastpoll, now); gp = runtime·netpoll(false); // non-blocking injectglist(gp); } -- cgit v1.2.3-54-g00ecf