public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Abysmal network performance since 2.4.25 !!!!!...
@ 2004-03-12  1:14 psycosonic
  2004-03-12  2:06 ` Stefan Smietanowski
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: psycosonic @ 2004-03-12  1:14 UTC (permalink / raw)
  To: linux-net, linux-kernel

Hey.

I'm having some problems since i updated from kernel 2.4.24 to 2.4.25 .. it
seems that 2.4.25 has some real performance problems.
The problem is that i can't get the NIC's to work fine.. i don't know why, 
i've already used several kernel configurations..
i've also tried with patch2.4.25pre4 and... nothin' ...even used another 
switch 10/100mbit.. not even with patch-2.4.26pre2 it goes normal,
I've compiled the kernel in another computer, with too many different 
configurations, different hardware.. etc.. and the result is the same.
Some friends of mine are having the same problem.
Well.. with kernel 2.4.24 i usually had a max speed of 12Mb/s .. now , with 
2.4.25 it only goes to 2,2Mb/s MAX speed.  :(
I've tried to use vsftpd, proftpd, apache 1.3.x, apache 2.x, samba.. etc 
etc.. with kernel 2.4.24 works pretty fine... but since 2.4.25.. wow..
Not even with the patches 2.4.25rcX it worked.. and.. i don't know what more 
to do.
Here you have some information:

Computer 1:

Pentium 3 @ 733Mhz
Board with SIS Chipset.
NIC's: SIS900 & Realtek 8139
....
OS: Slackware 9.0


Computer 2:

AMD XP 2600+
Board ASUS A7V8X-MX Chipset VIA KT400
NIC's: VIA Rhine
....
OS: Slackware 9.1


----------
None of this computers works OK with kernel 2.4.25.. well.. the problem is
that with apache... proftpd.. vsftpd... i only can get speeds of  ~2,4Mb/s
MAX! .. i've tried to change cables.. switch.. etc.. nothin'.. i boot to
kernel 2.4.24 and everything went normal.
----------


INFO:

Computer 1:

root@rootisg0d:~# lspci -vv
00:00.0 Host bridge: ALi Corporation M1621 (rev 04)
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort-
<TAbort- <MAbort+ >SERR- <PERR-
        Latency: 0
        Region 0: Memory at da000000 (32-bit, prefetchable) [size=32M]
        Capabilities: [b0] AGP version 1.0
                Status: RQ=28 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64-
HTrans- 64bit- FW- AGP3- Rate=x1,x2
                Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP+ GART64- 64bit- FW-
Rate=x2
        Capabilities: [a4] Power Management version 1
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:01.0 PCI bridge: ALi Corporation PCI to AGP Controller (rev 01) (prog-if
00 [Normal decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
        I/O behind bridge: 0000b000-0000bfff
        Memory behind bridge: dce00000-deefffff
        Prefetchable memory behind bridge: d2c00000-d6cfffff
        BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
00:02.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03) (prog-if
10 [OHCI])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr-
Stepping- SERR+ FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (20000ns max), cache line size 08
        Interrupt: pin A routed to IRQ 10
        Region 0: Memory at dfffb000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [60] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:07.0 ISA bridge: ALi Corporation M1533 PCI to ISA Bridge [Aladdin IV]
(rev c3)
        Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
00:0c.0 Multimedia audio controller: C-Media Electronics Inc CM8738 (rev 10)
        Subsystem: C-Media Electronics Inc CMI8738/C3DX PCI Audio Device
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (500ns min, 6000ns max)
        Interrupt: pin A routed to IRQ 11
        Region 0: I/O ports at dc00 [size=256]
        Capabilities: [c0] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:0e.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 10/100
Ethernet (rev 02)
        Subsystem: Silicon Integrated Systems [SiS] SiS900 10/100 Ethernet
Adapter
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (13000ns min, 2750ns max)
        Interrupt: pin A routed to IRQ 12
        Region 0: I/O ports at d800 [size=256]
        Region 1: Memory at dfffa000 (32-bit, non-prefetchable) [size=4K]
        Expansion ROM at dffc0000 [disabled] [size=128K]
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:0f.0 IDE interface: ALi Corporation M5229 IDE (rev c2) (prog-if fa)
        Subsystem: ALi Corporation M5229 IDE
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (500ns min, 1000ns max)
        Interrupt: pin A routed to IRQ 14
        Region 4: I/O ports at ffa0 [size=16]
        Capabilities: [60] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:10.0 VGA compatible controller: Matrox Graphics, Inc. MGA 2164W
[Millennium II] (prog-if 00 [VGA])
        Subsystem: Matrox Graphics, Inc.: Unknown device 0100
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 64
        Interrupt: pin A routed to IRQ 0
        Region 0: Memory at d7000000 (32-bit, prefetchable) [size=16M]
        Region 1: Memory at dfffc000 (32-bit, non-prefetchable) [size=16K]
        Region 2: Memory at df000000 (32-bit, non-prefetchable) [size=8M]
        Expansion ROM at dffe0000 [disabled] [size=64K]
00:14.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL-8139/8139C/8139C+ (rev 10)
        Subsystem: Realtek Semiconductor Co., Ltd. RT8139
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B-
        Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (8000ns min, 16000ns max)
        Interrupt: pin A routed to IRQ 12
        Region 0: I/O ports at d400 [size=256]
        Region 1: Memory at dfff9f00 (32-bit, non-prefetchable) [size=256]
        Expansion ROM at dffb0000 [disabled] [size=64K]
01:00.0 VGA compatible controller: nVidia Corporation NV5 [Aladdin TNT2]
(rev 20) (prog-if 00 [VGA])
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Interrupt: pin A routed to IRQ 0
        Region 0: Memory at dd000000 (32-bit, non-prefetchable) [disabled]
[size=16M]
        Region 1: Memory at d4000000 (32-bit, prefetchable) [disabled]
[size=32M]
        Expansion ROM at deef0000 [disabled] [size=64K]
        Capabilities: [60] Power Management version 1
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [44] AGP version 1.0
                Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64-
HTrans- 64bit- FW- AGP3- Rate=x1,x2
                Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW-
Rate=<none>

=======================================

demsg:

Mar 10 21:43:25 rootisg0d init: Switching to runlevel: 6
Mar 10 21:43:28 rootisg0d exiting on signal 15
Mar 10 21:44:13 rootisg0d syslogd 1.4.1: restart.
Mar 10 21:44:14 rootisg0d kernel: klogd 1.4.1, log source = /proc/kmsg
started.
Mar 10 21:44:14 rootisg0d kernel: BIOS-provided physical RAM map:
Mar 10 21:44:14 rootisg0d kernel: 255MB LOWMEM available.
Mar 10 21:44:15 rootisg0d kernel: Initializing CPU#0
Mar 10 21:44:15 rootisg0d kernel: Memory: 255996k/262080k available (1860k
kernel code, 5696k reserved, 307k data, 128k init, 0k highmem)
Mar 10 21:44:15 rootisg0d kernel: Dentry cache hash table entries: 32768
(order: 6, 262144 bytes)
Mar 10 21:44:15 rootisg0d kernel: Inode cache hash table entries: 16384
(order: 5, 131072 bytes)
Mar 10 21:44:15 rootisg0d kernel: Mount cache hash table entries: 512
(order: 0, 4096 bytes)
Mar 10 21:44:15 rootisg0d kernel: Buffer cache hash table entries: 16384
(order: 4, 65536 bytes)
Mar 10 21:44:15 rootisg0d kernel: CPU: L1 I cache: 16K, L1 D cache: 16K
Mar 10 21:44:15 rootisg0d kernel: CPU: L2 cache: 256K
Mar 10 21:44:15 rootisg0d kernel: CPU serial number disabled.
Mar 10 21:44:15 rootisg0d kernel: Enabling fast FPU save and restore...
done.
Mar 10 21:44:15 rootisg0d kernel: Enabling unmasked SIMD FPU exception
support... done.
Mar 10 21:44:15 rootisg0d kernel: Checking 'hlt' instruction... OK.
Mar 10 21:44:15 rootisg0d kernel: PCI: PCI BIOS revision 2.10 entry at
0xfdb01, last bus=1
Mar 10 21:44:15 rootisg0d kernel: PCI: Using configuration type 1
Mar 10 21:44:15 rootisg0d kernel: PCI: Probing PCI hardware
Mar 10 21:44:15 rootisg0d kernel: PCI: Using IRQ router ALI [10b9/1533] at
00:07.0
Mar 10 21:44:15 rootisg0d kernel: PCI: Hardcoded IRQ 14 for device 00:0f.0
Mar 10 21:44:15 rootisg0d kernel: Linux NET4.0 for Linux 2.4
Mar 10 21:44:15 rootisg0d kernel: Based upon Swansea University Computer
Society NET3.039
Mar 10 21:44:15 rootisg0d kernel: VFS: Disk quotas vdquot_6.5.1
Mar 10 21:44:15 rootisg0d kernel: Journalled Block Device driver loaded
Mar 10 21:44:15 rootisg0d kernel: Detected PS/2 Mouse Port.
Mar 10 21:44:15 rootisg0d kernel: Serial driver version 5.05c (2001-07-08)
with HUB-6 MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI enabled
Mar 10 21:44:15 rootisg0d kernel: ttyS00 at 0x03f8 (irq = 4) is a 16550A
Mar 10 21:44:15 rootisg0d kernel: Real Time Clock Driver v1.10e
Mar 10 21:44:15 rootisg0d kernel: Floppy drive(s): fd0 is 1.44M
Mar 10 21:44:15 rootisg0d kernel: FDC 0 is a post-1991 82077
Mar 10 21:44:15 rootisg0d kernel: loop: loaded (max 8 devices)
Mar 10 21:44:15 rootisg0d kernel: Uniform Multi-Platform E-IDE driver
Revision: 7.00beta4-2.4
Mar 10 21:44:15 rootisg0d kernel: ide: Assuming 33MHz system bus speed for
PIO modes; override with idebus=xx
Mar 10 21:44:15 rootisg0d kernel: ALI15X3: IDE controller at PCI slot
00:0f.0
Mar 10 21:44:15 rootisg0d kernel: PCI: Hardcoded IRQ 14 for device 00:0f.0
Mar 10 21:44:15 rootisg0d kernel: ALI15X3: chipset revision 194
Mar 10 21:44:15 rootisg0d kernel: ALI15X3: not 100%% native mode: will probe
irqs later
Mar 10 21:44:15 rootisg0d kernel:     ide0: BM-DMA at 0xffa0-0xffa7, BIOS
settings: hda:DMA, hdb:pio
Mar 10 21:44:15 rootisg0d kernel:     ide1: BM-DMA at 0xffa8-0xffaf, BIOS
settings: hdc:pio, hdd:DMA
Mar 10 21:44:15 rootisg0d kernel: ide: Assuming 33MHz system bus speed for
PIO modes; override with idebus=xx
Mar 10 21:44:15 rootisg0d kernel: hda: 40021632 sectors (20491 MB) w/2048KiB
Cache, CHS=2491/255/63, UDMA(66)
Mar 10 21:44:15 rootisg0d kernel: hdd: ATAPI 48X CD-ROM drive, 128kB Cache,
DMA
Mar 10 21:44:15 rootisg0d kernel: Uniform CD-ROM driver Revision: 3.12
Mar 10 21:44:15 rootisg0d kernel: Partition check:
Mar 10 21:44:15 rootisg0d kernel:  hda: hda1 < hda5 > hda2
Mar 10 21:44:15 rootisg0d kernel: Initializing Cryptographic API
Mar 10 21:44:15 rootisg0d kernel: NET4: Linux TCP/IP 1.0 for NET4.0
Mar 10 21:44:15 rootisg0d kernel: IP Protocols: ICMP, UDP, TCP
Mar 10 21:44:15 rootisg0d kernel: IP: routing cache hash table of 2048
buckets, 16Kbytes
Mar 10 21:44:15 rootisg0d kernel: TCP: Hash tables configured (established
16384 bind 32768)
Mar 10 21:44:15 rootisg0d kernel: NET4: Unix domain sockets 1.0/SMP for
Linux NET4.0.
Mar 10 21:44:15 rootisg0d kernel: kjournald starting.  Commit interval 5
seconds
Mar 10 21:44:15 rootisg0d kernel: EXT3-fs: mounted filesystem with ordered
data mode.
Mar 10 21:44:15 rootisg0d kernel: Freeing unused kernel memory: 128k freed
Mar 10 21:44:15 rootisg0d kernel: Adding Swap: 497944k swap-space
(priority -1)
Mar 10 21:44:15 rootisg0d kernel: EXT3 FS 2.4-0.9.19, 19 August 2002 on
ide0(3,2), internal journal
Mar 10 21:44:15 rootisg0d kernel: grsec: mount /dev/hda2 to / by
(mount:5035) UID(0) EUID(0), parent (rc.S:12520) UID(0) EUID(0)
Mar 10 21:44:15 rootisg0d kernel: grsec: mount /dev/hda2 to / by
(mount:22511) UID(0) EUID(0), parent (rc.S:12520) UID(0) EUID(0)
Mar 10 21:44:15 rootisg0d kernel: grsec: mount /dev/hda2 to / by
(mount:5035) UID(0) EUID(0), parent (rc.S:12520) UID(0) EUID(0)
Mar 10 21:44:15 rootisg0d kernel: grsec: mount /dev/hda2 to / by
(mount:22511) UID(0) EUID(0), parent (rc.S:12520) UID(0) EUID(0)
Mar 10 21:44:15 rootisg0d kernel: grsec: mount devpts to /dev/pts by
(mount:26665) UID(0) EUID(0), parent (rc.S:12520) UID(0) EUID(0)
Mar 10 21:44:15 rootisg0d kernel: grsec: mount proc to /proc by
(mount:26665) UID(0) EUID(0), parent (rc.S:12520) UID(0) EUID(0)
Mar 10 21:44:15 rootisg0d kernel: 8139too Fast Ethernet driver 0.9.26
Mar 10 21:44:15 rootisg0d kernel: PCI: Found IRQ 12 for device 00:14.0
Mar 10 21:44:15 rootisg0d kernel: PCI: Sharing IRQ 12 with 00:0e.0
Mar 10 21:44:15 rootisg0d kernel: eth0: RealTek RTL8139 at 0xd0856f00,
00:50:fc:3d:53:5e, IRQ 12
Mar 10 21:44:15 rootisg0d kernel: 8139cp: 10/100 PCI Ethernet driver v1.1
(Aug 30, 2003)
Mar 10 21:44:15 rootisg0d kernel: sis900.c: v1.08.06 9/24/2002
Mar 10 21:44:15 rootisg0d kernel: PCI: Found IRQ 12 for device 00:0e.0
Mar 10 21:44:15 rootisg0d kernel: PCI: Sharing IRQ 12 with 00:14.0
Mar 10 21:44:15 rootisg0d kernel: eth1: SiS 900 Internal MII PHY transceiver
found at address 1.
Mar 10 21:44:15 rootisg0d kernel: eth1: Using transceiver found at address 1
as default
Mar 10 21:44:15 rootisg0d kernel: eth1: SiS 900 PCI Fast Ethernet at 0xd800,
IRQ 12, 00:d0:09:5d:ae:e4.
Mar 10 21:44:15 rootisg0d kernel: 8139cp: 10/100 PCI Ethernet driver v1.1
(Aug 30, 2003)
Mar 10 21:44:15 rootisg0d last message repeated 8 times

=======================================

root@rootisg0d:~# netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR
Flg
eth0   1500   0   19039      0      0      0   14660      0      0      0
BMRU
eth1   1500   0   23312      0      0      0   22803      0      0      0
BMRU
lo    16436   0       2      0      0      0       2      0      0      0
LRU


=======================================

root@rootisg0d:~# cat /proc/interrupts
           CPU0
  0:    1312079          XT-PIC  timer
  1:          3          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
 12:      79138          XT-PIC  PS/2 Mouse, eth0, eth1
 14:      12941          XT-PIC  ide0
 15:          4          XT-PIC  ide1
NMI:          0
LOC:    1312084
ERR:          0
MIS:          0
root@rootisg0d:~# cat /proc/interrupts
           CPU0
  0:    1312153          XT-PIC  timer
  1:          3          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
 12:      79152          XT-PIC  PS/2 Mouse, eth0, eth1
 14:      12941          XT-PIC  ide0
 15:          4          XT-PIC  ide1
NMI:          0
LOC:    1312158
ERR:          0
MIS:          0


=======================================

root@rootisg0d:~# mii-tool -v
eth0: negotiated 100baseTx-FD, link ok
  product info: vendor 00:00:00, model 0 rev 0
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
eth1: negotiated 100baseTx-FD, link ok
  product info: vendor 00:07:60, model 0 rev 0
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control


======================================= ...... EOMachineNumberOne

Let's check the second...

root@heaven:~# lspci -vv
00:00.0 Host bridge: VIA Technologies, Inc.: Unknown device 3205
        Subsystem: Asustek Computer, Inc.: Unknown device 80f9
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ >SERR- <PERR-
        Latency: 8
        Region 0: Memory at d0000000 (32-bit, prefetchable) [size=128M]
        Capabilities: [80] AGP version 3.5
                Status: RQ=32 Iso- ArqSz=0 Cal=2 SBA+ ITACoh- GART64-
HTrans- 64bit- FW- AGP3- Rate=x1,x2,x4
                Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW-
Rate=<none>
        Capabilities: [c0] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:01.0 PCI bridge: VIA Technologies, Inc.: Unknown device b198 (prog-if 00
[Normal decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B-
        Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ >SERR- <PERR+
        Latency: 0
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
        Memory behind bridge: dc000000-ddffffff
        Prefetchable memory behind bridge: d8000000-dbffffff
        BridgeCtl: Parity- SERR- NoISA+ VGA+ MAbort- >Reset- FastB2B-
        Capabilities: [80] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:10.0 USB Controller: VIA Technologies, Inc. USB (rev 80) (prog-if 00
[UHCI])
        Subsystem: Asustek Computer, Inc.: Unknown device 80ed
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32, cache line size 08
        Interrupt: pin A routed to IRQ 21
        Region 4: I/O ports at d000 [size=32]
        Capabilities: [80] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:10.1 USB Controller: VIA Technologies, Inc. USB (rev 80) (prog-if 00
[UHCI])
        Subsystem: Asustek Computer, Inc.: Unknown device 80ed
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32, cache line size 08
        Interrupt: pin B routed to IRQ 21
        Region 4: I/O ports at d400 [size=32]
        Capabilities: [80] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:10.2 USB Controller: VIA Technologies, Inc. USB (rev 80) (prog-if 00
[UHCI])
        Subsystem: Asustek Computer, Inc.: Unknown device 80ed
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32, cache line size 08
        Interrupt: pin C routed to IRQ 21
        Region 4: I/O ports at d800 [size=32]
        Capabilities: [80] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82) (prog-if 20
[EHCI])
        Subsystem: Asustek Computer, Inc.: Unknown device 80ed
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32, cache line size 08
        Interrupt: pin D routed to IRQ 21
        Region 0: Memory at de000000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [80] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:11.0 ISA bridge: VIA Technologies, Inc. VT8235 ISA Bridge
        Subsystem: Asustek Computer, Inc.: Unknown device 80f9
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping+ SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Capabilities: [c0] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:11.1 IDE interface: VIA Technologies, Inc. VT82C586/B/686A/B PIPC Bus
Master IDE (rev 06) (prog-if 8a [Master SecP PriP])
        Subsystem: Asustek Computer, Inc.: Unknown device 80ed
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32
        Interrupt: pin A routed to IRQ 20
        Region 4: I/O ports at dc00 [size=16]
        Capabilities: [c0] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233 AC97
Audio Controller (rev 50)
        Subsystem: Asustek Computer, Inc.: Unknown device 80b0
        Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Interrupt: pin C routed to IRQ 22
        Region 0: I/O ports at e000 [size=256]
        Capabilities: [c0] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev
74)
        Subsystem: Asustek Computer, Inc.: Unknown device 80ff
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (750ns min, 2000ns max), cache line size 08
        Interrupt: pin A routed to IRQ 23
        Region 0: I/O ports at e800 [size=256]
        Region 1: Memory at de001000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
01:00.0 VGA compatible controller: VIA Technologies, Inc.: Unknown device
7205 (rev 01) (prog-if 00 [VGA])
        Subsystem: Asustek Computer, Inc.: Unknown device 80ed
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (500ns min)
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at d8000000 (32-bit, prefetchable) [size=64M]
        Region 1: Memory at dc000000 (32-bit, non-prefetchable) [size=16M]
        Expansion ROM at <unassigned> [disabled] [size=64K]
        Capabilities: [60] Power Management version 2
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [70] AGP version 2.0
                Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64-
HTrans- 64bit- FW- AGP3- Rate=x1,x2,x4
                Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW-
Rate=<none>

=======================================

dmesg...


PCI: Using ACPI for IRQ routing
PCI: if you experience problems, try using option 'pci=noacpi' or even
'acpi=off'
PCI: Via IRQ fixup for 00:10.0, from 11 to 5
PCI: Via IRQ fixup for 00:10.1, from 11 to 5
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
pty: 256 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ
SERIAL_PCI ISAPNP enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
Linux agpgart interface v0.99 (c) Jeff Hartmann
agpgart: Maximum main memory to use for agp memory: 189M
agpgart: Unsupported Via chipset (device id: 3205), you might want to boot
with agp=try_unsupported
agpgart: no supported devices found.
[drm] Initialized tdfx 1.0.0 20010216 on minor 0
[drm] Initialized radeon 1.7.0 20020828 on minor 1
[drm:drm_init] *ERROR* Cannot initialize the agpgart module.
Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
hda: ST380011A, ATA DISK drive
hdb: ST360014A, ATA DISK drive
hdc: ASUS DVD-ROM E612, ATAPI CD/DVD-ROM drive
hdd: SAMSUNG CD-R/RW SW-408B, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: attached ide-disk driver.
hda: host protected area => 1
hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63
hdb: attached ide-disk driver.
hdb: host protected area => 1
hdb: 117231408 sectors (60022 MB) w/2048KiB Cache, CHS=7297/255/63
hdc: attached ide-cdrom driver.
hdc: ATAPI 40X DVD-ROM drive, 640kB Cache
Uniform CD-ROM driver Revision: 3.12
hdd: attached ide-cdrom driver.
hdd: ATAPI 32X CD-ROM CD-R/RW drive, 2048kB Cache
Partition check:
 hda: hda1 hda2
 hdb: unknown partition table
es1371: version v0.32 time 05:23:28 Jan 14 2004
Linux Kernel Card Services 3.1.22
  options:  [pci] [cardbus] [pm]
usb.c: registered new driver hub
host/uhci.c: USB Universal Host Controller Interface driver v1.1
host/uhci.c: USB UHCI at I/O 0xd000, IRQ 21
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
host/uhci.c: USB UHCI at I/O 0xd400, IRQ 21
usb.c: new USB bus registered, assigned bus number 2
hub.c: USB hub found
hub.c: 2 ports detected
host/uhci.c: USB UHCI at I/O 0xd800, IRQ 21
usb.c: new USB bus registered, assigned bus number 3
hub.c: USB hub found
hub.c: 2 ports detected
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 2048 buckets, 16Kbytes
TCP: Hash tables configured (established 16384 bind 16384)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
ds: no socket drivers loaded!
EXT2-fs warning (device ide0(3,1)): ext2_read_super: mounting ext3
filesystem as ext2
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 120k freed
Adding Swap: 538168k swap-space (priority -1)
via-rhine.c:v1.10-LK1.1.19  July-12-2003  Written by Donald Becker
  http://www.scyld.com/network/via-rhine.html
eth0: VIA VT6102 Rhine-II at 0xe800, 00:0c:6e:a6:cc:05, IRQ 23.
eth0: MII PHY found at address 1, status 0x786d advertising 05e1 Link 45e1.
eth0: Setting full-duplex based on MII #1 link partner capability of 45e1.

=======================================
root@heaven:~# netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR
Flg
eth0   1500   0     911      0      0      0     496      0      0      0
BMRU
lo    16436   0       0      0      0      0       0      0      0      0
LRU

=======================================

root@heaven:~# cat /proc/interrupts
           CPU0
  0:    1418420    IO-APIC-edge  timer
  1:          3    IO-APIC-edge  keyboard
  2:          0          XT-PIC  cascade
  9:          0    IO-APIC-edge  acpi
 12:          0    IO-APIC-edge  PS/2 Mouse
 14:       5487    IO-APIC-edge  ide0
 15:          7    IO-APIC-edge  ide1
 21:          0   IO-APIC-level  usb-uhci, usb-uhci, usb-uhci
 23:       1409   IO-APIC-level  eth0
NMI:          0
LOC:    1418315
ERR:          0
MIS:          0
root@heaven:~# cat /proc/interrupts
           CPU0
  0:    1418476    IO-APIC-edge  timer
  1:          3    IO-APIC-edge  keyboard
  2:          0          XT-PIC  cascade
  9:          0    IO-APIC-edge  acpi
 12:          0    IO-APIC-edge  PS/2 Mouse
 14:       5487    IO-APIC-edge  ide0
 15:          7    IO-APIC-edge  ide1
 21:          0   IO-APIC-level  usb-uhci, usb-uhci, usb-uhci
 23:       1424   IO-APIC-level  eth0
NMI:          0
LOC:    1418371
ERR:          0
MIS:          0


=======================================

root@heaven:~# mii-tool -v
eth0: negotiated 100baseTx-FD flow-control, link ok
  product info: vendor 00:40:63, model 50 rev 8
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control


============



EOF EOF EOF



Please gimme some answer ASAP.. i'm getting crazy :(



(()) 



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Abysmal network performance since 2.4.25 !!!!!...
  2004-03-12  1:14 Abysmal network performance since 2.4.25 !!!!! psycosonic
@ 2004-03-12  2:06 ` Stefan Smietanowski
  2004-03-12  7:54   ` Denis Vlasenko
  2004-03-12  6:31 ` Tom Felker
  2004-03-12 10:32 ` Felipe Alfaro Solana
  2 siblings, 1 reply; 5+ messages in thread
From: Stefan Smietanowski @ 2004-03-12  2:06 UTC (permalink / raw)
  To: psycosonic; +Cc: linux-net, linux-kernel

psycosonic wrote:

> Hey.
> 
> I'm having some problems since i updated from kernel 2.4.24 to 2.4.25 .. it
> seems that 2.4.25 has some real performance problems.
> The problem is that i can't get the NIC's to work fine.. i don't know 
> why, i've already used several kernel configurations..
> i've also tried with patch2.4.25pre4 and... nothin' ...even used another 
> switch 10/100mbit.. not even with patch-2.4.26pre2 it goes normal,
> I've compiled the kernel in another computer, with too many different 
> configurations, different hardware.. etc.. and the result is the same.
> Some friends of mine are having the same problem.
> Well.. with kernel 2.4.24 i usually had a max speed of 12Mb/s .. now , 
> with 2.4.25 it only goes to 2,2Mb/s MAX speed.  :(

If you're only seeing 12Mbit/s (b=bit, B=byte) already before
then there's something at play here with your network I'm afraid.

Replace the nics and you'll see the problems should go away.

I haven't seen any problems so far with my equipment.

> Computer 1:
> 
> Pentium 3 @ 733Mhz
> Board with SIS Chipset.
> NIC's: SIS900 & Realtek 8139

My laptop has an 8139 and it works fine.

> AMD XP 2600+
> Board ASUS A7V8X-MX Chipset VIA KT400
> NIC's: VIA Rhine

If you don't solve it I'll check with my Rhine.

> Please gimme some answer ASAP.. i'm getting crazy :(

Start by getting it up to 100Mbit on the old kernel and then ask
for more help as 12Mbit/s points to other problems.

// Stefan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Abysmal network performance since 2.4.25 !!!!!...
  2004-03-12  1:14 Abysmal network performance since 2.4.25 !!!!! psycosonic
  2004-03-12  2:06 ` Stefan Smietanowski
