gigabit Ethernet with slow PowerPC VME processor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear linux-net,

I have recently taken over the development of the data acquisition system
for a physics experiment.  The first layer of this system needs to read data
from custom electronics across a VME backplane at about 15 MB/s and forward
it to a back-end machine for online analysis and storage. 

My predecessor invested lots of $$$ in a proprietary interconnection scheme
that has proven to be extremely unstable in actual use.  I am trying to replace 
it with gigabit Ethernet, but I am having trouble getting acceptable 
performance.

The front-end processors are Motorola MVME 2600 boards, which have 200 MHz 
PowerPC 604e CPUs.  I have equipped them with SBS Technologies PMC-Gigabit-ST3
daughtercards, which use the Intel 82545EM chipset.  The PMC (PCI Mezzanine
Connector--just PCI in a different form factor) slot is 66 MHz, 64-bit capable.
I am running a 2.4.21-pre6 kernel from the linuxppc_2_4_devel BK tree,
which includes version 4.4.19-k2 of the e1000 driver.  The back-end server
is a 1.7 GHz Pentium 4 with an Intel PRO/1000 T Server Adapter, and they are
connected through a D-Link DGS-1008T gigabit switch.

As measured with netperf and/or ttcp, I get between 80 and 90 Mbps from 
the front-end to the back-end server, which is a 1.7 GHz Pentium 4,
even with the socket buffer size and TCP window size set to 256KB.
In other words, I might as well have used the built-in 100BaseT port.
The same benchmarks give around 350 Mbps between the server and another
gigabit-equipped PC connected through the same switch, so I don't think
my test is intrinsically flawed.

While performing these benchmarks, the CPU utilization of netperf on
the front-end is between 90% and 100%, suggesting that the process of 
sending the data is CPU-bound.  I suppose that it might be occupied with
computing the TCP checksum.  The documentation for the 82545EM chipset
claims that it supports transmit checksum offloading, but the Linux e1000
driver does not seem to use this feature, only receive checksum offloading.

Is a 200 MHz PowerPC processor simply not adequate to drive a gigabit link 
faster than 80 Mbps, or do I have any options left to try?  In our controlled
environment, I could possibly consider hacking the kernel on both ends to
disable checksum computation and verification, but I would certainly prefer
not to have to resort to such extreme measures, and I am in any event not
yet certain that the overhead comes from the checksum.  I don't need full 
gigabit speed: 150 Mbps would be adequate.

Thanks in advance to the networking gurus for their advice,

-- Fred

-- Fred Gray / Visiting Postdoctoral Researcher                         --
-- Department of Physics / University of California, Berkeley           --
-- fegray@socrates.berkeley.edu / phone 510-642-4057 / fax 510-642-9811 --
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux