This is a discussion on Ethernet card receiving influenced by CPU speed? within the Linux Networking forums, part of the Linux Forums category; Hi everybody, This is a wild guess but I'm really at odds. I have tried two 100Mb Ethernet cards ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
Hi everybody,
This is a wild guess but I'm really at odds. I have tried two 100Mb Ethernet cards on my old pc (486 AMD): Compaq Netelligent 10/100 and Realtek RTL8139. They both install, ping, transmit fine, but receive very very slow (taking several minutes for a couple of MBs). 'ifconfig eth1' gives lots of errors, overruns,dropped packets (more than the good packets). At the same time I have another ethernet card (10Mb Winbond NE2000 clone) on this old machine which works abolutely fine. On top of this the RTL8139 works without errors on another faster machine (Celeron 450MHz). Note that the Linux distributions,kernel versions,drivers on both machines are the same. I have not tested Compaq Netelligent on the faster machine. I have tried compiling drivers as modules and as built-ins - it's all the same. Also tried changing pci slots, switch ports - without result. So, is it possible that the cpu is not fast enough to process packets coming on a 100Mb connection? Thank you. Svilen Stoilov svilst at hotmail.com |
|
|||
|
svilen wrote:
> So, is it possible that the cpu is not fast enough to process packets > coming on a 100Mb connection? > Or perhaps the bus? IIRC, an ISA bus can't handle 100 Mb/s. There were very few 100 Mb NICs for that reason. They were made so that you could connect an older computer into a single speed 100 Mb hub. Fortunately, dual speed hubs and switches eliminated that need. -- Fundamentalism is fundamentally wrong. To reply to this message, replace everything to the left of "@" with james.knott. |
|
|||
|
svilst@hotmail.com (svilen) wrote in message news:<f6b84cfe.0404300004.364ea851@posting.google. com>...
> Hi everybody, > > This is a wild guess but I'm really at odds. > > I have tried two 100Mb Ethernet cards on my old pc (486 AMD): > Compaq Netelligent 10/100 and Realtek RTL8139. > They both install, ping, transmit fine, but receive very very slow > (taking several minutes for a couple of MBs). 'ifconfig eth1' gives > lots of errors, overruns,dropped packets (more than the good packets). Check that they have negotiated an appropriate speed -- ie., 10Mb rather than 100Mb. Since I don't know what distro you're using :-( ... mii-tool ?) > At the same time I have another ethernet card (10Mb Winbond NE2000 > clone) on this old machine which works abolutely fine. On top of this the > RTL8139 works without errors on another faster machine (Celeron 450MHz). > Note that the Linux distributions,kernel versions,drivers on both > machines are the same. Since 10Mb works fine, have you manually set the others to 10Mb? Auto-negotiation, especially in older boxes/cards, is not 100% reliable. > I have not tested Compaq Netelligent on the faster machine. > > I have tried compiling drivers as modules and as built-ins - it's all > the same. > Also tried changing pci slots, switch ports - without result. Sounds like you've tried all the "hardware" tricks. > So, is it possible that the cpu is not fast enough to process packets > coming on a 100Mb connection? As J.K. suggests, it could be a bus issue. What do you get from : $ cat /proc/pci Any clues? $ dmesg output? > Thank you. > > Svilen Stoilov > svilst at hotmail.com Most unlikely that the cpu couldn't handle interrupt processing -- if so the transmission rate should back off as the receive buffers fill (with TCP). Without command output, we have nothing but your verbal descriptions to go on, so here's my standard quick checks: -- when ifconfig shows anything about errrors, I check output of : $ netstat -s -p tcp -- check the speed/link state/duplex mode with mii-tool -- manually changing to slower/simpler setting to test performance -- check dmesg and /proc/pci -- double check that I've not changed anything from a default setting regarding ipv4 or (with 2 nics) checked that I've set /proc/sys/net/ipv4/ip_forward if routing ;-) -- double check routing tables and arp cache -- make sure neighbors' (GW) routing tables and arp cache show OK re: the misbehaving box/nic -- swap hardware around, which you've done already -- confirm that nic works in another box, which you've done already with the Realtek -- then, personally, I usually look down and find something plugged in wrong (or not at all), but I digress for your humor hth, prg email above disabled |
|
|||
|
> > So, is it possible that the cpu is not fast enough to process packets
> > coming on a 100Mb connection? > > > > Or perhaps the bus? IIRC, an ISA bus can't handle 100 Mb/s. There were > very few 100 Mb NICs for that reason. They were made so that you could > connect an older computer into a single speed 100 Mb hub. Fortunately, > dual speed hubs and switches eliminated that need. All ethernet cards are on PCI. BTW when I force the Compaq Netitelligent 10/100 to run at 10Mb it works fine. No errors at all. Speed ~ 400 KB/s. At 100Mb - trasmitting is the same as at 10Mb, not faster; and receiving ~ 15 KB/s with lots of errors. If it's true that these 100Mb cards are not made for such ancient 486 systems - then there must be some minimal hardware requirements for proper operation of such cards. Any suggestions about it? |
|
|||
|
Thank you for the suggested ways to explore the problem.
I hope the diagnostic output is not too copious. I'm using Slackware 9.0 - 2.4.20 --- parts of dmesg --- 32MB LOWMEM available. ne2k-pci.c:v1.02 10/19/2000 D. Becker/P. Gortmaker http://www.scyld.com/network/ne2k-pci.html eth0: Winbond 89C940 found at 0x6000, IRQ 9, 48:54:E8:28:F8:06. ThunderLAN driver v1.15 TLAN: eth1 irq=10, io=6100, Compaq Netelligent 10/100 TX PCI UTP, Rev. 16 TLAN: 1 device installed, PCI: 1 EISA: 0 TLAN: eth1: Starting autonegotiation. TLAN: eth1: Autonegotiation complete. TLAN: eth1: Link active with AutoNegotiation enabled, at 100Mbps Full-Duplex TLAN: Partner capability: 10BaseT-HD 10BaseT-FD 100baseTx-HD 100baseTx-FD<NULL> IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0d:87:7c:04:08:08:00 SRC=192.168.0.17 DST=192.168.0.255 LEN=202 TOS=0x00 PREC=0x00 TTL=128 ID=79 PROTO=UDP SPT=138 DPT=138 LEN=182 IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0d:87:7c:04:08:08:00 SRC=192.168.0.17 DST=192.168.0.255 LEN=78 TOS=0x00 PREC=0x00 TTL=128 ID=80 PROTO=UDP SPT=137 DPT=137 LEN=58 .... and more like the above two lines; --- end of dmseg --- 'mii-tool' eth1: negotiated 100baseTx-FD, link ok --- 'cat /proc/pci' --- PCI devices found: Bus 0, device 11, function 0: Ethernet controller: Winbond Electronics Corp W89C940 (rev 0). IRQ 9. I/O at 0x6000 [0x601f]. Bus 0, device 13, function 0: Network controller: Compaq Computer Corporation Netelligent 10/100 (rev 16). IRQ 10. Master Capable. Latency=32. I/O at 0x6100 [0x610f]. Non-prefetchable 32 bit memory at 0xe0000000 [0xe000000f]. -------------------------- # after copying a file FROM another machine for about a minute a two --- ifconfig eth1 --- eth1 Link encap:Ethernet HWaddr 00:08:C7:24:CC:79 inet addr:200.200.200.99 Bcast:200.200.200.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1792 errors:530 dropped:0 overruns:0 frame:530 TX packets:2336 errors:5 dropped:0 overruns:0 carrier:5 collisions:0 txqueuelen:100 RX bytes:2318589 (2.2 Mb) TX bytes:217171 (212.0 Kb) Interrupt:10 Base address:0x6100 what does 'frame:' says? --- netstat eth1 -s -p tcp --- # I have removed most of the TCPstats that are 0 Ip: 1859 total packets received 0 forwarded 0 incoming packets discarded 1729 incoming packets delivered 2257 requests sent out Tcp: 1 active connections openings 1 connections established 1720 segments received 2257 segments send out 2 segments retransmited 0 bad segments received. 0 resets sent TcpExt: ArpFilter: 0 526 delayed acks sent --> ? 5 packets header predicted TCPSackFailures: 1 TCPLossFailures: 0 TCPTimeouts: 1 -- ifconfig eth1 --- (Compaq Netitelligent 10/100) eth1 Link encap:Ethernet HWaddr 00:08:C7:24:CC:79 inet addr:200.200.200.99 Bcast:200.200.200.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1792 errors:530 dropped:0 overruns:0 frame:530 --> RTL8139 has lots of dropped and overruns as well TX packets:2336 errors:5 dropped:0 overruns:0 carrier:5 collisions:0 txqueuelen:100 RX bytes:2318589 (2.2 Mb) TX bytes:217171 (212.0 Kb) Interrupt:10 Base address:0x6100 what does 'frame:' says? I have posted it before: when forced to 10Mb the card works fine. The point is: Shall I try to make the card work at 100Mb or shall I give up. Is it possible on an old 486 system to achieve full card speed. BTW I have Windows on this old box as well (a separte hard drive). I tested Compaq Netitelligent 10/100 there and the result was pretty much the same as in Linux - receiving with speed ~ 30 KB/s. I assume the card was autoconfigured in 100Mb mode as in Linux. > -- then, personally, I usually look down and find something plugged in > wrong (or not at all), but I digress for your humor > some time ago my modem stopped working. I started changing drivers like mad and trying various things for one full day before finding out that my dog had chewed up the telephone wire :) |
|
|||
|
Thank you for the suggested ways to explore the problem.
I hope the diagnostic output is not too copious. I'm using Slackware 9.0 - 2.4.20 --- parts of dmesg --- 32MB LOWMEM available. ne2k-pci.c:v1.02 10/19/2000 D. Becker/P. Gortmaker http://www.scyld.com/network/ne2k-pci.html eth0: Winbond 89C940 found at 0x6000, IRQ 9, 48:54:E8:28:F8:06. ThunderLAN driver v1.15 TLAN: eth1 irq=10, io=6100, Compaq Netelligent 10/100 TX PCI UTP, Rev. 16 TLAN: 1 device installed, PCI: 1 EISA: 0 TLAN: eth1: Starting autonegotiation. TLAN: eth1: Autonegotiation complete. TLAN: eth1: Link active with AutoNegotiation enabled, at 100Mbps Full-Duplex TLAN: Partner capability: 10BaseT-HD 10BaseT-FD 100baseTx-HD 100baseTx-FD<NULL> IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0d:87:7c:04:08:08:00 SRC=192.168.0.17 DST=192.168.0.255 LEN=202 TOS=0x00 PREC=0x00 TTL=128 ID=79 PROTO=UDP SPT=138 DPT=138 LEN=182 IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0d:87:7c:04:08:08:00 SRC=192.168.0.17 DST=192.168.0.255 LEN=78 TOS=0x00 PREC=0x00 TTL=128 ID=80 PROTO=UDP SPT=137 DPT=137 LEN=58 .... and more like the above two lines; --- end of dmseg --- 'mii-tool' eth1: negotiated 100baseTx-FD, link ok --- 'cat /proc/pci' --- PCI devices found: Bus 0, device 11, function 0: Ethernet controller: Winbond Electronics Corp W89C940 (rev 0). IRQ 9. I/O at 0x6000 [0x601f]. Bus 0, device 13, function 0: Network controller: Compaq Computer Corporation Netelligent 10/100 (rev 16). IRQ 10. Master Capable. Latency=32. I/O at 0x6100 [0x610f]. Non-prefetchable 32 bit memory at 0xe0000000 [0xe000000f]. -------------------------- # after copying a file FROM another machine for about a minute a two --- ifconfig eth1 --- eth1 Link encap:Ethernet HWaddr 00:08:C7:24:CC:79 inet addr:200.200.200.99 Bcast:200.200.200.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1792 errors:530 dropped:0 overruns:0 frame:530 TX packets:2336 errors:5 dropped:0 overruns:0 carrier:5 collisions:0 txqueuelen:100 RX bytes:2318589 (2.2 Mb) TX bytes:217171 (212.0 Kb) Interrupt:10 Base address:0x6100 what does 'frame:' says? --- netstat eth1 -s -p tcp --- # I have removed most of the TCPstats that are 0 Ip: 1859 total packets received 0 forwarded 0 incoming packets discarded 1729 incoming packets delivered 2257 requests sent out Tcp: 1 active connections openings 1 connections established 1720 segments received 2257 segments send out 2 segments retransmited 0 bad segments received. 0 resets sent TcpExt: ArpFilter: 0 526 delayed acks sent --> ? 5 packets header predicted TCPSackFailures: 1 TCPLossFailures: 0 TCPTimeouts: 1 -- ifconfig eth1 --- (Compaq Netitelligent 10/100) eth1 Link encap:Ethernet HWaddr 00:08:C7:24:CC:79 inet addr:200.200.200.99 Bcast:200.200.200.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1792 errors:530 dropped:0 overruns:0 frame:530 --> RTL8139 has lots of dropped and overruns as well TX packets:2336 errors:5 dropped:0 overruns:0 carrier:5 collisions:0 txqueuelen:100 RX bytes:2318589 (2.2 Mb) TX bytes:217171 (212.0 Kb) Interrupt:10 Base address:0x6100 what does 'frame:' says? I have posted it before: when forced to 10Mb the card works fine. The point is: Shall I try to make the card work at 100Mb or shall I give up. Is it possible on an old 486 system to achieve full card speed. BTW I have Windows on this old box as well (a separte hard drive). I tested Compaq Netitelligent 10/100 there and the result was pretty much the same as in Linux - receiving with speed ~ 30 KB/s. I assume the card was autoconfigured in 100Mb mode as in Linux. > -- then, personally, I usually look down and find something plugged in > wrong (or not at all), but I digress for your humor > some time ago my modem stopped working. I started changing drivers like mad and trying various things for one full day before finding out that my dog had chewed up the telephone wire :) |
|
|||
|
svilst@hotmail.com (svilen) wrote in message news:<f6b84cfe.0404301223.6002ff74@posting.google. com>...
> Thank you for the suggested ways to explore the problem. > I hope the diagnostic output is not too copious. > > I'm using Slackware 9.0 - 2.4.20 [snip] dmesg, etc. indicates everything OK -- the network stats, however ... Looking over the outputs you posted, I'm inclined to think you've got a hardware problem -- perhaps one that only shows up when pushing the nics in this 486 to 100Mb. It could be a marginal cable, a "worn" jack at either end, a bad port on a hub/switch (if you're using one), or a questionable nic at the far end of the connection. It might even be something subtle enough that it would be very hard to isolate. BTW, some of these "early" 486/PCI mobos could be a little flakey and it usually shows up in nics and video cards. I would probably learn to live with reliable 10Mb rather than working too hard to get 100Mb. So the bottom line is how much time you're willing to invest sorting out the possible causes. If it was me I would probably work on it in my spare, nothing-better-to-do moments after going through the basics of switching patch cords, ports, and checking performance of the far end nic. Re: your output and questions ... --- ifconfig eth1 --- .... UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1792 errors:530 dropped:0 overruns:0 frame:530 TX packets:2336 errors:5 dropped:0 overruns:0 carrier:5 collisions:0 txqueuelen:100 The RX line shows packet count and errors (total and catergorized) recorded by the nic on its receiving circuit -- here 530 frames had errors. Frames are the "packets" used to send ethernet signals/data on the wire. The error checking code (FCS/CRC) included in the frames (calculated by the sending device) did not match what this nic's receiving unit calculated using the same routines. These frames (packets) are dropped immediately to guard against baaaad side effects. These are caused by what is termed "noise" (a.k.a. interference in laymen's terms). Could be caused by faulty hardware circuits, cables not properly shielding the signal, or excessive EMI (electromagnetic interference) emissions from another piece of equipment in or near the nics/cable. Your error rate is nearly 30% -- IIRC, anything above ~0.3% is considered unaccepatble. This is a serious hardware problem! The TX line shows similar info for the transmitting circuit. 5 times the nic had data to transmit but found no proper "carrier" signal on the wire -- a carrier signal is needed to "carry" (cute, huh?) the nic's data signal on the wire. This ain't good either. My experience is that any carrier errors are "serious" unless you know their cause beforehand. TCP "acknowledges" the packets it receives so the sender knows they arrived OK. DelayedAcks are acknowledgements of received packets that are not getting back to the sender in a timely manner. In and of themselves, they don't tell us much except that you've got a large number of them -- some apps are known to generate quite a few. For the details you can look at: http://www.faqs.org/rfcs/rfc3465.html The netstat output shows just how robust TCP is in the face of errors. It slows things down (reduced throughput) but it keeps trying to get the packets it "knows" should be arriving. And gets them. hth, prg email above disabled |