@ 2004-03-12  6:31 ` Tom Felker
  2004-03-12 10:32 ` Felipe Alfaro Solana
  2 siblings, 0 replies; 5+ messages in thread
From: Tom Felker @ 2004-03-12  6:31 UTC (permalink / raw)
  To: psycosonic; +Cc: linux-net, linux-kernel

On Thursday 11 March 2004 7:14 pm, psycosonic wrote:

> Well.. with kernel 2.4.24 i usually had a max speed of 12Mb/s .. now , with
> 2.4.25 it only goes to 2,2Mb/s MAX speed.  :(
> I've tried to use vsftpd, proftpd, apache 1.3.x, apache 2.x, samba.. etc

I'm assuming you meant MBytes/s, and assuming you're timing large file 
transfers, where disk speed could be a limiting factor.  12 MB/s is 96Mbit/s, 
which sounds about right for Ethernet.  Hard drive transfer rates are usually 
20-40.  But without DMA, in my experience, it can fall to around 2 MB/s, 
which is about what you're getting.

The dmesg from the first machine says DMA is on, but the second machine's 
dmesg doesn't mention it.  The following info, for both machines and all 
drives, would be helpful:

hdparm /dev/hdx
hdparm -t /dev/hdx

And if you notice DMA is 0, you might try 

hdparm -d 1 /dev/hdx

But be careful.  It's entirely possible that DMA got disabled because it was a 
risk on your drive or chipset.

> Mar 10 21:44:15 rootisg0d kernel: Uniform Multi-Platform E-IDE driver
> Revision: 7.00beta4-2.4
> Mar 10 21:44:15 rootisg0d kernel: ide: Assuming 33MHz system bus speed for
> PIO modes; override with idebus=xx
> Mar 10 21:44:15 rootisg0d kernel: ALI15X3: IDE controller at PCI slot
> 00:0f.0
> Mar 10 21:44:15 rootisg0d kernel: PCI: Hardcoded IRQ 14 for device 00:0f.0
> Mar 10 21:44:15 rootisg0d kernel: ALI15X3: chipset revision 194
> Mar 10 21:44:15 rootisg0d kernel: ALI15X3: not 100%% native mode: will
> probe irqs later
> Mar 10 21:44:15 rootisg0d kernel:     ide0: BM-DMA at 0xffa0-0xffa7, BIOS
> settings: hda:DMA, hdb:pio
> Mar 10 21:44:15 rootisg0d kernel:     ide1: BM-DMA at 0xffa8-0xffaf, BIOS
> settings: hdc:pio, hdd:DMA
> Mar 10 21:44:15 rootisg0d kernel: ide: Assuming 33MHz system bus speed for
> PIO modes; override with idebus=xx
> Mar 10 21:44:15 rootisg0d kernel: hda: 40021632 sectors (20491 MB)
> w/2048KiB Cache, CHS=2491/255/63, UDMA(66)
> Mar 10 21:44:15 rootisg0d kernel: hdd: ATAPI 48X CD-ROM drive, 128kB Cache,
> DMA
> Mar 10 21:44:15 rootisg0d kernel: Uniform CD-ROM driver Revision: 3.12
> Mar 10 21:44:15 rootisg0d kernel: Partition check:
> Mar 10 21:44:15 rootisg0d kernel:  hda: hda1 < hda5 > hda2

> Let's check the second...

> Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
> ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
> hda: ST380011A, ATA DISK drive
> hdb: ST360014A, ATA DISK drive
> hdc: ASUS DVD-ROM E612, ATAPI CD/DVD-ROM drive
> hdd: SAMSUNG CD-R/RW SW-408B, ATAPI CD/DVD-ROM drive
> ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
> ide1 at 0x170-0x177,0x376 on irq 15
> hda: attached ide-disk driver.
> hda: host protected area => 1
> hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63
> hdb: attached ide-disk driver.
> hdb: host protected area => 1
> hdb: 117231408 sectors (60022 MB) w/2048KiB Cache, CHS=7297/255/63
> hdc: attached ide-cdrom driver.
> hdc: ATAPI 40X DVD-ROM drive, 640kB Cache
> Uniform CD-ROM driver Revision: 3.12
> hdd: attached ide-cdrom driver.
> hdd: ATAPI 32X CD-ROM CD-R/RW drive, 2048kB Cache
> Partition check:
>  hda: hda1 hda2
>  hdb: unknown partition table

-- 
Tom Felker, <tcfelker@mtco.com>
<http://vlevel.sourceforge.net> - Stop fiddling with the volume knob.

ruby -r complex -e 
'c,m,w,h=Complex(-0.75,0.136),50,150,100;puts"P6\n#{w}\n#{h}\
n255";(0...h).each{|j|(0...w).each{|i|n,z=0,Complex(.9*i/w,.9*j/h);while 
n<=m&&(
z-c).abs<=2;z=z*z+c;n+=1 end;print [10+n*15,0,rand*99].pack("C*")}}'|display
#by Michael Neumann AFAICT

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Abysmal network performance since 2.4.25 !!!!!...
  2004-03-12  2:06 ` Stefan Smietanowski
@ 2004-03-12  7:54   ` Denis Vlasenko
  0 siblings, 0 replies; 5+ messages in thread
