2003-07-28 22:29:07

by J.A. Magallon

[permalink] [raw]
Subject: e1000 performance

Hi.

I think I am getting weird performace with e1000 in 2.4.22-pre.
NetPipe gives this numbers for e1000:

Node receiver...
Master transmitter...
Latency: 0.000040
Now starting main loop
0: 4096 bytes 7 times --> 264.18 Mbps in 0.000118 sec
1: 8192 bytes 7 times --> 397.55 Mbps in 0.000157 sec
2: 12288 bytes 795 times --> 475.30 Mbps in 0.000197 sec
3: 16384 bytes 845 times --> 524.12 Mbps in 0.000238 sec
4: 20480 bytes 786 times --> 566.84 Mbps in 0.000276 sec
5: 24576 bytes 725 times --> 586.49 Mbps in 0.000320 sec
6: 28672 bytes 651 times --> 605.81 Mbps in 0.000361 sec
7: 32768 bytes 593 times --> 618.25 Mbps in 0.000404 sec
8: 36864 bytes 540 times --> 579.82 Mbps in 0.000485 sec
9: 40960 bytes 458 times --> 579.72 Mbps in 0.000539 sec
10: 45056 bytes 417 times --> 565.82 Mbps in 0.000608 sec
11: 49152 bytes 374 times --> 569.07 Mbps in 0.000659 sec
12: 53248 bytes 347 times --> 576.62 Mbps in 0.000705 sec
13: 57344 bytes 327 times --> 584.06 Mbps in 0.000749 sec
14: 61440 bytes 309 times --> 587.31 Mbps in 0.000798 sec
15: 65536 bytes 292 times --> 592.25 Mbps in 0.000844 sec
16: 69632 bytes 277 times --> 577.42 Mbps in 0.000920 sec
17: 73728 bytes 255 times --> 566.39 Mbps in 0.000993 sec
18: 77824 bytes 237 times -->

Hardware:
03:01.0 Ethernet controller: Intel Corp. 82543GC Gigabit Ethernet Controller (Copper) (rev 02)

Kernel is 2.4.22-pre8, patch for MMX/SSE checksums applied:
Measuring network checksumming speed
basic : 768.000 MB/sec
simple : 665.600 MB/sec
func 3Dnow! skipped: not supported by CPU
func AMD-MMX skipped: not supported by CPU
SSE1+ : 819.200 MB/sec
csum: using csum function: SSE1+
basic : 537.600 MB/sec
simple : 537.600 MB/sec
func AMD-MMX skipped: not supported by CPU
SSE1+ : 588.800 MB/sec
SSE1 : 691.200 MB/sec
csum: using csum_copy function: SSE1

No modules parameters for e1000 (default behaviour), no mtu changes, nothing.

Any ideas to up performance ?

TIA

--
J.A. Magallon <[email protected]> \ Software is like sex:
werewolf.able.es \ It's better when it's free
Mandrake Linux release 9.2 (Cooker) for i586
Linux 2.4.22-pre8-jam1m (gcc 3.3.1 (Mandrake Linux 9.2 3.3.1-0.6mdk))


2003-07-30 06:52:13

by Feldman, Scott

[permalink] [raw]
Subject: RE: e1000 performance

> I think I am getting weird performace with e1000 in 2.4.22-pre.

Is this behavior new to 2.4.22-pre?

> Hardware:
> 03:01.0 Ethernet controller: Intel Corp. 82543GC Gigabit
> Ethernet Controller (Copper) (rev 02)

82543 = PCI, not PCI-X. Are you in a 64-bit slot? Get ethtool 1.8 and
run ethtool -d eth<x> to see PCI type/width/speed.

-scott

2003-07-30 22:30:08

by J.A. Magallon

[permalink] [raw]
Subject: Re: e1000 performance


On 07.30, "Feldman, Scott" wrote:
> > I think I am getting weird performace with e1000 in 2.4.22-pre.
>
> Is this behavior new to 2.4.22-pre?
>
> > Hardware:
> > 03:01.0 Ethernet controller: Intel Corp. 82543GC Gigabit
> > Ethernet Controller (Copper) (rev 02)
>
> 82543 = PCI, not PCI-X. Are you in a 64-bit slot? Get ethtool 1.8 and
> run ethtool -d eth<x> to see PCI type/width/speed.
>

