Skip site navigation (1)Skip section navigation (2)
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>