From: Denis Vlasenko @ 2004-03-12  7:54 UTC (permalink / raw)
  To: Stefan Smietanowski, psycosonic; +Cc: linux-net, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1922 bytes --]

On Friday 12 March 2004 04:06, Stefan Smietanowski wrote:
> psycosonic wrote:
> > Hey.
> >
> > I'm having some problems since i updated from kernel 2.4.24 to 2.4.25 ..
> > it seems that 2.4.25 has some real performance problems.
> > The problem is that i can't get the NIC's to work fine.. i don't know
> > why, i've already used several kernel configurations..
> > i've also tried with patch2.4.25pre4 and... nothin' ...even used another
> > switch 10/100mbit.. not even with patch-2.4.26pre2 it goes normal,
> > I've compiled the kernel in another computer, with too many different
> > configurations, different hardware.. etc.. and the result is the same.
> > Some friends of mine are having the same problem.
> > Well.. with kernel 2.4.24 i usually had a max speed of 12Mb/s .. now ,
> > with 2.4.25 it only goes to 2,2Mb/s MAX speed.  :(
>
> If you're only seeing 12Mbit/s (b=bit, B=byte) already before
> then there's something at play here with your network I'm afraid.

Most probably he meant 12 _megabytes_/s, == 100Mbit/s.
As to 2.4.25 problems, maybe it's just a duplex mismatch.

Use attached program to collect more statistics
(CPU/network load etc).
In case you aren't able to compile it (it was compiled with dietlibc),
I attached static binary executable too.

> Replace the nics and you'll see the problems should go away.
>
> I haven't seen any problems so far with my equipment.
>
> > Computer 1:
> >
> > Pentium 3 @ 733Mhz
> > Board with SIS Chipset.
> > NIC's: SIS900 & Realtek 8139
>
> My laptop has an 8139 and it works fine.
>
> > AMD XP 2600+
> > Board ASUS A7V8X-MX Chipset VIA KT400
> > NIC's: VIA Rhine
>
> If you don't solve it I'll check with my Rhine.
>
> > Please gimme some answer ASAP.. i'm getting crazy :(
>
> Start by getting it up to 100Mbit on the old kernel and then ask
> for more help as 12Mbit/s points to other problems.
-- 
vda

[-- Attachment #2: nmeter.c --]
[-- Type: text/x-csrc, Size: 20216 bytes --]

// Based on nanotop.c from floppyfw project
// Released under GPL
// Contact me: vda@port.imtp.ilyichevsk.odessa.ua

//TODO: 
// simplify code
// /proc/locks
// /proc/stat:
// disk_io: (3,0):(22272,17897,410702,4375,54750)
// btime 1059401962

//#include <ctype.h>
#include <sys/time.h>	// gettimeofday
#include <string.h>	// strstr etc
#include <stdarg.h>	// f(...)
#include <fcntl.h>	// O_RDONLY

#define VERSION_STR "0.7"
#define DELIM_CHAR ' '

//==============
#define NL "\n"
typedef unsigned long long ullong;
typedef unsigned long ulong;

typedef ulong sample_t;

//==============
#define proc_file_size 4096

typedef struct proc_file {
    char *name;
    int gen;
    char *file;
} proc_file;

proc_file proc_stat = { "/proc/stat", -1 };
proc_file proc_net_dev = { "/proc/net/dev", -1 };
proc_file proc_meminfo = { "/proc/meminfo", -1 };
proc_file proc_diskstats = { "/proc/diskstats", -1 };
struct timeval tv;
int gen=-1;
int is26=0;

//==============
#if 0
#include <stdio.h>
void dprintf(const char *fmt, ...) {
    va_list ap;
    va_start(ap, fmt);
    vprintf(fmt, ap);
    va_end(ap);
}
#else
extern void dprintf(const char *fmt, ...) {}
#endif

//==============
char outbuf[4096];
char *cur_outbuf = outbuf;

extern inline void reset_outbuf() {
    cur_outbuf = outbuf;
}

extern inline int outbuf_count() {
    return cur_outbuf-outbuf;
}

extern inline void print_outbuf() {
    if(cur_outbuf>outbuf) {
	write(1, outbuf, cur_outbuf-outbuf);
	cur_outbuf = outbuf;
    }
}

void put(const char *s) {
    int sz = strlen(s);
    if(sz > (outbuf+sizeof(outbuf))-cur_outbuf)
	sz = (outbuf+sizeof(outbuf))-cur_outbuf;
    memcpy(cur_outbuf, s, sz);
    cur_outbuf += sz;
}

void put_c(char c) {
    if(cur_outbuf < outbuf+sizeof(outbuf))
	*cur_outbuf++ = c;
}

//==============
char* simple_itoa(char *s, int sz, unsigned long v, int pad) {
//==============
    s += sz;
    *--s = '\0';
    while (--sz > 0) {
        *--s = "0123456789"[v%10];
        pad--;
        v /= 10;
        if(!v && pad<=0) break;
    }
    return s;
}

//==============
int readfile_z(char *buf, int sz, const char* fname) {
//==============
    int fd;
    fd=open(fname,O_RDONLY);
    if(fd<0) return 1;
    sz = read(fd,buf,sz-1);
    close(fd);
    if(sz<0) {
	buf[0]='\0';
	return 1;
    }
    buf[sz]='\0';
    return 0;
}

//==============
int rdval(const char* p, const char* key, sample_t *vec, ...) {
//==============
    va_list arg_ptr;
    int indexline;
    int indexnext;

    p = strstr(p,key);
    if(!p) return 1;
	
    p += strlen(key);
    va_start(arg_ptr, vec);
    indexline = 1;
    indexnext = va_arg(arg_ptr, int);
    while(1) {
    	while(*p==' ' || *p=='\t') p++;
	if(*p=='\n' || *p=='\0') break;

        if(indexline == indexnext) { // read this value
            *vec++ = strtoul(p, NULL, 10);
            indexnext = va_arg(arg_ptr, int);
        }
    	while(*p > ' ') p++; // skip over value
        indexline++;
    }
    va_end(arg_ptr);
    return 0;
}

//==============
int rdval_diskstats(const char* p, sample_t *vec) {
//   1    2 3   4     5     6(rd)  7      8     9     10(wr) 11      12 13    14
//   3    0 hda 51292 14441 841783 926052 25717 79650 843256 3029804 0 148459 3956933
//   3    1 hda1 0 0 0 0 <- ignore if only 4 fields
//==============
    sample_t rd;
    int indexline = 0;
    vec[0] = 0;
    vec[1] = 0;
    while(1) {
        indexline++;
        while(*p==' ' || *p=='\t') p++;
        if(*p=='\0') break;
        if(*p=='\n') {
            indexline = 0;
	    p++;
            continue;
        }
        if(indexline == 6) {
            rd = strtoul(p, NULL, 10);
        } else
        if(indexline == 10) {
            vec[0] += rd;  // TODO: *sectorsize (don't know how to find out sectorsize)
            vec[1] += strtoul(p, NULL, 10);
    	    while(*p!='\n' && *p!='\0') p++;
	    continue;
        }
        while(*p > ' ') p++; // skip over value
    }
    return 0;
}

//==============
void scale(sample_t ul) {
//==============
    char buf[5];
    int index = 0;
    ul *= 10;
    if(ul>9999*10) { // do not scale if 9999 or less
	while(ul >= 10000) {
	    ul /= 1024;
	    index++;
	}
    }

    if(!index) {/* use 1234 format */
	buf[0] = " 123456789"[ul/10000];
	if(buf[0]== ' ') buf[1] = " 123456789"[ul/1000%10];
	            else buf[1] = "0123456789"[ul/1000%10];
	if(buf[1]== ' ') buf[2] = " 123456789"[ul/100%10];
                    else buf[2] = "0123456789"[ul/100%10];
	buf[3] = "0123456789"[ul/10%10];
    } else if(ul>=100) { /* use 123k format */
	if( (buf[0]= " 123456789"[ul/1000]) == ' ')
	    buf[1] = " 123456789"[ul/100%10];
	else
	    buf[1] = "0123456789"[ul/100%10];
	buf[2] = "0123456789"[ul/10%10];
	buf[3] = " kMGTEP"[index];
    } else { /* use 1.2M format */
	buf[0] = "0123456789"[ul/10];
	buf[1] = '.';
	buf[2] = "0123456789"[ul%10];
	buf[3] = " kMGTEP"[index];
    }
    buf[4] = 0;
    put(buf);
}

//==============
const char* prepare(proc_file *pf) {
    if(!pf->file) pf->file = (char*)malloc(proc_file_size);
    if(pf->gen != gen) {
	pf->gen = gen;
	readfile_z(pf->file, proc_file_size, pf->name);
    }
    return pf->file;
}

//==============
#define S_STAT(a) \
typedef struct a { \
    struct s_stat *next; \
    int (*collect)(struct a *s); \
    const char *label; \
    int width;

S_STAT(s_stat)
} s_stat;

#define MALLOC_STAT(type,var) type *var = (type*)malloc(sizeof(type))

//==============
S_STAT(cpu_stat)
    sample_t old[4];
    int bar_sz;
    char *bar;
} cpu_stat;

//==============
int collect_cpu(cpu_stat *s) {
//==============
    sample_t data[4];
    sample_t frac[4];
    sample_t all = 0;
    int norm_all = 0;
    int bar_sz = s->bar_sz;
    char *bar = s->bar;
    int i;

    if(rdval(prepare(&proc_stat), "cpu ", data, 1, 2, 3, 4))
	return 1;
    
    put_c('[');

//dprintf("data1:");
    for(i=0; i<4; i++) {
	sample_t old = s->old[i];
	if(data[i] < old) old = data[i];	//sanitize
        s->old[i] = data[i];
        all += (data[i] -= old);
//dprintf(" %lu",data[i]);
    }
//dprintf(" all %lu\n",all);

    if(all) {
//dprintf("data2:");
	for(i=0; i<4; i++) {
	    ullong t = bar_sz*(ullong)data[i];
	    norm_all += data[i] = t / all;
	    frac[i] = t % all;
//dprintf(" %lu/%lu",data[i],frac[i]);
	}
//dprintf(" norm_all %lu\n",norm_all);
    
	while(norm_all<bar_sz) {
	    sample_t max=frac[0]; int pos=0;
	    //for(i=1; i<4; i++) if(frac[i]>=max) max=frac[i], pos=i;
	    if(frac[1]>=max) max=frac[1], pos=1;
	    if(frac[2]>=max) max=frac[2], pos=2;
	    if(frac[3]>=max) max=frac[3], pos=3;
	    frac[pos]=0;	//avoid bumping same value twice
	    data[pos]++;
//dprintf("bumped %i\n",pos);
	    norm_all++;
        }
    
//dprintf("bar_sz %i\n",bar_sz);
//dprintf("sys %i\n",data[2]);
//dprintf("usr %i\n",data[0]);
//dprintf("nice %i\n",data[1]);
	memset(bar,'.',bar_sz);
	memset(bar,'S',data[2]); bar+=data[2]; //sys
	memset(bar,'U',data[0]); bar+=data[0]; //usr
	memset(bar,'N',data[1]); bar+=data[1]; //nice
    } else {
	memset(bar,'?',bar_sz);
    }
    put(s->bar);
    put_c(']');
    return 0;
}

//==============
s_stat* init_cpu(const char *param) {
//==============
    int sz;
    MALLOC_STAT(cpu_stat,s);
    s->collect = collect_cpu;
    s->label = "cpu ";
    s->width = 4;

    sz = strtol(param, NULL, 0);
    if(sz<10) sz=10;
    if(sz>1000) sz=1000;

    s->bar = (char*)malloc(sz+1);
    s->bar[sz]=0;
    s->bar_sz = sz;
    s->width = sz+2;
    return (s_stat*)s;
}

//==============
S_STAT(int_stat)
    sample_t old;
    int no;
    char numlabel[6];
} int_stat;

