Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Aug 1995 13:44:15 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        jkh@time.cdrom.com, phk@critter.tfs.com
Cc:        freebsd-hackers@FreeBSD.org, jgreco@brasil.moneng.mei.com, phk@freefall.FreeBSD.org, terryl@CS.Stanford.EDU
Subject:   Re: ISDN Anyone?
Message-ID:  <199508250344.NAA29018@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> There is actually a lot more promise in a 16550 or 16650 at 460800 bps.
>> You only get 1/16th or 1/32th the number of interrupts.

>Hmmm.  I find that the serial interrupt overhead is pretty intense at 115.2
>even with a 16550.  You know some secret for doing this I don't?

Hrmph.  I've posted accurate benchmarks about 50 times saying that for
raw mode select()/read()/write() i/o, the overhead of the sio driver on
a 486DX2/66 VLB system is about 7% for input and 3.5% for output.  Of
this, about 0.5% for input and 0.5% for ouput would go away if
interrupts were free, and about 2.5% more for input and 1.5% for output
would go away if the hardware was infinitely fast.  The remainder (about
half) is pure software overhead - it exists even for ptys.  In fact, the
pty implementation is not so good (for raw mode) and the input overhead
is 5-10 times larger for ptys.

An interrupt overhead of 0.5+0.5% isn't small, but it is acceptable when
the software overheads are so large.  Same for the hardware overhead of
2.5+1.5%.

The 32-bit fifos on the 16650 would reduce the interrupt (and total)
overhead by a whole 0.25%+0.25%.

For the current cyclades driver, the fifos are only 12 bytes instead of
16, so the interrupt overhead is about 16/12 times larger.  Other overheads
are similar.

For 16450 UARTs, there are about 16 times as many interrupts, so the
interrupt overhead is about 16 times higher = 8% (more precisely,
input overhead is 11% more and output overhead is 10% more).

ISA parallel ports have significantly higher overheads that 16450s.  They
generate an interrupt per byte for output and an interrupt per nybble for
input.  They take about twice as many i/o's per byte for output and even
more for input.  The are only "fast" compared with serial ports because
serial ports run at a fixed, relatively low, speed.

Bruce



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