From 68572644576be5f1f7121428755e7d8af5b7044c Mon Sep 17 00:00:00 2001 From: Dmitriy Vyukov Date: Fri, 19 Jul 2013 17:45:34 +0400 Subject: [PATCH] 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 #5922. R=golang-dev, iant CC=golang-dev https://golang.org/cl/11569043 --- 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 fe32f2c28b0..18ddce80184 100644 --- a/src/pkg/runtime/proc.c +++ b/src/pkg/runtime/proc.c @@ -2098,6 +2098,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); }