//==============
int collect_int(int_stat *s) {
//==============
    sample_t data[1];

    if(rdval(prepare(&proc_stat), "intr", data, s->no))
	return 1;

    sample_t old = s->old;
    if(data[0] < old) old = data[0];	//sanitize
    s->old = data[0];
    scale(data[0] - old);
    return 0;
}

//==============
s_stat* init_int(const char *param) {
//==============
    MALLOC_STAT(int_stat,s);
    s->collect = collect_int;
    s->width = 4;
    if(param[0]=='\0') {
	s->no = 1;
	s->label = "int ";
    } else {
	int n = strtoul(param, NULL, 0);
	s->no = n+2;
	s->label = s->numlabel;
	s->numlabel[0]='i';
	s->numlabel[1]='n';
	s->numlabel[2]='t';
	s->numlabel[3]=(n<=9 ? '0'+n : n+('A'-10));
	s->numlabel[4]=' ';
	s->numlabel[5]='\0';
    }
    return (s_stat*)s;
}

//==============
S_STAT(ctx_stat)
    sample_t old;
} ctx_stat;

//==============
int collect_ctx(ctx_stat *s) {
//==============
    sample_t data[1];

    if(rdval(prepare(&proc_stat), "ctxt", data, 1))
	return 1;

    sample_t old = s->old;
    if(data[0] < old) old = data[0];	//sanitize
    s->old = data[0];
    scale(data[0] - old);
    return 0;
}

