From mboxrd@z Thu Jan 1 00:00:00 1970 From: erik quanstrom Date: Mon, 26 Oct 2009 16:53:21 -0400 To: 9fans@9fans.net Message-ID: <8430a4bb32e0ad61f7680a0210d91fdd@brasstown.quanstro.net> In-Reply-To: <<4B4622FF-CD80-4466-9D07-316E2835D10F@pvv.ntnu.no>> References: <<4B4622FF-CD80-4466-9D07-316E2835D10F@pvv.ntnu.no>> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Subject: Re: [9fans] soverflow for fx->in Topicbox-Message-UUID: 908d6e0e-ead5-11e9-9d60-3106f5b1d025 On Mon Oct 26 12:35:07 EDT 2009, andreer@pvv.ntnu.no wrote: > Our cpu/auth/file went belly up some time during the weekend. It > responded to ping, but we couldn't drawterm in. No response from > the vblade process providing storage to our XenServers either. > Walking down to the machine I found the screen full of "soverflow > for fx->in" messages. I had to reboot it to get the virtual machines > back online, so this is my only clue (print statement in > /sys/src/9/pc/devether.c:186 ). The machine had been working happily > for over a week before this. Any ideas as to how i can keep this > from happening again? > > The ethernet controller is an "IntelĀ®PRO/1000 GT Desktop Adapter" > according to the sticker on the back, on bootup i get > #l0: i82543: 1000 Mbps port 0xFEBE0000 irq 5 tu 1514:000e0c73d17a a soft overflow is when there are packets coming in that don't fit on the ethernet queue. soft overflows are not bugs. it's a consequence of having a finite memory; one cannot queue infinitely. however, printing each soft overflow to the console can put one in a difficult to recover from situation. i would suggest reverting these changes ; diff -c /n/sourcesdump/2009/0601/plan9/sys/src/9/pc/devether.c /n/sourcesdump/2009/0404/plan9/sys/src/9/pc/devether.c /n/sourcesdump/2009/0601/plan9/sys/src/9/pc/devether.c:182,196 - /n/sourcesdump/2009/0404/plan9/sys/src/9/pc/devether.c:182,192 else if(xbp = iallocb(len)){ memmove(xbp->wp, pkt, len); xbp->wp += len; - if(qpass(f->in, xbp) < 0) { - print("soverflow for f->in\n"); + if(qpass(f->in, xbp) < 0) ether->soverflows++; - } } - else { - print("soverflow iallocb\n"); + else ether->soverflows++; - } } else etherrtrace(f, pkt, len); /n/sourcesdump/2009/0601/plan9/sys/src/9/pc/devether.c:198,207 - /n/sourcesdump/2009/0404/plan9/sys/src/9/pc/devether.c:194,201 } if(fx){ - if(qpass(fx->in, bp) < 0) { - print("soverflow for fx->in\n"); + if(qpass(fx->in, bp) < 0) ether->soverflows++; - } return 0; } if(fromwire){ /n/sourcesdump/2009/0601/plan9/sys/src/9/pc/devether.c:239,246 - /n/sourcesdump/2009/0404/plan9/sys/src/9/pc/devether.c:233,238 } if(!loopback){ - if(qfull(ether->oq)) - print("etheroq: WARNING: ether->oq full!\n"); qbwrite(ether->oq, bp); if(ether->transmit != nil) ether->transmit(ether); - erik