Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Mar 1998 19:48:10 -0800
From:      John-Mark Gurney <gurney_j@efn.org>
To:        Mike Smith <mike@smith.net.au>
Cc:        shimon@simon-shapiro.org, Evan Champion <evanc@synapse.net>, current@FreeBSD.ORG, Matthew Thyer <Matthew.Thyer@dsto.defence.gov.au>
Subject:   Re: silo overflows (Was Re: 3.0-RELEASE?)
Message-ID:  <19980304194810.22210@hydrogen.nike.efn.org>
In-Reply-To: <199803050323.TAA23786@dingo.cdrom.com>; from Mike Smith on Wed, Mar 04, 1998 at 07:23:52PM -0800
References:  <XFMail.980304185844.shimon@simon-shapiro.org> <199803050323.TAA23786@dingo.cdrom.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Mike Smith scribbled this message on Mar 4:
> > > 
> > > I have a Pentium Pro 200 with 16650's (and the 16650's are detected) and
> > > during a full install of FreeBSD over 128kbps ISDN (230.4kbps port speed)
> > > I
> > > would get around 700 FIFO overflows.  Someone would have to do a lot of
> > > convincing to get me to believe the driver is working properly when a
> > > machine like that can't handle a 128kbps datastream in single user
> > > mode...
> > 
> > Assume you are doing something like FTP of packages-current.
> > You are reading about 16 kilobytes per second, which is just about 1,142
> > interrupts per second (assuming a 16 myte FIFO and 14 byte treshold.
> 
> Interrupt rate is less significant in this issue than interrupt 
> latency.  At 230kbps you have about 43us/character.  Without a 16650 
> datasheet I can't confirm whether the standard FIFO trigger levels are 
> doubled or not; if they are, you have 4 bytes or about 170us between 
> when the interrupt is generated and "too late".

actually, the default for the 16550 is set to 14 characters.. and as
there is a 16 character buffer, that means only 2 characters...

you might want to take a look at pr#2239...  it has a patch to change
the default trigger level from 14 down to 8...  though the patch is
slightly out of date (made to rev 1.154 of sio.c), it should be obvious
what is needed...

> Because of the way the sio driver handles interrupts, you want to look 
> for code sections bracketed with disable_intr/enable_intr calls to find 
> possible culprits.

that's another good thing to look for...  hmm... another modificate to
the spl/disable_intr/enable_intr would be to keep track of the last few
functions that did disable interrupts and then when sio discovers an
overflow, to output those...

> >  Every
> > 1KB, you write to disk, so now we have 1,160 interrupts per second. 
> 
> There's no guarantee of this; particularly not if I/O clustering, async 
> or soft updates are enabled.  Filesystems are mounted async during an 
> install.

yep...

-- 
  John-Mark Gurney                          Modem/FAX: +1 541 683 6954
  Cu Networking					  P.O. Box 5693, 97405

  Live in Peace, destroy Micro$oft, support free software, run FreeBSD
	    Don't trust anyone you don't have the source for

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19980304194810.22210>