//==============
s_stat* init_ctx(const char *param) {
//==============
    MALLOC_STAT(ctx_stat,s);
    s->collect = collect_ctx;
    s->label = "ctx ";
    s->width = 4;
    return (s_stat*)s;
}

//==============
S_STAT(blk_stat)
    const char* lookfor;
    sample_t old[2];
} blk_stat;

//==============
int collect_blk24(blk_stat *s) {
//==============
    sample_t data[2];
    int i;
    if(rdval(prepare(&proc_stat), s->lookfor, data, 1, 2))
    	return 1;

    for(i=0; i<2; i++) {
	sample_t old = s->old[i];
	if(data[i] < old) old = data[i];	//sanitize
	s->old[i] = data[i];
	data[i] -= old;
    }
    scale(data[0]*1024);
    put_c(' ');
    scale(data[1]*1024);
    return 0;
}

//==============
int collect_blk26(blk_stat *s) {
//==============
    sample_t data[2];
    int i;
    if(rdval_diskstats(prepare(&proc_diskstats), data))
	return 1;

    for(i=0; i<2; i++) {
	sample_t old = s->old[i];
	if(data[i] < old) old = data[i];	//sanitize
	s->old[i] = data[i];
	data[i] -= old;
    }
    scale(data[0]*512);
    put_c(' ');
    scale(data[1]*512);
    return 0;
}

