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>