From owner-freebsd-hardware Tue Jun 4 09:56:55 1996 Return-Path: owner-hardware Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id JAA25360 for hardware-outgoing; Tue, 4 Jun 1996 09:56:55 -0700 (PDT) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.19]) by freefall.freebsd.org (8.7.5/8.7.3) with SMTP id JAA25355 for ; Tue, 4 Jun 1996 09:56:51 -0700 (PDT) Received: (from bde@localhost) by godzilla.zeta.org.au (8.6.12/8.6.9) id CAA08708; Wed, 5 Jun 1996 02:55:54 +1000 Date: Wed, 5 Jun 1996 02:55:54 +1000 From: Bruce Evans Message-Id: <199606041655.CAA08708@godzilla.zeta.org.au> To: michaelv@HeadCandy.com, sef@kithrup.com Subject: Re: Hayes ESP Cc: hardware@freebsd.org Sender: owner-hardware@freebsd.org X-Loop: FreeBSD.org Precedence: bulk >>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