//==============
int collect_blk(blk_stat *s) {
//==============
    if(is26) return collect_blk26(s);
    return collect_blk24(s);
}

//==============
s_stat* init_blk(const char *param) {
//==============
    MALLOC_STAT(blk_stat,s);
    s->collect = collect_blk;
    if(param[0]=='s') {
	s->label = "sio ";
	s->lookfor = "swap";
    } else {
	s->label = "bio ";
	s->lookfor = "page";
    }
    s->width = 9;
    return (s_stat*)s;
}

//==============
S_STAT(fork_stat)
    sample_t old;
} fork_stat;

//==============
int collect_fork(fork_stat *s) {
//==============
    sample_t data[1];

    if(rdval(prepare(&proc_stat), "processes", data, 1))
	return 1;

    sample_t old = s->old;
    if(data[0] < old) old = data[0];	//sanitize
    s->old = data[0];
    scale(data[0] - old);
    return 0;
}

//==============
s_stat* init_fork(const char *param) {
//==============
    MALLOC_STAT(fork_stat,s);
    s->collect = collect_fork;
    s->label = "fork";  // no trailing space: there usually <1000 forks,
    s->width = 4;       // we trade usual "fork    3" for rare "fork1234"
    return (s_stat*)s;
}

//==============
S_STAT(if_stat)
    sample_t old[4];
    const char *device;
    char *device_colon;
} if_stat;