Here are the results:
annwn:~# ethtool -d eth2
MAC Registers
-------------
0x00000: CTRL (Device control register) 0x0A501A49
Duplex: full
Endian mode (buffers): little
Link reset: reset
Set link up: 1
Invert Loss-Of-Signal: no
Receive flow control: enabled
Transmit flow control: disabled
VLAN mode: disabled
Auto speed detect: disabled
Speed select: 1000Mb/s
Force speed: yes
Force duplex: yes
0x00008: STATUS (Device status register) 0x00001B8F
Duplex: full
Link up: link config
TBI mode: disabled
Link speed: 1000Mb/s
0x00100: RCTL (Receive control register) 0x00008002
Receiver: enabled
Store bad packets: disabled
Unicast promiscuous: disabled
Multicast promiscuous: disabled
Long packet: disabled
Descriptor minimum threshold size: 1/2
Broadcast accept mode: accept
VLAN filter: disabled
Cononical form indicator: disabled
Discard pause frames: filtered
Pass MAC control frames: don't pass
Receive buffer size: 2048
0x02808: RDLEN (Receive desc length) 0x00001000
0x02810: RDH (Receive desc head) 0x0000009B
0x02818: RDT (Receive desc tail) 0x00000090
0x02820: RDTR (Receive delay timer) 0x00000000
0x00400: TCTL (Transmit ctrl register) 0x0004010A
Transmitter: enabled
Pad short packets: enabled
Software XOFF Transmission: disabled
Re-transmit on late collision: disabled
0x03808: TDLEN (Transmit desc length) 0x00001000
0x03810: TDH (Transmit desc head) 0x00000076
0x03818: TDT (Transmit desc tail) 0x00000076
0x03820: TIDV (Transmit delay timer) 0x00000040

More info:

annwn:~# ethtool -i eth2
driver: e1000
version: 5.1.13-k1
firmware-version: N/A
bus-info: 03:01.0
annwn:~# ethtool -S eth2
NIC statistics:
rx_packets: 12523
tx_packets: 6559
rx_bytes: 1828772
tx_bytes: 1434954
rx_errors: 0
tx_errors: 0
rx_dropped: 0
tx_dropped: 0
multicast: 0
collisions: 0
rx_length_errors: 0
rx_over_errors: 0
rx_crc_errors: 0
rx_frame_errors: 0
rx_fifo_errors: 0
rx_missed_errors: 0
tx_aborted_errors: 0
tx_carrier_errors: 6559
tx_fifo_errors: 0
tx_heartbeat_errors: 0
tx_window_errors: 0
tx_abort_late_coll: 0
tx_deferred_ok: 0
tx_single_coll_ok: 0
tx_multi_coll_ok: 0
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_align_errors: 0
tx_tcp_seg_good: 0
tx_tcp_seg_failed: 0
rx_flow_control_xon: 0
rx_flow_control_xoff: 0
tx_flow_control_xon: 0
tx_flow_control_xoff: 0
rx_csum_offload_good: 12506
rx_csum_offload_errors: 0


--
J.A. Magallon <[email protected]> \ Software is like
sex:
werewolf.able.es \ It's better when it's
free
Mandrake Linux release 9.2 (Cooker) for i586
Linux 2.4.22-pre9-jam1m (gcc 3.3.1 (Mandrake Linux 9.2 3.3.1-0.7mdk))

2003-07-30 22:55:20

by Feldman, Scott

[permalink] [raw]
Subject: RE: e1000 performance

> I think I am getting weird performace with e1000 in 2.4.22-pre.

Back to your original note: you say it's weird; what's your expectation?

> 0x00008: STATUS (Device status register) 0x00001B8F

You're running PCI 64-bit/66Mhz. (ethtool 1.8 will tell you that by
decoding the STATUS bits ;-).

I thought maybe you were running at 32/33.

-scott