Date: Thu, 7 Feb 2002 10:12:10 -0500 From: "Joe & Fhe Barbish" <barbish@a1poweruser.com> To: "Darren Pilgrim" <dmp@pantherdragon.org> Cc: "FBSD" <freebsd-questions@FreeBSD.ORG> Subject: RE: dc NIC stalls, generating 35-40k+ interupts/sec? Message-ID: <LPBBIGIAAKKEOEJOLEGOCENKCGAA.barbish@a1poweruser.com> In-Reply-To: <3C61FFFD.D8C5679@pantherdragon.org>
next in thread | previous in thread | raw e-mail | index | archive | help
This same pci bus / nic card performance slow down problem gets posted here about 2 times a month. I have never seen a solution posted that fixes this from a FBSD software point of view. The problem seems to be with how FBSD handles hardware that share the same irq assigned by the pc's bios during the pc post process. Read the manual on any nic card and it will say that the nic card needs it's own irq to work correctly. This does not mean that it will not function at all if it shares a irq. With all the new motherboards targeted at performance for ms/windows operating systems where the operating systems handles shared irq without any problems this is increasing becoming a problem for Unix flavored operating systems. The ability to assign irq's to pci slots in the PC's bios is a thing of the past. The only work around advice posted has been to move the cards around in the pci slots looking for a combo that will result in non-shared irq's, or if you are lucky enough to be using a older motherboard with bios that allows irq assignments by pci slot. When I had this problem I had to replace my APG video card with a isa video card, removed the pci sound card all together, disabled com1, com2, and printer port in the bios on my 700HMz box before I was able to get non-shared irq's for my nic cards. While researching replacing my bios chip I found a bios chip vendor who has a hardware solution in the form of a pci board that allowes all the irq's and dma to be assigned by dip switch settings over riding the pc bios setup. You can check out what I though was a costly solution at Unicore software inc (978)686-6468 or 800-800-bios. The second part to this performance problem. The only other common thread in this performance problem is that all posters only noticed it when doing large FTP transfers. After I fixed the irq problem as above I did not see the stalling/pausing of my FTP transfers any more, but the speed of uploads from the FBSD server to a winbox on the lan off one of the FBSD nic cards was one quarter the speed of the download from the winbox to the same FBSD server. I tested using 3 different shareware FTP clients that I have used since win31/95 days, also tested the FTP client that comes with win98 and they all exhibited the same slow upload speeds as FBSD FTP to FBSD FTP. As a last resort I downloaded the demo full function FTP-PRO client program from ipswitch.com and low and behold the upload/download speeds were pretty much the same fast speed. I believe this FTP software vendor has found a way around some long time performance bug in the FTP protocol to speed up performance. So in conclusion, It's my opinion that the FTP program that is released as part of the core FBSD system is outdated and needs work to fix it's slow performance. There are other FTP programs in the ports collection that may perform better. I have not tested any of those. My solution to FTP performance was to purchase FTP-PRO from ipswitch for just the winbox work stations that had a need for fast uploads from the FBSD server. And I now know better than to use FBSD FTP as a ruler to measure performance on FBSD. Just my 2 cents worth Joe Barbish -----Original Message----- From: owner-freebsd-questions@FreeBSD.ORG [mailto:owner-freebsd-questions@FreeBSD.ORG]On Behalf Of Darren Pilgrim Sent: Wednesday, February 06, 2002 11:18 PM To: freebsd-questions@freebsd.org Subject: dc NIC stalls, generating 35-40k+ interupts/sec? I'm trying to transfer a 1GB file over my network via FTP. The file is 1GB (2^30 bytes) dd'ed from /dev/zero in 1024 blocks. The client on another machine will start downloading, get about 10MB into the file, then stall. "systat -vmstat 1" on the server will show 35-40k interupts per second coming from IRQ 18 (named "mux"), resulting in a very noticable slow down. TX underrun messages such as the following will be logged: Feb 6 19:44:51 spark /kernel: dc0: TX underrun -- increasing TX threshold Feb 6 19:45:00 spark /kernel: dc0: TX underrun -- increasing TX threshold The only things on IRQ 18 are an el-cheapo NIC (dc0) and a HPT366 ATA controller (ata2 and ata3). All disks are idle when this occurs, despite the "in progress" transfer. The high rate of interupts will continue even if I kill the FTP daemon and/or the client. When I down dc0, however, the interupts on mux will return to idle/normal and everything is fine again, until I try the transfer again. This is reliably reproducable on my box (it happens every time I try to FTP that file). I haven't tried unplugging the cable, or sending other traffic to/from the box. Relevant info from dmesg: FreeBSD 4.2-RELEASE #3: Thu Dec 13 17:28:48 PST 2001 root@spark.techno.pagans:/usr/src/sys/compile/SPARK Timecounter "i8254" frequency 1193182 Hz CPU: Pentium II/Pentium II Xeon/Celeron (501.14-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x665 Stepping = 5 Features=0x183fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA, CMOV,PAT,PSE36,MMX,FXSR> real memory = 67108864 (65536K bytes) avail memory = 62504960 (61040K bytes) Programming 24 pins in IOAPIC #0 IOAPIC #0 intpin 2 -> irq 0 FreeBSD/SMP: Multiprocessor motherboard cpu0 (BSP): apic id: 0, version: 0x00040011, at 0xfee00000 cpu1 (AP): apic id: 1, version: 0x00040011, at 0xfee00000 io0 (APIC): apic id: 2, version: 0x00170011, at 0xfec00000 <...> dc0: <ADMtek AN985 10/100BaseTX> port 0xc800-0xc8ff mem 0xe9102000-0xe91023ff irq 18 at device 11.0 on pci0 dc0: Ethernet address: 00:04:5a:59:7c:a8 miibus0: <MII bus> on dc0 ukphy0: <Generic IEEE 802.3u media interface> on miibus0 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto atapci1: <HighPoint HPT366 ATA66 controller> port 0xd800-0xd8ff,0xd400-0xd403,0xd000-0xd007 irq 18 at device 19.0 on pci0 ata2: at 0xd000 on atapci1 atapci2: <HighPoint HPT366 ATA66 controller> port 0xe400-0xe4ff,0xe000-0xe003,0xdc00-0xdc07 irq 18 at device 19.1 on pci0 ata3: at 0xdc00 on atapci2 Dual 500MHz Celerons on an Abit BP6 (440BX) mainboard. The device description for dc0 is incorrect. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?LPBBIGIAAKKEOEJOLEGOCENKCGAA.barbish>