//==============
int collect_if(if_stat *s) {
//==============
    sample_t data[4];
    int i;

    if(rdval(prepare(&proc_net_dev), s->device_colon, data, 1, 3, 9, 11))
	return 1;

    //dprintf("data1:");
    for(i=0; i<4; i++) {
	sample_t old = s->old[i];
	if(data[i] < old) old = data[i];	//sanitize
        s->old[i] = data[i];
        data[i] -= old;
	//dprintf(" %lu",data[i]);
    }
    //dprintf("\n");
    
    put_c(data[1] ? '*' : ' ');
    scale(data[0]);
    put_c(data[3] ? '*' : ' ');
    scale(data[2]);
    return 0;
}

//==============
s_stat* init_if(const char *device) {
//==============
    MALLOC_STAT(if_stat,s);
    s->collect = collect_if;
    s->label = device;
    s->width = 10;
    
    s->device = device;
    s->device_colon = (char*)malloc(strlen(device)+2);
    strcpy(s->device_colon,device);
    strcat(s->device_colon,":");
    return (s_stat*)s;
}

//==============
S_STAT(mem_stat)
    char opt;
} mem_stat;

//==============
int collect_mem(mem_stat *s) {
//==============
//        total:    used:    free:  shared: buffers:  cached:
//Mem:  29306880 21946368  7360512        0  2101248 11956224
//Swap: 100655104 10207232 90447872
//MemTotal:        28620 kB
//MemFree:          7188 kB
//MemShared:           0 kB  <-- ?
//Buffers:          2052 kB
//Cached:           9080 kB
//SwapCached:       2596 kB  <-- ?

    // Not available in 2.6:
    //if(rdval(prepare(&proc_meminfo), "Mem:", data, 1, 2, 5, 6))
    //    return 1;
    sample_t m_total;
    sample_t m_free;
    sample_t m_bufs;
    sample_t m_cached;
    if(rdval(prepare(&proc_meminfo), "MemTotal:", &m_total , 1)) return 1;
    if(rdval(prepare(&proc_meminfo), "MemFree:",  &m_free  , 1)) return 1;
    if(rdval(prepare(&proc_meminfo), "Buffers:",  &m_bufs  , 1)) return 1;
    if(rdval(prepare(&proc_meminfo), "Cached:",   &m_cached, 1)) return 1;
    switch(s->opt) {
    case 'f':
        scale((m_free + m_bufs + m_cached)<<10); break;
    case 't':
        scale(m_total<<10); break;
    default:
        scale((m_total - m_free - m_bufs - m_cached)<<10); break;
    }
    return 0;
}

//==============
s_stat* init_mem(const char *param) {
//==============
    MALLOC_STAT(mem_stat,s);
    s->collect = collect_mem;
    s->width = 4;
    s->opt=param[0];
    switch(param[0]) {
    case 'f':
	s->label = "free "; break;
    case 't':
	s->label = "tot "; break;
    default:
	s->label = "mem "; break;
    }
    return (s_stat*)s;
}

//==============
S_STAT(swp_stat)
} swp_stat;

//==============
int collect_swp(swp_stat *s) {
//==============
    sample_t data[1];
    if(rdval(prepare(&proc_meminfo), "Swap:", data, 2))
	return 1;
	
    scale(data[0]);
    return 0;
}

//==============
s_stat* init_swp(const char *param) {
//==============
    MALLOC_STAT(swp_stat,s);
    s->collect = collect_swp;
    s->label = "swp ";
    s->width = 4;
    return (s_stat*)s;
}

//==============
S_STAT(fd_stat)
} fd_stat;

//==============
int collect_fd(fd_stat *s) {
//==============
    char file[4096];
    sample_t data[2];

    readfile_z(file, sizeof(file), "/proc/sys/fs/file-nr");
    if(rdval(file, "", data, 1, 2))
	return 1;

    scale(data[0]-data[1]);
    return 0;
}

//==============
s_stat* init_fd(const char *param) {
//==============
    MALLOC_STAT(fd_stat,s);
    s->collect = collect_fd;
    s->label = "fd ";
    s->width = 4;
    return (s_stat*)s;
}

//==============
S_STAT(time_stat)
    int prec;
    int scale;
} time_stat;

//==============
int collect_time(time_stat *s) {
//==============
    char buf[16];	// 12:34:56.123456<eol>
			// 1234567890123456
    simple_itoa(buf, 3, tv.tv_sec/(60*60)%24, 2);
    buf[2] = ':';
    simple_itoa(buf+3, 3, tv.tv_sec/60%60, 2);
    buf[5] = ':';
    simple_itoa(buf+6, 3, tv.tv_sec%60, 2);
    
    if(s->prec) {
	buf[8] = '.';
	//simple_itoa(buf+9, s->prec+1, (tv.tv_usec + s->scale/2) / s->scale, s->prec);
	// (fixme: round up seconds too!)
	// so... rounding omitted! just use more prec if you need it! ;)
	simple_itoa(buf+9, s->prec+1, tv.tv_usec / s->scale, s->prec);
    }
    put(buf);
    return 0;
}

//==============
s_stat* init_time(const char *param) {
//==============
    int prec;
    MALLOC_STAT(time_stat,s);
    s->collect = collect_time;
    s->label = "";
    prec = param[0]-'0';
    if(prec<0) prec = 0;
    else if(prec>6) prec = 6;
    s->width = 8+prec + (prec!=0);
    s->prec = prec;
    s->scale = 1;
    while(prec++ < 6)
	s->scale *= 10;
    return (s_stat*)s;
}

//==============
char *header;
//==============
void build_n_put_hdr(s_stat *s) {
//==============
    while(s) {
	int l = 0;
        if(s->label[0]!=' ') {
    	    put(s->label);
	    l = strlen(s->label);
	}
	while(l <= s->width) {
	    put_c(' ');	
	    l++;
	}
        s = s->next;
    }
    put_c('\n');

    header = (char*)malloc(outbuf_count()+1);
    memcpy(header, outbuf, outbuf_count());
    header[outbuf_count()] = '\0';
    //print_outbuf();
}

