Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Jun 1996 02:55:54 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        michaelv@HeadCandy.com, sef@kithrup.com
Cc:        hardware@freebsd.org
Subject:   Re: Hayes ESP
Message-ID:  <199606041655.CAA08708@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>>I don't know how much, if any, advantage they have over a simple 16550,
>>however.  When I did the port, Bruce said he didn't think there would be
>>much improvement, if any, so...

>Well, I have no hard figures.  I did have it record maximum received
>characters in each input loop, and I don't think it ever got over 35.
>But, that's 19 more than a 16550 can handle (didn't happen often,
>though).

>On the other hand, where I want to use this is on a slooow 386 dial-in
>server with an IDE drive.  I expect to get much enhanced performance
>out of the ESP card there. :-)

You should only get a small improvement.  386 slowness is mostly in
integer instructions, but tty driver slowness is mostly in the ISA bus
interface and in interrupt entry and exit.  The ISA bus speed is
independent of the CPU.  Interrupt entry and exit speed depends mainly
on the memory speed so it is relatively small (although numerically
large) on slow 386's.

Estimate of actual improvement:
The serial interrupt overhead for a 386/20 is approx. 30 us.  At 115200
bps input only through a 16550, there are approx. 115200/14 = 822
interrupt/sec = 24660 us/s = 2.5% overhead.  Through a Hayes ESP with 35
characters received per interrupt, the corresponding overhead is 1%.
Through a Hayes ESP with 1024 characters received per interrupt, the
corresponding overhead is 0.3%.

This is the variable part of the overhead.  I don't know the fixed parts
exactly, but they are much larger.  I guess they are about 25% for raw
mode and 200% (i.e., doesn't work for cooked mode).  Here are some actual
overheads:

/*
 * Results for serial overheads (in %).
 * All for a single line in raw mode at 115200 bps.
 * machine uart O/S              read  write  r+w    comments
 x 486/66 16550 FreeBSD-1.1R++    5.6   2.9   8.9    ++ = changes, x = old better
 *              FreeBSD-2.2D      6.3   2.9   9.6    D = development
 *              (cat)             6.7   2.9  10.2               thru=11.25K/s
 *              (cslip)           6.7   3.6          ping=17ms, thru=10.78K/s
 *              (ppp)             9.1   4.3          ping=26ms, thru=10.74K/s
 *              (pppu)           11.3   6.6          ping=21ms, thru=10.80K/s
 *              (zmodem)         11.4   5.8                     thru=10.73K/s
 *              linux-1.1.12nti   6.6   2.8   8.9    nti = new-tty new-isr
 *              FreeBSD-2.1Dp     6.6   3.1   9.9    p = prof
 *              (ppp)             9.9   5.9
 *              (pppu)           13.7   9.1
 y       cd1400 FreeBSD-2.1Dp     5.9   3.3   9.0    y = a little old
 *              linux-1.2.0      29.0   4.7  29.5
 y              FreeBSD-2.1Db    29.7   6.9S 38.6S   b = cyb driver, S = slow w
 y              (cslip)           9     7            ping=36ms
 y              (ppp)            11     7            ping=45ms
 y              FreeBSD-2.1Dpb   34.5   7.6S 44.5S
 *        16450 FreeBSD-2.1D     16.0  12.4  27.5
 *              (cslip)          17    15            ping=16.5ms
 *              (ppp)            19    14            ping=25.5ms
 *              FreeBSD-2.1Dp    19.7  14.4  32.6
 *              (cslip)          18    16            ping=16ms
 *              (ppp)            20    16            ping=25ms
 *              linux-1.1.12nti  23.1  19.1  35.7
 *              linux-1.2.0      23.9  19.8  37.3
 *483/33 cd1400	FreeBSD-2.1D      5.9   3.1   9.7
 *              (cslip)           9     5            ping=17ms
 *              (ppp)            13     6            ping=26ms
 *		FreeBSD-2.1Dp     6.8   3.2  10.7
 *        16550 FreeBSD-1.1B++    8.1   4.0  11.6
 *              linux-0.99.14+   27.0   9.3  34.8
 *        16450 FreeBSD-2.2D     19.5  15.3  33.3
 *              (cat)            20.3  15.6  34.0               thru=11.21K/s
 *              (cslip)          21.5  16.7          ping=17ms, thru=10.77K/s
 *              (ppp)            26.2  18.2          ping=26ms, thru=10.72K/s
 *              (pppu)           28.6  21.7          ping=21ms, thru=10.79K/s
 *              (zmodem)         27.6  19.2                     thru=10.69K/s
 *              FreeBSD-2.1Dp    23.8  19.2  39.5
 *              (ppp)            30.6  24.4
 *              (pppu)           35.3  29.1
 *              linux-1.2.0      29.4  25.1  44.6
 * 386/20 16450 FreeBSD-1.1B++   52.4  42.0  71.8
 * 486/33 16450 FreeBSD-2.2D     63.4  51.0  85.3    non-turbo - 5-10 x slower
 */

Bruce



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