network performance data, linux 2.4 on moto 8240 @ 266MHz

hi,

a few months ago i ran some rudimentary network performance tests on a popular midrange motorola processor, the mpc8240 running at 266MHz. i figured the data i collected may be useful in some way to the embedded linux crowd, so here it is...

regards, jim

ps yes, the throughput files are MS excel format, smartbits default. :^/

pps i have no relationship with motorola, intel, spirent, nor linus torvalds. at the time i wrote the summary below my team was designing a controller for a piece of telecommunications gear, and the software folks were interested to know just how much data could be passed by the proposed hardware. below, minor edits were made to my original summary to cull out some proprietary information, and to clarify a few items.

ppps note that if you are starting a new design you should probably look at the "newer" 8245 vs the "older" 8240.

----------- motorola 8240/266MHz network performance test results

i spent a few hours running some network performance tests on a motorola 8240 processor mezzanine board mounted in a motorola "sandpoint" evaluation platform. note that these tests have everything to do with network routing performance and nothing to do with linux userland application performance.

test set up:

the sandpoint is a modular processor eval platform from motorola; on it one can mount a variety of processor boards -- in this case i used a motorola Unity 8240 processor mezzanine with clock speed of 266MHz and 64MB of RAM. the 8240 itself has a 603e powerpc core and an integral 32bit PCI bus. more info on the 8240 can be found at the motorola web page:

formatting link

in short, the sandpoint + Unity 8240 had qty 2 intel 82559 PCI-based ethernet cards in it, and it was used as a linux-based router. that is, the two ethernet interfaces were assigned different subnets, and kernel routing was enabled. no userland applications (other than the standard command shell [busybox/bash]) were running.

the test equipment was a spirent/smartbits smb200 chassis running routing test software. basically the smartbits works by selecting an IP packet size [64...1500] and pushing packets at the target using a starting point load (say 50% of max, or in the case of 100Mbps ethernet that would be about 12500 packets/sec when the packet size is

1000 bytes). the smartbits ideally will receive back all of the routed packets from the other ethernet interface. if it does not, it starts a simple binary search at a lower rate to determine the highest rate at which the router (i.e. sandpoint + Unity 8240) can forward all packets. similarly, if the initial test passes, a binary search upward is started. once the maximum rate for a given packet size is found, the smartbits selects the next packet size and restarts the tests.

note that these tests were performed both in unidirectional and bidirectional modes.

more details (i.e., kernel startup output) of the overall linux configuration are here:

formatting link

results:

FIRST TEST:

for the initial tests a "stock" linux 2.4 kernel was built, with the standard eepro100 ethernet driver. results were as shown in the THROUGHPUT TAB at the following link:

formatting link

in general, packets/sec performance max'd out at about 9700 pps, and throughput scaled linearly with packet size. at an typical TCP size of 320 bytes, the 8240 was routing some 24Mb/s of data (~8800pps). the aggregate data rate was not dissimilar in the unidirectional and bidirectional tests. thus it appeared that neither CPU nor PCI bandwidth were not the bottlenecks, but perhaps kernel route look-up and forwarding speed.

data from literature on the internet indicated that others had in fact measured somewhat higher pps performance, ostensibly by various linux kernel tweaks. one such is the "NETFAST" buildtime option in the kernel config. this was employed for the following test:

formatting link

as can be seen, performance at all packet sizes increased by about 10 to 15%; at 320 bytes, the 8240 was routing ~28.5Mb/s (~10500pps). this was more in line with published (albeit informal) numbers. there are some disadvantages to the NETFAST-tweaked kernel, however.

it became clear from investigation into where all the CPU cycles were going that the processor was completely interrupt bound. in fact, from the eepro100 driver source and documentation it could be seen that the driver generates an interrupt for every packet that is received. or, put another way, at 10000 pps the 8240 processor has to deal with an interrupt every 100us.

further investigation into improving network performance led to some information from intel describing "hardware assist" features which are resident on their 82559 ethernet device. for example, the 82559 can coalesce multiple packets and then subsequently generate a single interrupt. interestingly, the standard issue linux ethernet drivers -- cleary in an effort to maintain full backwards compatibility with existing (legacy) intel ethernet chipsets -- do not employ code to take advantage of the hardware assist features found on the more modern intel devices.

however, intel has contributed a driver, "e100", to the linux effort which does in fact take advantage of the features of the newer intel chipsets, including the 82559. so i then rebuilt the sandpoint kernel with the intel e100 driver in place of the stock eepro100 driver. more info is available here:

ftp://aiedownload.intel.com/df-support/2896/ENG/README

formatting link

SECOND TEST:

with the e100 driver in place, the following uni- and bidirectional results were noted (again, see the THROUGHPUT TAB):

formatting link
formatting link

as shown in the results, the very small packet (64 byte) packet forwarding rate increased by approximately 20%, and rates for larger packet sizes dramatically increased by up to 100%. again at 320 bytes, the 8240 was now routing ~52Mb/s (~19200pps). at around 900 bytes and above, the 8240 was able to saturate the 100Mbps ethernet link at 100Mb/s (i.e. 12.5MB/s) when forwarding unidirectionally. when under birectional load, the 8240 could forward nearly 130Mb/s (16.25MB/s) of traffic.

summary:

1) the motorola 8240 at 266MHz can forward approximately 9K-10K pps using the stock linux eepro100 driver.

2) the intel "e100" driver gives markedly better performance with the

82559 chipset as it makes use of the hardware assist features. the motorola 8240 at 266MHz can forward at up to 21K pps using the intel e100 driver. at packet sizes >64B the forwarding rate was doubled.

3) the 8240 at 266Mhz can forward at full rate a unidirectional 100Mb/s link with packet sizes larger than ~900B. at 320B, the 8240 can forward bidirectional traffic at 19300 pps, or an aggregate throughput of 52Mb/s.

-----------

Reply to
google
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.