//==============
void put_hdr(s_stat *s) {
//==============
    if(!header) build_n_put_hdr(s);
    else {
	put(header);
	//print_outbuf();
    }
}

//==============
void run_once(s_stat *s, int without_headers) {
//==============
    gen++;
    int first = 1;
    while(s) {
	if(s->label[0]!=' ') {		// "[prev ][LABEL]data
	    if(!first) put_c(DELIM_CHAR);
    	    if(!without_headers) put(s->label);
	} else {			// "prevLABELdata
	    put(s->label+1);
	}
        if(s->collect(s)) {
	    int w = s->width;
	    while(w-- > 0)
		put_c('?');
	}
        s = s->next;
	first = 0;
    }
}

//==============
typedef s_stat* init_func(const char *param);

const char options[] = "ncmsfixptb";
init_func* init_functions[] = {
    init_if,  
    init_cpu, 
    init_mem, 
    init_swp, 
    init_fd,  
    init_int, 
    init_ctx, 
    init_fork,
    init_time,
    init_blk,
};

//==============
int main(int argc, char* argv[]) {
//==============
    struct timezone tz;
    s_stat *first = 0;
    s_stat *last = 0;
    s_stat *s;
    int delta = 1000000;
    int deltanz = 1000000;
    int print_headers = 0;
    char *final_str = "\n";
    char *p;
    int fd;
    int i;
    
    if(argc==1) {
	put(
	"Nanometer " VERSION_STR " allows you to monitor your system in real time" NL
	NL
	"Options:" NL
	"c[N]	monitor CPU. N - bar size, default 10" NL
	"nIFACE	monitor network interface IFACE" NL
	"m[f/t]	monitor allocated/free/total memory" NL
	"s	monitor allocated swap" NL
	"f	monitor number of used filedescriptors" NL
	"i[NN]	monitor total/specific IRQ rate" NL
	"x	monitor context switch rate" NL
	"p	monitor process creation rate" NL
	"b[s]	monitor block io (swap io)" NL
	"t[N]	show time (with N decimal points)" NL
	"d[N]	milliseconds between updates. Default 1000" NL
	"h[N]	print headers above numbers (each N lines, default once)" NL
	"lLABEL	specify label for previous item" NL
	"LLABEL	same + label will be printed without surrounding blanks" NL
	"r	print <cr> instead of <lf> at EOL. Try it ;)" NL
	);
	print_outbuf();
	return 0;
    }

    fd = open("/proc/version",O_RDONLY);
    if(fd>=0) {
	char buf[32];
	if(0<read(fd,buf,sizeof(buf)))
	    is26 = (strstr(buf,"Linux version 2.6.")!=NULL);
	close(fd);
    }
    for(i=1; i<argc; i++) {
	p = strchr(options,argv[i][0]);
	if(p) {
	    s = init_functions[p-options](argv[i]+1);
	    if(s) {
		s->next = 0;
		if(!first)
		    first = s;
		else
		    last->next = s;
		last = s;
	    }
	}

// You have to see it... gcc 3.2 coded switch() as 40 element jump table
// OH NO! >>>:^O
/*
#define SW(a) switch(a) {
#define ENDSW }
#define CASE(a,b) case (b): {
#define ENDCASE }
*/
#define SW(a) do {
#define ENDSW } while(0);
#define CASE(a,b) if((a)==(b)) {
#define ENDCASE }
	SW(argv[i][0])
	CASE(argv[i][0],'r')
	    final_str = "\r";
	    break;
	ENDCASE
	CASE(argv[i][0],'d')
	    delta = strtol(argv[i]+1, NULL, 0)*1000;
	    deltanz = delta>0? delta : 1;
	    break;
	ENDCASE
	CASE(argv[i][0],'h')
	    if(argv[i][1]=='\0')
		print_headers = -1;
	    else
		print_headers = strtol(argv[i]+1, NULL, 0);
	    break;
	ENDCASE
	CASE(argv[i][0],'l')
	    if(last)
		last->label=argv[i]+1;
	    break;
	ENDCASE
	CASE(argv[i][0],'L')
	    if(last) {
		argv[i][0]=' ';
		last->label=argv[i];
	    }
	    break;
	ENDCASE
	ENDSW
    }
	
    if(print_headers == -1) {
	build_n_put_hdr(first);
	print_outbuf();
    }
    run_once(first, print_headers);
    reset_outbuf();
    if(delta>=0) {
	//gettimeofday(&tv,0);
	gettimeofday(&tv,&tz); //
	usleep(delta>1000000 ? 1000000 : delta-tv.tv_usec%deltanz);
    }
    while(1) {
	gettimeofday(&tv,&tz);
        tv.tv_sec -= tz.tz_minuteswest*60;

	if(print_headers > 0 && gen%print_headers == 0)
	    put_hdr(first);
	run_once(first, print_headers);
	put(final_str);
	print_outbuf();

	// Negative delta -> no usleep at all
	// This will hog the CPU but you can have REALLY GOOD
	// time resolution ;)
	// TODO: detect and avoid useless updates
	// (like: nothing happens except time)
        if(delta>=0) {
	    int rem = delta - ((ullong)tv.tv_sec*1000000+tv.tv_usec)%deltanz;
	    // Sometimes kernel wakes us up just a tiny bit earlier than asked
	    // Do not go to very short sleep in this case
	    if(rem < delta/128) {
		rem += delta;
	    }
	    usleep(rem);
	}
    }

    return 0;
}

[-- Attachment #3: nmeter --]
[-- Type: application/x-executable, Size: 8744 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Abysmal network performance since 2.4.25 !!!!!...
  2004-03-12  1:14 Abysmal network performance since 2.4.25 !!!!! psycosonic
  2004-03-12  2:06 ` Stefan Smietanowski
  2004-03-12  6:31 ` Tom Felker
@ 2004-03-12 10:32 ` Felipe Alfaro Solana
  2 siblings, 0 replies; 5+ messages in thread
From: Felipe Alfaro Solana @ 2004-03-12 10:32 UTC (permalink / raw)
  To: psycosonic; +Cc: linux-net, linux-kernel

On Fri, 2004-03-12 at 02:14, psycosonic wrote:
> Hey.
> 
> I'm having some problems since i updated from kernel 2.4.24 to 2.4.25 .. it
> seems that 2.4.25 has some real performance problems.
> The problem is that i can't get the NIC's to work fine.. i don't know why, 
> i've already used several kernel configurations..
> i've also tried with patch2.4.25pre4 and... nothin' ...even used another 
> switch 10/100mbit.. not even with patch-2.4.26pre2 it goes normal,
> I've compiled the kernel in another computer, with too many different 
> configurations, different hardware.. etc.. and the result is the same.
> Some friends of mine are having the same problem.
> Well.. with kernel 2.4.24 i usually had a max speed of 12Mb/s .. now , with 
> 2.4.25 it only goes to 2,2Mb/s MAX speed.  :(
> I've tried to use vsftpd, proftpd, apache 1.3.x, apache 2.x, samba.. etc 
> etc.. with kernel 2.4.24 works pretty fine... but since 2.4.25.. wow..
> Not even with the patches 2.4.25rcX it worked.. and.. i don't know what more 
> to do.

Suggestion: take a look at the changelog for 2.4.25 and see what changes
could have effect on your network performance.

For example, I had problems with my 3Com card in 2.6.4-mm1, but no on
2.6.3-mm1, so looking at the changelog I saw changes made into 3c59x.c.
Reverting one of those changes fixed my problem.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-03-12 10:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-12  1:14 Abysmal network performance since 2.4.25 !!!!! psycosonic
2004-03-12  2:06 ` Stefan Smietanowski
2004-03-12  7:54   ` Denis Vlasenko
2004-03-12  6:31 ` Tom Felker
2004-03-12 10:32 ` Felipe Alfaro Solana

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox